# 0001-rt-make-alarm-syscall-only-available-to-x86_64.patch -rw-r--r-- 2.5 KiB View raw
                                                                                
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
From 1038e5a8d808ac80da93d03a4eaee6a223c1328f Mon Sep 17 00:00:00 2001
From: Armin Preiml <apreiml@strohwolke.at>
Date: Tue, 15 Nov 2022 13:22:34 +0100
Subject: [PATCH hare] rt: make alarm syscall only available to x86_64

It's not available in aarch64.

Signed-off-by: Armin Preiml <apreiml@strohwolke.at>
---
 rt/+linux/syscalls.ha            | 4 ----
 rt/+linux/syscallsarch+x86_64.ha | 7 +++++++
 scripts/gen-stdlib               | 1 +
 stdlib.mk                        | 2 ++
 4 files changed, 10 insertions(+), 4 deletions(-)
 create mode 100644 rt/+linux/syscallsarch+x86_64.ha

diff --git a/rt/+linux/syscalls.ha b/rt/+linux/syscalls.ha
index e9e79dd9..c6a79746 100644
--- a/rt/+linux/syscalls.ha
+++ b/rt/+linux/syscalls.ha
@@ -864,10 +864,6 @@ export fn tee(fd_in: int, fd_out: int, ln: size, flags: uint) (size | errno) = {
 		ln: u64, flags: u64))?: size;
 };
 
-export fn alarm(seconds: uint) uint = {
-	return syscall1(SYS_alarm, seconds: u64): uint;
-};
-
 export fn fallocate(fd: int, mode: int, off: i64, ln: i64) (void | errno) = {
 	wrap_return(syscall4(SYS_fallocate,
 		fd: u64, mode: u64, off: u64, ln: u64))?;
diff --git a/rt/+linux/syscallsarch+x86_64.ha b/rt/+linux/syscallsarch+x86_64.ha
new file mode 100644
index 00000000..f3b5896b
--- /dev/null
+++ b/rt/+linux/syscallsarch+x86_64.ha
@@ -0,0 +1,7 @@
+// License: MPL-2.0
+// (c) 2022 Sebastian <sebastian@sebsite.pw>
+
+export fn alarm(seconds: uint) uint = {
+	return syscall1(SYS_alarm, seconds: u64): uint;
+};
+
diff --git a/scripts/gen-stdlib b/scripts/gen-stdlib
index 2697689c..5d6a1cb7 100755
--- a/scripts/gen-stdlib
+++ b/scripts/gen-stdlib
@@ -29,6 +29,7 @@ gensrcs_rt() {
 		+linux/'+$(ARCH)'.ha \
 		+linux/syscallno+'$(ARCH)'.ha \
 		+linux/syscalls.ha \
+		+linux/syscallsarch+'$(ARCH)'.ha \
 		+linux/signal.ha \
 		+linux/stat.ha \
 		+linux/socket.ha \
diff --git a/stdlib.mk b/stdlib.mk
index e2ec0678..4baf7909 100644
--- a/stdlib.mk
+++ b/stdlib.mk
@@ -13,6 +13,7 @@ stdlib_rt_linux_srcs = \
 	$(STDLIB)/rt/+linux/+$(ARCH).ha \
 	$(STDLIB)/rt/+linux/syscallno+$(ARCH).ha \
 	$(STDLIB)/rt/+linux/syscalls.ha \
+	$(STDLIB)/rt/+linux/syscallsarch+$(ARCH).ha \
 	$(STDLIB)/rt/+linux/signal.ha \
 	$(STDLIB)/rt/+linux/stat.ha \
 	$(STDLIB)/rt/+linux/socket.ha \
@@ -2183,6 +2184,7 @@ testlib_rt_linux_srcs = \
 	$(STDLIB)/rt/+linux/+$(ARCH).ha \
 	$(STDLIB)/rt/+linux/syscallno+$(ARCH).ha \
 	$(STDLIB)/rt/+linux/syscalls.ha \
+	$(STDLIB)/rt/+linux/syscallsarch+$(ARCH).ha \
 	$(STDLIB)/rt/+linux/signal.ha \
 	$(STDLIB)/rt/+linux/stat.ha \
 	$(STDLIB)/rt/+linux/socket.ha \
-- 
2.38.1