Skip to content

Commit 6008e10

Browse files
committed
fix: Fix Wasix signal stubs to follow libc errno conventions
1 parent a584e62 commit 6008e10

9 files changed

Lines changed: 25 additions & 32 deletions

File tree

libc-top-half/musl/src/signal/getitimer.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
#include <sys/time.h>
22
#include <errno.h>
3-
#ifdef __wasilibc_unmodified_upstream
43
#include "syscall.h"
5-
#endif
64

75
int getitimer(int which, struct itimerval *old)
86
{
@@ -20,6 +18,8 @@ int getitimer(int which, struct itimerval *old)
2018
}
2119
return syscall(SYS_getitimer, which, old);
2220
#else
23-
return EINVAL;
21+
(void)which;
22+
(void)old;
23+
return __syscall_ret(-EINVAL);
2424
#endif
2525
}
Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
#include <signal.h>
2-
#ifdef __wasilibc_unmodified_upstream
32
#include "syscall.h"
4-
#else
3+
#ifndef __wasilibc_unmodified_upstream
54
#include <wasi/api.h>
65
#endif
76

@@ -11,6 +10,6 @@ int kill(pid_t pid, int sig)
1110
return syscall(SYS_kill, pid, sig);
1211
#else
1312
int r = __wasi_proc_signal(pid, (__wasi_signal_t)sig);
14-
return r;
13+
return __syscall_ret(-r);
1514
#endif
16-
}
15+
}

libc-top-half/musl/src/signal/raise.c

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
#include <signal.h>
22
#include <stdint.h>
3-
#ifdef __wasilibc_unmodified_upstream
43
#include "syscall.h"
5-
#else
4+
#ifndef __wasilibc_unmodified_upstream
65
#include <wasi/api.h>
76
#endif
87
#include "pthread_impl.h"
@@ -21,5 +20,5 @@ int raise(int sig)
2120
#ifdef __wasilibc_unmodified_upstream
2221
__restore_sigs(&set);
2322
#endif
24-
return ret;
25-
}
23+
return __syscall_ret(-ret);
24+
}

libc-top-half/musl/src/signal/sigaltstack.c

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
#include <signal.h>
22
#include <errno.h>
3-
#ifdef __wasilibc_unmodified_upstream
43
#include "syscall.h"
5-
#endif
64

75
int sigaltstack(const stack_t *restrict ss, stack_t *restrict old)
86
{
@@ -19,6 +17,6 @@ int sigaltstack(const stack_t *restrict ss, stack_t *restrict old)
1917
}
2018
return syscall(SYS_sigaltstack, ss, old);
2119
#else
22-
return EINVAL;
20+
return __syscall_ret(-EINVAL);
2321
#endif
2422
}
Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
11
#include <signal.h>
22
#include <errno.h>
3-
#ifdef __wasilibc_unmodified_upstream
43
#include "syscall.h"
5-
#endif
64

75
int sigpending(sigset_t *set)
86
{
97
#ifdef __wasilibc_unmodified_upstream
108
return syscall(SYS_rt_sigpending, set, _NSIG/8);
119
#else
12-
return EINVAL;
10+
(void)set;
11+
return __syscall_ret(-EINVAL);
1312
#endif
14-
}
13+
}

libc-top-half/musl/src/signal/sigqueue.c

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
11
#include <signal.h>
22
#include <string.h>
33
#include <unistd.h>
4-
#ifdef __wasilibc_unmodified_upstream
54
#include "syscall.h"
6-
#endif
75
#include "pthread_impl.h"
86

97
int sigqueue(pid_t pid, int sig, const union sigval value)
@@ -23,10 +21,10 @@ int sigqueue(pid_t pid, int sig, const union sigval value)
2321
#ifdef __wasilibc_unmodified_upstream
2422
r = syscall(SYS_rt_sigqueueinfo, pid, sig, &si);
2523
#else
26-
r = EINVAL;
24+
r = -EINVAL;
2725
#endif
2826
#ifdef __wasilibc_unmodified_upstream
2927
__restore_sigs(&set);
3028
#endif
31-
return r;
29+
return __syscall_ret(r);
3230
}
Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
11
#include <signal.h>
22
#include <errno.h>
3-
#ifdef __wasilibc_unmodified_upstream
43
#include "syscall.h"
5-
#endif
64

75
int sigsuspend(const sigset_t *mask)
86
{
97
#ifdef __wasilibc_unmodified_upstream
108
return syscall_cp(SYS_rt_sigsuspend, mask, _NSIG/8);
119
#else
12-
return EINVAL;
10+
(void)mask;
11+
return __syscall_ret(-EINVAL);
1312
#endif
14-
}
13+
}

libc-top-half/musl/src/signal/sigtimedwait.c

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
#include <signal.h>
22
#include <errno.h>
3-
#ifdef __wasilibc_unmodified_upstream
43
#include "syscall.h"
5-
#endif
64

75
#define IS32BIT(x) !((x)+0x80000000ULL>>32)
86
#define CLAMP(x) (int)(IS32BIT(x) ? (x) : 0x7fffffffU+((0ULL+(x))>>63))
@@ -38,6 +36,9 @@ int sigtimedwait(const sigset_t *restrict mask, siginfo_t *restrict si, const st
3836
#else
3937
int sigtimedwait(const sigset_t *restrict mask, siginfo_t *restrict si, const struct timespec *restrict timeout)
4038
{
41-
return EINVAL;
39+
(void)mask;
40+
(void)si;
41+
(void)timeout;
42+
return __syscall_ret(-EINVAL);
4243
}
43-
#endif
44+
#endif

libc-top-half/musl/src/unistd/setpgrp.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
#include <unistd.h>
22
#include <errno.h>
3+
#include "syscall.h"
34

45
#ifndef __wasilibc_unmodified_upstream
56
extern int __wasilibc_pgrp;
@@ -10,7 +11,6 @@ pid_t setpgrp(void)
1011
#ifdef __wasilibc_unmodified_upstream
1112
return setpgid(0, 0);
1213
#else
13-
errno = ENOSYS;
14-
return __wasilibc_pgrp;
14+
return __syscall_ret(-ENOSYS);
1515
#endif
1616
}

0 commit comments

Comments
 (0)