Question about OpenSSL id_function() and pthreads

Craig Rodrigues rodrigc at attbi.com
Wed May 28 16:51:19 PDT 2003


Hi,

I previously asked this question on freebsd-security@ and
freebsd-current@ :

http://docs.freebsd.org/cgi/getmsg.cgi?fetch=63674+0+archive/2003/freebsd-security/20030302.freebsd-security


Let me try again, now that there is a freebsd-threads mailing list.


On the following OpenSSL web page:
http://www.openssl.org/docs/crypto/threads.html

"void CRYPTO_set_id_callback(unsigned long (*id_function)(void));

id_function(void) is a function that returns a thread ID. 
It is not needed on Windows nor on platforms where getpid() returns 
a different ID for each thread (most notably Linux)."


I have some third party C++ code which tries to implements this function:

tatic unsigned long
idFunction()
{
#ifdef _WIN32
    return static_cast<unsigned long>(GetCurrentThreadId());
#else
    return static_cast<unsigned long>(pthread_self());
#endif
}


This code does not compile on FreeBSD-CURRENT:

OpenSSLPluginI.cpp: In function `long unsigned int idFunction()':
OpenSSLPluginI.cpp:151: invalid static_cast from type `pthread*' to type `long 
   unsigned int'


How can I implement this function properly on FreeBSD?

Thanks.
-- 
Craig Rodrigues        
http://home.attbi.com/~rodrigc
rodrigc at attbi.com


More information about the freebsd-threads mailing list