use syscall_arg_t and __scc macro for arguments to __alt_socketcall
[musl] / src / signal / getitimer.c
index 222d113..36d1eb9 100644 (file)
@@ -3,10 +3,16 @@
 
 int getitimer(int which, struct itimerval *old)
 {
-       int ret;
-       long kold[4];
-
-       if (!(ret = syscall2(__NR_getitimer, which, (long)&kold)))
-               *old = (struct itimerval){ { kold[0], kold[1] }, { kold[2], kold[3] } };
-       return ret;
+       if (sizeof(time_t) > sizeof(long)) {
+               long old32[4];
+               int r = __syscall(SYS_getitimer, which, old32);
+               if (!r) {
+                       old->it_interval.tv_sec = old32[0];
+                       old->it_interval.tv_usec = old32[1];
+                       old->it_value.tv_sec = old32[2];
+                       old->it_value.tv_usec = old32[3];
+               }
+               return __syscall_ret(r);
+       }
+       return syscall(SYS_getitimer, which, old);
 }