|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Minios-devel] [UNIKRAFT/PTHREAD-EMBEDDED PATCH] 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, it 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 <costin.lupu@xxxxxxxxx>
---
include/pthread.h | 9 +++++++++
1 file changed, 9 insertions(+)
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 <pthread.h>
+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));
--
2.20.1
_______________________________________________
Minios-devel mailing list
Minios-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/minios-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |