summaryrefslogtreecommitdiff
path: root/src/main/smp/sys/libc.smp
diff options
context:
space:
mode:
authorCliff Click <cliffc@acm.org>2026-08-10 11:11:18 -0700
committerCliff Click <cliffc@acm.org>2026-08-10 15:21:17 -0700
commit28209703c72fb7e9955961dbdb84e24a0f871acd (patch)
tree8e4df2c1a5e6811696b454bbc4d7cd1cc30e42e7 /src/main/smp/sys/libc.smp
parente57bdd315a7918a0d130e1c95648ca4a1b4f08ed (diff)
downloadSimple-linear-chapter25.tar.gz
Simple-linear-chapter25.zip
Chapter 25: Moduleslinear-chapter25
Diffstat (limited to 'src/main/smp/sys/libc.smp')
-rw-r--r--src/main/smp/sys/libc.smp20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/main/smp/sys/libc.smp b/src/main/smp/sys/libc.smp
new file mode 100644
index 00000000..42fc7313
--- /dev/null
+++ b/src/main/smp/sys/libc.smp
@@ -0,0 +1,20 @@
+// -*- mode: java; -*-
+
+// libc bindings:
+// https://www.man7.org/linux/man-pages/man2/<libc call>.2.html
+
+// fd buf len -> len
+{ i32 i64 u32 -> u32 } write = "C";
+// fd buf len -> len
+{ i32 i64 u32 -> u32 } read = "C";
+// status
+{ i32 -> i32 } _exit = "C";
+// addr len prot flags fd off -> void*
+{ i64 i64 i32 i32 i32 i32 -> i64 } mmap = "C";
+// mmap flags
+i32 PROT_EXEC = 4;
+i32 PROT_READ = 1;
+i32 PROT_WRITE= 2;
+i32 PROT_NONE = 0;
+i32 MAP_PRIVATE = 2;
+i32 MAP_ANON = 32;