Browse Source

* pthread consts and types fixed

git-svn-id: trunk@2991 -
florian 19 years ago
parent
commit
8d83343971
2 changed files with 42 additions and 54 deletions
  1. 40 52
      rtl/solaris/pthread.inc
  2. 2 2
      rtl/solaris/ptypes.inc

+ 40 - 52
rtl/solaris/pthread.inc

@@ -21,7 +21,7 @@
 
   const
     PTHREAD_EXPLICIT_SCHED       = 0;
-    PTHREAD_CREATE_DETACHED      = 1;
+    PTHREAD_CREATE_DETACHED      = $40;
     PTHREAD_SCOPE_PROCESS        = 0;
 
   type
@@ -32,51 +32,61 @@
     end;
 
     pthread_attr_t = record
-      __detachstate: cint;
-      __schedpolicy: cint;
-      __schedparam: sched_param;
-      __inheritsched: cint;
-      __scope: cint;
-      __guardsize: size_t;
-      __stackaddr_set: cint;
-      __stackaddr: pointer;
-      __stacksize: size_t;
-    end;
-
-    _pthread_fastlock = record
-      __status: clong;
-      __spinlock: cint;
+      __pthread_attrp : pointer;
     end;
 
     pthread_mutexattr_t = record
-      __mutexkind: cint;
+      __pthread_mutexattrp : pointer;
     end;
 
     pthread_cond_t = record
-      __c_lock: _pthread_fastlock;
-      __c_waiting: pointer;
-      __padding: array[0..48-1-sizeof(_pthread_fastlock)-sizeof(pointer)-sizeof(clonglong)] of byte;
-      __align: clonglong;
+      __pthread_cond_flags : record
+        __pthread_cond_flag : array[0..3] of byte;
+        __pthread_cond_type : uint16_t;
+        __pthread_cond_magic : uint16_t;
+      end;
+      __pthread_cond_data : upad64_t;
     end;
 
     pthread_condattr_t = record
-      __dummy: cint;
+      __pthread_condattrp : pointer;
     end;
 
     pthread_key_t = cuint;
 
+    pthread_mutex_t = record
+      __pthread_mutex_flags : record
+           __pthread_mutex_flag1 : word;
+           __pthread_mutex_flag2 : byte;
+           __pthread_mutex_ceiling : byte;
+           __pthread_mutex_type : word;
+           __pthread_mutex_magic : word;
+        end;
+      __pthread_mutex_lock : record
+          case longint of
+             0 : ( __pthread_mutex_lock64 : record
+                  __pthread_mutex_pad : array[0..7] of byte;
+               end );
+             1 : ( __pthread_mutex_lock32 : record
+                  __pthread_ownerpid : dword;
+                  __pthread_lockword : dword;
+               end );
+             2 : ( __pthread_mutex_owner64 : qword );
+          end;
+      __pthread_mutex_data : qword;
+    end;
+    
     pthread_rwlock_t = record
-      __rw_readers: cint;
-      __rw_writer: pointer;
-      __rw_read_waiting: pointer;
-      __rw_write_waiting: pointer;
-      __rw_kind: cint;
-      __rw_pshared: cint;
+      __pthread_rwlock_readers : int32_t;
+      __pthread_rwlock_type : uint16_t;
+      __pthread_rwlock_magic : uint16_t;
+      __pthread_rwlock_mutex : pthread_mutex_t;
+      __pthread_rwlock_readercv : pthread_cond_t;
+      __pthread_rwlock_writercv : pthread_cond_t;
     end;
 
     pthread_rwlockattr_t = record
-      __lockkind: cint;
-      __pshared: cint;
+      __pthread_rwlockattrp : pointer;
     end;
 
     sem_t = record
@@ -87,7 +97,7 @@
       sem_pad2 : array[0..1] of upad64_t;
     end;
 
-    psem_t          = ^sem_t;
+    psem_t      = ^sem_t;
     TSemaphore  = sem_t;
     PSemaphore  = ^TSemaphore;
 
@@ -102,28 +112,6 @@
     ppthread_cond_t      = ^pthread_cond_t;
     ppthread_condattr_t  = ^pthread_condattr_t;
 
-    pthread_mutex_t = record
-      __pthread_mutex_flags : record
-           __pthread_mutex_flag1 : word;
-           __pthread_mutex_flag2 : byte;
-           __pthread_mutex_ceiling : byte;
-           __pthread_mutex_type : word;
-           __pthread_mutex_magic : word;
-        end;
-      __pthread_mutex_lock : record
-          case longint of
-             0 : ( __pthread_mutex_lock64 : record
-                  __pthread_mutex_pad : array[0..7] of byte;
-               end );
-             1 : ( __pthread_mutex_lock32 : record
-                  __pthread_ownerpid : dword;
-                  __pthread_lockword : dword;
-               end );
-             2 : ( __pthread_mutex_owner64 : qword );
-          end;
-      __pthread_mutex_data : qword;
-    end;
-
     pthread_spinlock_t = pthread_mutex_t;
 
     _once = record

+ 2 - 2
rtl/solaris/ptypes.inc

@@ -195,8 +195,8 @@ Type
 
 const
     _PTHREAD_MUTEX_NORMAL     = 0;
-    _PTHREAD_MUTEX_RECURSIVE  = 2;
-    _PTHREAD_MUTEX_ERRORCHECK = 4;
+    _PTHREAD_MUTEX_ERRORCHECK = 2;
+    _PTHREAD_MUTEX_RECURSIVE  = 4;
 
    { System limits, POSIX value in parentheses, used for buffer and stack allocation }
    { took idefix' values}