Age | Commit message (Collapse) | Author | |
---|---|---|---|
2023-01-25 | style: typedef structs, shorter namespaces | dzwdz | |
I've wanted to do this for a while, and since I've just had a relatively large refactor commit (pcpy), this is as good of a time as any. Typedefing structs was mostly inspired by Plan 9's coding style. It makes some lines of code much shorter at basically no expense. Everything related to userland kept old-style struct definitions, so as not to force that style onto other people. I also considered changing SCREAMING_ENUM_FIELDS to NicerLookingCamelcase, but I didn't, just in case that'd be confusing. | |||
2022-10-08 | kernel/handle: reuse ->writeable/->readable for pipes | dzwdz | |
2022-10-02 | syscall/open: add the full suite of READ/WRITE flags | dzwdz | |
2022-08-19 | syscall/fs_wait: return a handle for each request | dzwdz | |
2022-08-12 | vfs: OPEN_RO flag, read-only whitelist entries | dzwdz | |
2022-07-26 | shared: move some headers from shared/ to camellia/ | dzwdz | |
2022-07-09 | syscalls/pipe: turn into a POSIX-style api with separate rw ends | dzwdz | |
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-08 | syscall/fs_respond: get the file id from the buf argument | dzwdz | |
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-06 | kernel/pipes: read & write support | dzwdz | |
2022-07-05 | kernel: initial partial pipe support | dzwdz | |
2022-05-06 | kernel: remove the union in `struct handle` | dzwdz | |
2022-05-05 | kernel: fix a few minor compiler warnings | dzwdz | |
2022-05-05 | kernel: ps2 driver is now a separate backend | dzwdz | |
2022-05-04 | kernel: refcount vfs_backend | dzwdz | |
what a mess | |||
2022-05-01 | kernel/proc: `process_handle_get` for safely accepting handle ids | dzwdz | |
2022-05-01 | kernel/proc: make handles separate refcounted objects | dzwdz | |
2022-04-28 | kernel/proc: simplify `process_seed` | dzwdz | |
2021-11-02 | fork2() refactor: remove the unused back handle type | dzwdz | |
2021-09-18 | put the `handle_t` typedef in `shared/types.h` | dzwdz | |
2021-09-18 | merge `kernel/types.h` and `init/types.h` | dzwdz | |
2021-09-07 | implement fs_create(), front/back fs handles | dzwdz | |
2021-09-04 | new vfs impl pt. 1: implement open() | dzwdz | |
2021-09-04 | nuke the old handle code | dzwdz | |
2021-09-04 | rename file descriptors to handles | dzwdz | |