diff options
| author | Cliff Click <cliffc@acm.org> | 2026-10-24 15:25:58 -0700 |
|---|---|---|
| committer | Cliff Click <cliffc@acm.org> | 2026-10-24 15:25:58 -0700 |
| commit | 4ae6a06d94b228a5eb67c8473131a791e310c233 (patch) | |
| tree | 839dfa84f1bfb982122ce62183b6ae4145a4c615 /chapter-modules/src/main/smp/sys/io.smp | |
| parent | c4364363dbd969c9aa27aa7c43fbe6d40544501a (diff) | |
| download | Simple-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.smp | 64 |
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); -}; |
