From: Costin Lupu Date: Sun, 13 Oct 2019 13:16:55 +0000 (+0300) Subject: pthread.h: Convert pthread_t to unsigned long X-Git-Tag: RELEASE-0.4~11 X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=5d25c1d197ed8a165097cd53605612f81138328c;p=unikraft%2Flibs%2Fpthread-embedded.git pthread.h: Convert pthread_t to unsigned long The POSIX standard outlines that pthread_t is an opaque data type and no assumption should be made about it. However, we observed that libraries and applications assume frequently that pthread_t is a pointer or other numerical data type and use it to identify the corresponding threads. pthread-embedded makes the strange decision to define pthread_t as structure, a decision that, although compliant with POSIX standards, makes the porting process a bit challenging. Therefore we introduce a conversion function which simply returns the first encapsulated unsigned long value in the structure which actually points to the underlying thread object. Signed-off-by: Costin Lupu Reviewed-by: Felipe Huici --- diff --git a/include/pthread.h b/include/pthread.h index c1ebcea..a71fe34 100644 --- a/include/pthread.h +++ b/include/pthread.h @@ -29,6 +29,15 @@ extern "C" { /* The C code in pthread.h is not guarded for C++ */ #include_next +static inline unsigned long +pthread_to_unsigned_long(pthread_t *t) +{ + unsigned long *_t; + + _t = (unsigned long *) t; + return *_t; +} + int pthread_atfork(void (*prepare)(void), void (*parent)(void), void (*child)(void));