This patch makes it possible to use the New POSIX Thread Library on Linux >= 2.6 and glibc >= 2.3. It also works on linux 2.4. I backported it from GCC 3.4. I omitted irrelevant parts of this patch to keep it minimal. -- Ludovic Brenta. diff -u -u -r1.5 -r1.6 --- ada/5iosinte.ads 24 Apr 2003 17:53:51 -0000 1.5 +++ ada/5iosinte.ads 1 May 2003 14:14:35 -0000 1.6 @@ -443,11 +448,8 @@ private - type sigset_t is array (0 .. 31) of unsigned_long; + type sigset_t is array (0 .. 127) of unsigned_char; pragma Convention (C, sigset_t); - for sigset_t'Size use 1024; - -- This is for GNU libc version 2 but should be backward compatible with - -- other libc where sigset_t is smaller. type pid_t is new int; @@ -476,7 +478,7 @@ stackaddr : System.Address; stacksize : size_t; end record; - pragma Convention (C_Pass_By_Copy, pthread_attr_t); + pragma Convention (C, pthread_attr_t); type pthread_condattr_t is record dummy : int; @@ -490,25 +492,22 @@ type pthread_t is new unsigned_long; - type struct_pthread_queue is record - head : System.Address; - tail : System.Address; + type struct_pthread_fast_lock is record + status : long; + spinlock : int; end record; - pragma Convention (C, struct_pthread_queue); + pragma Convention (C, struct_pthread_fast_lock); type pthread_mutex_t is record - m_spinlock : int; + m_reserved : int; m_count : int; m_owner : System.Address; m_kind : int; - m_waiting : struct_pthread_queue; + m_lock : struct_pthread_fast_lock; end record; pragma Convention (C, pthread_mutex_t); - type pthread_cond_t is record - c_spinlock : int; - c_waiting : struct_pthread_queue; - end record; + type pthread_cond_t is array (0 .. 47) of unsigned_char; pragma Convention (C, pthread_cond_t); type pthread_key_t is new unsigned;