diff options
author | daniel <daniel@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2010-08-08 14:24:46 +0000 |
---|---|---|
committer | daniel <daniel@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2010-08-08 14:24:46 +0000 |
commit | 2828b3533826beb376306d433e0877242bf77156 (patch) | |
tree | 88cff3e20e7f0ca02e5213db64102ab26097b2ba | |
parent | 72ca270fa71f11423d122d9e170b29f672e66505 (diff) | |
download | fpc-2828b3533826beb376306d433e0877242bf77156.tar.gz |
+ Add futex
git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@15747 3ad0048d-3df7-0310-abae-a5850022a9f2
-rw-r--r-- | rtl/linux/linux.pp | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/rtl/linux/linux.pp b/rtl/linux/linux.pp index f35bd3665b..0d2e94ba1c 100644 --- a/rtl/linux/linux.pp +++ b/rtl/linux/linux.pp @@ -101,6 +101,13 @@ const if (oldval CMP CMPARG) wake UADDR2; } +function futex(uaddr:Pcint;op,val:cint;timeout:Ptimespec;addr2:Pcint;val3:cint):cint;{$ifdef SYSTEMINLINE}inline;{$endif} +function futex(var uaddr;op,val:cint;timeout:Ptimespec;var addr2;val3:cint):cint;{$ifdef SYSTEMINLINE}inline;{$endif} +function futex(var uaddr;op,val:cint;var timeout:Ttimespec;var addr2;val3:cint):cint;{$ifdef SYSTEMINLINE}inline;{$endif} +function futex(uaddr:Pcint;op,val:cint;timeout:Ptimespec):cint;{$ifdef SYSTEMINLINE}inline;{$endif} +function futex(var uaddr;op,val:cint;timeout:Ptimespec):cint;{$ifdef SYSTEMINLINE}inline;{$endif} +function futex(var uaddr;op,val:cint;var timeout:Ttimespec):cint;{$ifdef SYSTEMINLINE}inline;{$endif} + {$ifndef FPC_USE_LIBC} function futex_op(op, oparg, cmp, cmparg: cint): cint; {$ifdef SYSTEMINLINE}inline;{$endif} {$endif} @@ -480,6 +487,45 @@ begin fdatasync:=do_SysCall(syscall_nr_fdatasync, fd); end; +function futex(uaddr:Pcint;op,val:cint;timeout:Ptimespec;addr2:Pcint;val3:cint):cint;{$ifdef SYSTEMINLINE}inline;{$endif} + +begin + futex:=do_syscall(syscall_nr_futex,Tsysparam(uaddr),Tsysparam(op),Tsysparam(val),Tsysparam(timeout), + Tsysparam(addr2),Tsysparam(val3)); +end; + +function futex(var uaddr;op,val:cint;timeout:Ptimespec;var addr2;val3:cint):cint;{$ifdef SYSTEMINLINE}inline;{$endif} + +begin + futex:=do_syscall(syscall_nr_futex,Tsysparam(@uaddr),Tsysparam(op),Tsysparam(val),Tsysparam(timeout), + Tsysparam(@addr2),Tsysparam(val3)); +end; + +function futex(var uaddr;op,val:cint;var timeout:Ttimespec;var addr2;val3:cint):cint;{$ifdef SYSTEMINLINE}inline;{$endif} + +begin + futex:=do_syscall(syscall_nr_futex,Tsysparam(@uaddr),Tsysparam(op),Tsysparam(val),Tsysparam(@timeout), + Tsysparam(@addr2),Tsysparam(val3)); +end; + +function futex(uaddr:Pcint;op,val:cint;timeout:Ptimespec):cint;{$ifdef SYSTEMINLINE}inline;{$endif} + +begin + futex:=do_syscall(syscall_nr_futex,Tsysparam(uaddr),Tsysparam(op),Tsysparam(val),Tsysparam(timeout)); +end; + +function futex(var uaddr;op,val:cint;timeout:Ptimespec):cint;{$ifdef SYSTEMINLINE}inline;{$endif} + +begin + futex:=do_syscall(syscall_nr_futex,Tsysparam(@uaddr),Tsysparam(op),Tsysparam(val),Tsysparam(timeout)); +end; + +function futex(var uaddr;op,val:cint;var timeout:Ttimespec):cint;{$ifdef SYSTEMINLINE}inline;{$endif} + +begin + futex:=do_syscall(syscall_nr_futex,Tsysparam(@uaddr),Tsysparam(op),Tsysparam(val),Tsysparam(@timeout)); +end; + {$endif} // non-libc { FUTEX_OP is a macro, doesn't exist in libC as function} |