From 586c8f65f2d0c0e1f73aadd0aa8d850aa653bddd Mon Sep 17 00:00:00 2001 From: Cliff Click Date: Mon, 28 Sep 2026 13:30:22 -0700 Subject: Support extern C ver direct updates FIx minor RISC encodings. --- chapter25/src/main/smp/sys/io.smp | 2 +- chapter25/src/main/smp/sys/libc.smp | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) (limited to 'chapter25/src/main/smp/sys') diff --git a/chapter25/src/main/smp/sys/io.smp b/chapter25/src/main/smp/sys/io.smp index 33fbdb5e..d6263ffe 100644 --- a/chapter25/src/main/smp/sys/io.smp +++ b/chapter25/src/main/smp/sys/io.smp @@ -12,7 +12,7 @@ val read = { i32 fd -> int len = 0; while( true ) { i32 rez = libc.read(fd,ptr,buf#); - if( rez > buf# ) libc._exit(libc.errno); + if( rez > buf# ) libc._exit(libc.errno()); len += rez; if( rez < buf# ) break; diff --git a/chapter25/src/main/smp/sys/libc.smp b/chapter25/src/main/smp/sys/libc.smp index 133b5bf7..17ee65cb 100644 --- a/chapter25/src/main/smp/sys/libc.smp +++ b/chapter25/src/main/smp/sys/libc.smp @@ -30,8 +30,9 @@ i32 STDERR = 2; // status { i32 -> i32 } _exit = "C"; -// Error return from many native calls -i32 errno = "C"; +// errno is not an ordinary C data symbol; read it through the native runtime. +{ i32 } simple_errno = "C"; +val errno = { -> simple_errno(); }; // addr len prot flags fd off -> void* { i64 i64 i32 i32 i32 i32 -> i64 } mmap = "C"; // mmap flags -- cgit v1.2.3