summary refs log tree commit diff stats
path: root/lib
diff options
context:
space:
mode:
authorEugene Kabanov <ka@hardcore.kiev.ua>2017-04-02 09:32:54 +0300
committerAndreas Rumpf <rumpf_a@web.de>2017-04-02 08:32:54 +0200
commit316b680f5d99da056e1ae89b7a2ca0eabc6244f8 (patch)
tree447705dc89bb2cf33895eb83f5cb26f14ba7d613 /lib
parent5fdd03ad4d2a9a1f4e7c02aec0ef199edb6242fa (diff)
downloadNim-316b680f5d99da056e1ae89b7a2ca0eabc6244f8.tar.gz
Proper fix for osproc.nim on Android (#5646)
Diffstat (limited to 'lib')
-rw-r--r--lib/posix/posix.nim10
1 files changed, 7 insertions, 3 deletions
diff --git a/lib/posix/posix.nim b/lib/posix/posix.nim
index 0d11bd853..1ff861534 100644
--- a/lib/posix/posix.nim
+++ b/lib/posix/posix.nim
@@ -2423,11 +2423,15 @@ proc sigset*(a1: int, a2: proc (x: cint) {.noconv.}) {.
 proc sigsuspend*(a1: var Sigset): cint {.importc, header: "<signal.h>".}
 
 when defined(android):
-  proc sigtimedwait*(a1: var Sigset, a2: var SigInfo,
-                   a3: var Timespec, sigsetsize: csize = sizeof(culong)*2): cint {.importc: "__rt_sigtimedwait", header:"<signal.h>".}
+  proc syscall(arg: clong): clong {.varargs, importc: "syscall", header: "<unistd.h>".}
+  var NR_rt_sigtimedwait {.importc: "__NR_rt_sigtimedwait", header: "<sys/syscall.h>".}: clong
+  var NSIGMAX {.importc: "NSIG", header: "<signal.h>".}: clong
+
+  proc sigtimedwait*(a1: var Sigset, a2: var SigInfo, a3: var Timespec): cint =
+    result = cint(syscall(NR_rt_sigtimedwait, addr(a1), addr(a2), addr(a3), NSIGMAX div 8))
 else:
   proc sigtimedwait*(a1: var Sigset, a2: var SigInfo,
-                   a3: var Timespec): cint {.importc, header: "<signal.h>".}
+                     a3: var Timespec): cint {.importc, header: "<signal.h>".}
 
 proc sigwait*(a1: var Sigset, a2: var cint): cint {.
   importc, header: "<signal.h>".}