summaryrefslogtreecommitdiff
path: root/chapter-modules/src/main/smp/sys/io.smp
diff options
context:
space:
mode:
authorCliff Click <cliffc@acm.org>2026-10-24 15:25:58 -0700
committerCliff Click <cliffc@acm.org>2026-10-24 15:25:58 -0700
commit4ae6a06d94b228a5eb67c8473131a791e310c233 (patch)
tree839dfa84f1bfb982122ce62183b6ae4145a4c615 /chapter-modules/src/main/smp/sys/io.smp
parentc4364363dbd969c9aa27aa7c43fbe6d40544501a (diff)
downloadSimple-4ae6a06d94b228a5eb67c8473131a791e310c233.tar.gz
Simple-4ae6a06d94b228a5eb67c8473131a791e310c233.zip
Rename modules chapter to 28a
Diffstat (limited to 'chapter-modules/src/main/smp/sys/io.smp')
-rw-r--r--chapter-modules/src/main/smp/sys/io.smp64
1 files changed, 0 insertions, 64 deletions
diff --git a/chapter-modules/src/main/smp/sys/io.smp b/chapter-modules/src/main/smp/sys/io.smp
deleted file mode 100644
index d6263ffe..00000000
--- a/chapter-modules/src/main/smp/sys/io.smp
+++ /dev/null
@@ -1,64 +0,0 @@
-
-// Simple I/O Library
-
-// Write byte array to stdout
-val p = { u8[~] str -> write(1,str); };
-val p_noInline = { u8[~] str -> write(1,str); };
-
-// Return fd contents as a u8[].
-val read = { i32 fd ->
- var buf = new u8[8*1024];
- i64 ptr = buf;
- int len = 0;
- while( true ) {
- i32 rez = libc.read(fd,ptr,buf#);
- if( rez > buf# ) libc._exit(libc.errno());
- len += rez;
- if( rez < buf# )
- break;
- libc._exit(-2); // Need to implement for more than 8K input
- }
- var out = new u8[len];
- ary.copy(out,0,buf,0,len);
-};
-
-// Write all of str to fd.
-val write = { i32 fd, u8[~] str ->
- i64 ptr = str; // Convert array pointer to a i64 for the native call
- libc.write(fd,ptr,str#);
-};
-
-// Write all of str to fd.
-val writeOff = { i32 fd, u8[~] str, u32 off, u32 len ->
- i64 ptr = str; // Convert array pointer to a i64 for the native call
- ptr += off; // Skip offset
- // Cap at available length
- if( len > str# - off ) len = str# - off;
- // Do the write
- libc.write(fd,ptr,len);
-};
-
-// Return stdin as a u8[].
-val stdin = { -> read(0); };
-
-// Create file for writing. Return fd, or -1 and errno has the error code
-val create = { u8[~] str ->
- i64 ptr = sys.aryu8.str0(str);
- i32 perms = 6*64 + 6*8 + 6; // 0666
- return libc.creat(ptr, perms);
-};
-
-// Open file for reading. Return fd, or -1 and errno has the error code
-val open = { u8[~] str ->
- i64 ptr = sys.aryu8.str0(str);
- return libc.open(ptr, sys.libc.O_RDONLY, 0);
-};
-
-// Close an open fd. Return 0, or -1 and errno has the error code
-val close = { i32 fd -> return libc.close(fd); };
-
-// Remove a file. Return 0, or -1 and errno has the error code
-val remove = { u8[~] str ->
- i64 ptr = sys.aryu8.str0(str);
- return libc.unlink(ptr);
-};