예제 #1
0
/* See the comments in dynamic_annotations.h */
int RunningOnValgrind(void) {
  static volatile int running_on_valgrind = -1;
  int local_running_on_valgrind = running_on_valgrind;
  /* C doesn't have thread-safe initialization of statics, and we
     don't want to depend on pthread_once here, so hack it. */
  ANNOTATE_BENIGN_RACE(&running_on_valgrind, "safe hack");
  if (local_running_on_valgrind == -1)
    running_on_valgrind = local_running_on_valgrind = GetRunningOnValgrind();
  return local_running_on_valgrind;
}
예제 #2
0
static CIPHER_CTX cphGetPool(rpmioPool pool)
{
    CIPHER_CTX cph;

    if (_cphPool == NULL) {
ANNOTATE_BENIGN_RACE(&_cphPool, "");
	_cphPool = rpmioNewPool("cph", sizeof(*cph), -1, _cph_debug,
			NULL, NULL, cphFini);
	pool = _cphPool;
    }
    cph = (CIPHER_CTX) rpmioGetPool(pool, sizeof(*cph));
    memset(((char *)cph)+sizeof(cph->_item), 0, sizeof(*cph)-sizeof(cph->_item));
    return cph;
}
예제 #3
0
/* See the comments in dynamic_annotations.h */
double ValgrindSlowdown(void) {
  /* Same initialization hack as in RunningOnValgrind(). */
  static volatile double slowdown = 0.0;
  double local_slowdown = slowdown;
  ANNOTATE_BENIGN_RACE(&slowdown, "safe hack");
  if (RunningOnValgrind() == 0) {
    return 1.0;
  }
  if (local_slowdown == 0.0) {
    char *env = getenv("VALGRIND_SLOWDOWN");
    slowdown = local_slowdown = env ? atof(env) : 50.0;
  }
  return local_slowdown;
}