If you're doing multi-threaded builds with GCC, the following performance hack
can help a great deal.
#ifdef _GNU_SOURCE
int gnu_builtin_sync(int *pointer, int amount, int type, const char *file, int
line)
{
int ret;
if (amount > 0)
ret = __sync_add_and_fetch(pointer, amount);
else if (amount < 0)
{
int diff = abs(amount);
ret = __sync_sub_and_fetch(pointer, diff);
}
else
ret = *pointer;
return ret;
}
#endif
Then when you set up your locking, do this:
CRYPTO_set_add_lock_callback(gnu_builtin_sync);
--
Principal Security Engineer
Akamai Technologies, Cambridge MA
IM: [email protected]<mailto:[email protected]> Twitter: RichSalz