Browse Source

* Add pthread_mutex_timedlock, sem_timedwait may be needed in future

Michaël Van Canneyt 1 year ago
parent
commit
f0b714d5ad
2 changed files with 6 additions and 1 deletions
  1. 3 1
      rtl/freebsd/pthread.inc
  2. 3 0
      rtl/linux/pthread.inc

+ 3 - 1
rtl/freebsd/pthread.inc

@@ -90,7 +90,8 @@ function  pthread_self:pthread_t; cdecl;external;
 function  pthread_mutex_init (p:ppthread_mutex_t;o:ppthread_mutex_attr_t):cint; cdecl;external;
 function  pthread_mutex_init (p:ppthread_mutex_t;o:ppthread_mutex_attr_t):cint; cdecl;external;
 function  pthread_mutex_destroy (p:ppthread_mutex_attr_t):cint; cdecl;external;
 function  pthread_mutex_destroy (p:ppthread_mutex_attr_t):cint; cdecl;external;
 function  pthread_mutex_lock    (p:ppthread_mutex_attr_t):cint; cdecl;external;
 function  pthread_mutex_lock    (p:ppthread_mutex_attr_t):cint; cdecl;external;
-function  pthread_mutex_trylock    (p:ppthread_mutex_attr_t):cint; cdecl;external;
+function  pthread_mutex_timedlock(__mutex:ppthread_mutex_t; __abs_timeout:ptimespec):longint;cdecl; external;
+function  pthread_mutex_trylock(p:ppthread_mutex_attr_t):cint; cdecl;external;
 function  pthread_mutex_unlock  (p:ppthread_mutex_attr_t):cint; cdecl;external;
 function  pthread_mutex_unlock  (p:ppthread_mutex_attr_t):cint; cdecl;external;
 function  pthread_cancel(_para1:pthread_t):cint;cdecl;external;
 function  pthread_cancel(_para1:pthread_t):cint;cdecl;external;
 function  pthread_detach(_para1:pthread_t):cint;cdecl;external;
 function  pthread_detach(_para1:pthread_t):cint;cdecl;external;
@@ -109,6 +110,7 @@ function sem_close(__sem:Psem_t):cint;cdecl;external ;
 function sem_unlink(__name:PAnsiChar):cint;cdecl;external ;
 function sem_unlink(__name:PAnsiChar):cint;cdecl;external ;
 function sem_wait(__sem:Psem_t):cint;cdecl;external ;
 function sem_wait(__sem:Psem_t):cint;cdecl;external ;
 function sem_trywait(__sem:Psem_t):cint;cdecl;external ;
 function sem_trywait(__sem:Psem_t):cint;cdecl;external ;
+function sem_timedwait (__sem:Psem_t; __abs_timeout:ptimespec):longint;cdecl;external;
 function sem_post(__sem:Psem_t):cint;cdecl;external ;
 function sem_post(__sem:Psem_t):cint;cdecl;external ;
 function sem_getvalue(__sem:Psem_t; __sval:Pcint):cint;cdecl;external;
 function sem_getvalue(__sem:Psem_t; __sval:Pcint):cint;cdecl;external;
 function pthread_mutexattr_init(_para1:Ppthread_mutexattr_t):cint;cdecl;external;
 function pthread_mutexattr_init(_para1:Ppthread_mutexattr_t):cint;cdecl;external;

+ 3 - 0
rtl/linux/pthread.inc

@@ -139,6 +139,7 @@ Type
     function pthread_mutex_init(__mutex:ppthread_mutex_t; __mutex_attr:ppthread_mutexattr_t):longint;cdecl;external;
     function pthread_mutex_init(__mutex:ppthread_mutex_t; __mutex_attr:ppthread_mutexattr_t):longint;cdecl;external;
     function pthread_mutex_destroy(__mutex:ppthread_mutex_t):longint;cdecl;external;
     function pthread_mutex_destroy(__mutex:ppthread_mutex_t):longint;cdecl;external;
     function pthread_mutex_trylock(__mutex:ppthread_mutex_t):longint;cdecl;external;
     function pthread_mutex_trylock(__mutex:ppthread_mutex_t):longint;cdecl;external;
+    function pthread_mutex_timedlock(__mutex:ppthread_mutex_t; __abs_timeout:ptimespec):longint;cdecl;external;
     function pthread_mutex_lock(__mutex:ppthread_mutex_t):longint;cdecl;external;
     function pthread_mutex_lock(__mutex:ppthread_mutex_t):longint;cdecl;external;
     function pthread_mutex_unlock(__mutex:ppthread_mutex_t):longint;cdecl;external;
     function pthread_mutex_unlock(__mutex:ppthread_mutex_t):longint;cdecl;external;
     function pthread_mutexattr_init(__attr:ppthread_mutexattr_t):longint;cdecl;external;
     function pthread_mutexattr_init(__attr:ppthread_mutexattr_t):longint;cdecl;external;
@@ -221,6 +222,7 @@ Var
     pthread_mutex_init : Function(__mutex:ppthread_mutex_t; __mutex_attr:ppthread_mutexattr_t):longint;cdecl;
     pthread_mutex_init : Function(__mutex:ppthread_mutex_t; __mutex_attr:ppthread_mutexattr_t):longint;cdecl;
     pthread_mutex_destroy : Function(__mutex:ppthread_mutex_t):longint;cdecl;
     pthread_mutex_destroy : Function(__mutex:ppthread_mutex_t):longint;cdecl;
     pthread_mutex_trylock : Function(__mutex:ppthread_mutex_t):longint;cdecl;
     pthread_mutex_trylock : Function(__mutex:ppthread_mutex_t):longint;cdecl;
+    pthread_mutex_timedlock : Function(__mutex:ppthread_mutex_t; __abs_timeout:ptimespec):longint;cdecl;
     pthread_mutex_lock : Function(__mutex:ppthread_mutex_t):longint;cdecl;
     pthread_mutex_lock : Function(__mutex:ppthread_mutex_t):longint;cdecl;
     pthread_mutex_unlock : Function(__mutex:ppthread_mutex_t):longint;cdecl;
     pthread_mutex_unlock : Function(__mutex:ppthread_mutex_t):longint;cdecl;
     pthread_mutexattr_init : Function(__attr:ppthread_mutexattr_t):longint;cdecl;
     pthread_mutexattr_init : Function(__attr:ppthread_mutexattr_t):longint;cdecl;
@@ -316,6 +318,7 @@ begin
   Pointer(pthread_mutex_init) := dlsym(PthreadDLL,'pthread_mutex_init');
   Pointer(pthread_mutex_init) := dlsym(PthreadDLL,'pthread_mutex_init');
   Pointer(pthread_mutex_destroy) := dlsym(PthreadDLL,'pthread_mutex_destroy');
   Pointer(pthread_mutex_destroy) := dlsym(PthreadDLL,'pthread_mutex_destroy');
   Pointer(pthread_mutex_trylock) := dlsym(PthreadDLL,'pthread_mutex_trylock');
   Pointer(pthread_mutex_trylock) := dlsym(PthreadDLL,'pthread_mutex_trylock');
+  Pointer(pthread_mutex_timedlock) := dlsym(PthreadDLL,'pthread_mutex_timedlock');
   Pointer(pthread_mutex_lock) := dlsym(PthreadDLL,'pthread_mutex_lock');
   Pointer(pthread_mutex_lock) := dlsym(PthreadDLL,'pthread_mutex_lock');
   Pointer(pthread_mutex_unlock) := dlsym(PthreadDLL,'pthread_mutex_unlock');
   Pointer(pthread_mutex_unlock) := dlsym(PthreadDLL,'pthread_mutex_unlock');
   Pointer(pthread_mutexattr_init) := dlsym(PthreadDLL,'pthread_mutexattr_init');
   Pointer(pthread_mutexattr_init) := dlsym(PthreadDLL,'pthread_mutexattr_init');