summaryrefslogtreecommitdiff
path: root/src/shared
AgeCommit message (Collapse)Author
2022-08-03shared: clean up printf, %u support (amongst other things)dzwdz
2022-08-01fsutil: remove debug `true ||` in if conditiondzwdz
2022-07-29fsutil/fs_normslice: define *offset == 0 when *length == 0dzwdz
2022-07-29syscall/write: WRITE_TRUNCATEdzwdz
2022-07-29syscall: up the max argument count to 5; make write accept flagsdzwdz
2022-07-29use a shared fs_normslice() function to handle offsetsdzwdz
2022-07-27user/libc: execve() supports passing argv nowdzwdz
2022-07-27user/libc: fseek()dzwdz
2022-07-26user/libc: execv()dzwdz
2022-07-26user/libc: fread, fwrite, fclosedzwdz
2022-07-26shared: move some headers from shared/ to camellia/dzwdz
2022-07-20syscall/execbuf: EXECBUF_JMPdzwdz
2022-07-18syscalls: implement execbufdzwdz
i have been planning to implement something like this for a while now. it should be faster when doing consecutive syscalls (to be tested). it will also be helpful in writing the elf loader
2022-07-17kernel/virt_cpy: error struct, better error handlingdzwdz
2022-07-16amd64: back at the shell!dzwdz
2022-07-16amd64: barely boot into kernel codedzwdz
2022-07-10syscalls: implement dupdzwdz
2022-07-09syscalls/pipe: turn into a POSIX-style api with separate rw endsdzwdz
Without separate read/write ends you can't tell when there are no more writers left if you have multiple readers. Consider this piece of code: int fd = pipe(); fork(); // execution continues in 2 processes while (read(fd, &some_buf, sizeof somebuf) >= 0) { ... } Once both processes call `read()`, it's obvious that no writes are possible - all the processes that hold a reference to the pipe are currently stuck on a `read()` call, so the kernel could just make it return an error in both. But, what then? It's still possible to write to the pipe, and you can't know if the other process will do that. Thus, if you don't want to miss any output, you have to keep reading the pipe. Forever. Both processes end up stuck. Having separate read/write ends prevents that.
2022-07-08syscall/fs_respond: get the file id from the buf argumentdzwdz
Previously, file ids could only be positive integers, so their range was 31 bits - not enough to represent the entire memory. Now, pointers can be safely used as file ids.
2022-07-07kernel/vfs: delegate support in _syscall_fs_respond!dzwdz
this is big in terms of speed, it avoids a lot of unnecessary context switches
2022-07-07shared: add a flags argument to _syscall_fs_responddzwdz
2022-07-05kernel: initial partial pipe supportdzwdz
2022-07-05shared: fix memsetdzwdz
2022-07-01kernel: add the debug_klog syscall for tracking down process idsdzwdz
2022-06-30shared/mem: explicitly discard the const qualifier in memchrdzwdz
2022-06-29init/fs: tmpfs driver with support for creating new filesdzwdz
2022-06-29kernel/vfs: add the OPEN_CREATE flagdzwdz
2022-05-26syscalls/memflag: FINDFREE flagdzwdz
2022-05-15shared/ring: ring_contigdzwdz
2022-05-15shared/ring: use char* for the bufferdzwdz
i don't think uint8_t can alias. char can
2022-05-06syscalls: merge fork() and fs_fork2()dzwdz
2022-05-02meta: write a script to generate `src/init/syscalls.c`dzwdz
2022-05-02syscalls: fork() noreap flagdzwdz
2022-05-02kernel/vfs: pass `close()` calls to fs handlersdzwdz
2022-04-14kernel: port init's `printf` implementationdzwdz
2022-04-12kernel: make all sizes unsigned, sort out the sign messdzwdz
2022-04-10kernel/driver: modify the ps2/serial drivers to use ring_tdzwdz
2022-04-10shared: implement a basic ring bufferdzwdz
2022-03-27shared/memcpy: copy in 4byte blocksdzwdz
2022-03-27shared/syscalls: change some pointer types to void*dzwdz
2022-03-06shared: add strcmp() testcases, fix invalid implementationdzwdz
2021-11-26shared: move `enum vfs_operation` to types.hdzwdz
2021-11-20kernel: fs_wait returns a success val; the op type is put in the structdzwdz
2021-11-16kernel/vfs: add a capacity field to fs_wait_responsedzwdz
2021-11-14shared: move the str* implementations to shared/mem.cdzwdz
2021-11-14shared: use a single implementation of mem* functions everywheredzwdz
2021-11-02fork2() refactor: implement fs_fork2()dzwdz
2021-11-02fork2 refactor: every process now has (only) a single controlled vfs_backenddzwdz
2021-10-04remove support for processes returning strings on exitdzwdz
This isn't really all that useful, it doesn't enable anything that wasn't possible before. With it removed I'll be able to implement process_exit() in a much simpler way.
2021-09-21add `__force` for marking casts across adress spacesdzwdz