63 lines
2.9 KiB
Markdown
63 lines
2.9 KiB
Markdown
---
|
|
title: "Sysabi"
|
|
summary: The noxos `Application Binary Interface`.
|
|
date: 2023-03-14T21:00:40+01:00
|
|
---
|
|
|
|
# Syscalls
|
|
Syscalls are a way for programms to communicate with the kernel.
|
|
|
|
To perform a syscall, you need to populate the following registers:
|
|
|
|
| Register | Value |
|
|
|----------|-----------------|
|
|
| rax | The syscalls ID |
|
|
| rdi | Argument 1 |
|
|
| rsi | Argument 2 |
|
|
| rbx | Argument 3 |
|
|
| rcx | Argument 4 |
|
|
|
|
The following calls should be included to some degree in NoxOS 1.0.
|
|
|
|
## Categories
|
|
### Files
|
|
| ID | Name | Description | Arg1 | Arg2 | Arg3 | Arg4 | Result | Status |
|
|
|--------|--------------|-------------|------|--------|------|------|------------|--------|
|
|
| 0x0101 | `nx_fopen` | | path | len | | | fd | N/A |
|
|
| 0x0102 | `nx_fclose` | | fd | | | | success | N/A |
|
|
| 0x0103 | `nx_fread` | | fd | offset | mem | n | num_bytes | N/A |
|
|
| 0x0104 | `nx_fwrite` | | fd | offset | mem | n | num_bytes | N/A |
|
|
| 0x0105 | `nx_fdelete` | | fd | | | | success | N/A |
|
|
| 0x0106 | `nx_flist` | | fd | mem | | | needed_mem | N/A |
|
|
| 0x0107 | `nx_finfo` | | fd | attr | mem | | len | N/A |
|
|
|
|
### Memory
|
|
| Category | ID | Name | Description | Arg1 | Arg2 | Arg3 | Arg4 | Result | Status |
|
|
|----------|-----|------|-------------|------|------|------|------|--------|--------|
|
|
| | | | | | | | | | |
|
|
|
|
### Processes
|
|
| Category | ID | Name | Description | Arg1 | Arg2 | Arg3 | Arg4 | Result | Status |
|
|
|----------|-----|------|-------------|------|------|------|------|--------|--------|
|
|
| | | | | | | | | | |
|
|
|
|
### Runtime / Dynamic Linker
|
|
| Category | ID | Name | Description | Arg1 | Arg2 | Arg3 | Arg4 | Result | Status |
|
|
|----------|-----|------|-------------|------|------|------|------|--------|--------|
|
|
| | | | | | | | | | |
|
|
|
|
### Compatibility & Safety
|
|
| Category | ID | Name | Description | Arg1 | Arg2 | Arg3 | Arg4 | Result | Status |
|
|
|----------|-----|------|-------------|------|------|------|------|--------|--------|
|
|
| | | | | | | | | | |
|
|
|
|
### Kernel
|
|
The kernel syscalls can only be called from the kernels main process [link to processing article needed].
|
|
If another process calls them, they will just return without doing anything.
|
|
|
|
|
|
| Category | ID | Name | Description | Arg1 | Arg2 | Arg3 | Arg4 | Result | Status |
|
|
|----------|-----|------|-------------|------|------|------|------|--------|--------|
|
|
| | | | | | | | | | |
|
|
|