another useless toy Unix clone
- Interrupts
- Memory allocation
- ATA disk driver
- Basic inode-based filesystem
- Clock module
- Basic async/await support
- Syscalls
- Processes
- ELF Binaries
- Basic Userspace
- Basic IPC
- fully implement
/proc
hierarchy
- for the initial stages of this project, I followed https://os.phil-opp.com/
- the ATA driver and process creation code was taken mainly from https://github.com/vinc/moros
- I have read some of the code of moros and RedoxOS for inspiration and implementation details
- the OSDev Wiki has also been helpful
acpi
aml
bit_field
bootloader
chrono
hashbrown
lazy_static
linked_list_allocator
log
pc-keyboard
pic8259
spin
typenum
uart_16550
volatile
(several versions behind)x86_64
Number | Name | Arg1 | Arg2 | Arg3 | Arg4 | Return |
---|---|---|---|---|---|---|
1 | read |
fd |
buf (ptr) |
buf_len |
nread |
|
2 | write |
fd |
buf (ptr) |
buf_len |
nwritten |
|
3 | open |
path (ptr) |
path_len |
mode (bitfield) |
fd |
|
4 | close |
fd |
0 or -1 (err) | |||
5 | flush |
fd |
0 or -1 (err) | |||
7 | sleep |
nanoseconds |
0 | |||
8 | wait (uses TSC) |
nanoseconds |
0 | |||
9 | getpid |
|||||
10 | exec |
path_addr |
path_len |
args_ptr |
args_len |
|
13 | stop |
kind (0=shutdown, 1=reboot) |
||||
18 | alloc |
size |
align |
ptr |
||
19 | free |
ptr |
size |
align |
||
21 | geterrno |
errno |
||||
22 | poll |
fd |
event (1=read, 2=write) |
ready |
||
23 | boottime |
boot_time (nanos) |
||||
24 | gettime |
time (seconds) |