mirror of
https://github.com/Leonmmcoset/cleonos.git
synced 2026-04-21 10:40:00 +00:00
130 lines
2.6 KiB
Python
130 lines
2.6 KiB
Python
from __future__ import annotations
|
|
|
|
U64_MASK = (1 << 64) - 1
|
|
PAGE_SIZE = 0x1000
|
|
MAX_CSTR = 4096
|
|
MAX_IO_READ = 1 << 20
|
|
DEFAULT_MAX_EXEC_DEPTH = 6
|
|
FS_NAME_MAX = 96
|
|
|
|
# CLeonOS syscall IDs from cleonos/c/include/cleonos_syscall.h
|
|
SYS_LOG_WRITE = 0
|
|
SYS_TIMER_TICKS = 1
|
|
SYS_TASK_COUNT = 2
|
|
SYS_CUR_TASK = 3
|
|
SYS_SERVICE_COUNT = 4
|
|
SYS_SERVICE_READY_COUNT = 5
|
|
SYS_CONTEXT_SWITCHES = 6
|
|
SYS_KELF_COUNT = 7
|
|
SYS_KELF_RUNS = 8
|
|
SYS_FS_NODE_COUNT = 9
|
|
SYS_FS_CHILD_COUNT = 10
|
|
SYS_FS_GET_CHILD_NAME = 11
|
|
SYS_FS_READ = 12
|
|
SYS_EXEC_PATH = 13
|
|
SYS_EXEC_REQUESTS = 14
|
|
SYS_EXEC_SUCCESS = 15
|
|
SYS_USER_SHELL_READY = 16
|
|
SYS_USER_EXEC_REQUESTED = 17
|
|
SYS_USER_LAUNCH_TRIES = 18
|
|
SYS_USER_LAUNCH_OK = 19
|
|
SYS_USER_LAUNCH_FAIL = 20
|
|
SYS_TTY_COUNT = 21
|
|
SYS_TTY_ACTIVE = 22
|
|
SYS_TTY_SWITCH = 23
|
|
SYS_TTY_WRITE = 24
|
|
SYS_TTY_WRITE_CHAR = 25
|
|
SYS_KBD_GET_CHAR = 26
|
|
SYS_FS_STAT_TYPE = 27
|
|
SYS_FS_STAT_SIZE = 28
|
|
SYS_FS_MKDIR = 29
|
|
SYS_FS_WRITE = 30
|
|
SYS_FS_APPEND = 31
|
|
SYS_FS_REMOVE = 32
|
|
SYS_LOG_JOURNAL_COUNT = 33
|
|
SYS_LOG_JOURNAL_READ = 34
|
|
SYS_KBD_BUFFERED = 35
|
|
SYS_KBD_PUSHED = 36
|
|
SYS_KBD_POPPED = 37
|
|
SYS_KBD_DROPPED = 38
|
|
SYS_KBD_HOTKEY_SWITCHES = 39
|
|
SYS_GETPID = 40
|
|
SYS_SPAWN_PATH = 41
|
|
SYS_WAITPID = 42
|
|
SYS_EXIT = 43
|
|
SYS_SLEEP_TICKS = 44
|
|
SYS_YIELD = 45
|
|
SYS_SHUTDOWN = 46
|
|
SYS_RESTART = 47
|
|
SYS_AUDIO_AVAILABLE = 48
|
|
SYS_AUDIO_PLAY_TONE = 49
|
|
SYS_AUDIO_STOP = 50
|
|
SYS_EXEC_PATHV = 51
|
|
SYS_SPAWN_PATHV = 52
|
|
SYS_PROC_ARGC = 53
|
|
SYS_PROC_ARGV = 54
|
|
SYS_PROC_ENVC = 55
|
|
SYS_PROC_ENV = 56
|
|
SYS_PROC_LAST_SIGNAL = 57
|
|
SYS_PROC_FAULT_VECTOR = 58
|
|
SYS_PROC_FAULT_ERROR = 59
|
|
SYS_PROC_FAULT_RIP = 60
|
|
SYS_PROC_COUNT = 61
|
|
SYS_PROC_PID_AT = 62
|
|
SYS_PROC_SNAPSHOT = 63
|
|
SYS_PROC_KILL = 64
|
|
SYS_KDBG_SYM = 65
|
|
SYS_KDBG_BT = 66
|
|
SYS_KDBG_REGS = 67
|
|
SYS_STATS_TOTAL = 68
|
|
SYS_STATS_ID_COUNT = 69
|
|
SYS_STATS_RECENT_WINDOW = 70
|
|
SYS_STATS_RECENT_ID = 71
|
|
SYS_FD_OPEN = 72
|
|
SYS_FD_READ = 73
|
|
SYS_FD_WRITE = 74
|
|
SYS_FD_CLOSE = 75
|
|
SYS_FD_DUP = 76
|
|
SYS_DL_OPEN = 77
|
|
SYS_DL_CLOSE = 78
|
|
SYS_DL_SYM = 79
|
|
SYS_EXEC_PATHV_IO = 80
|
|
|
|
# proc states (from cleonos/c/include/cleonos_syscall.h)
|
|
PROC_STATE_UNUSED = 0
|
|
PROC_STATE_PENDING = 1
|
|
PROC_STATE_RUNNING = 2
|
|
PROC_STATE_EXITED = 3
|
|
PROC_STATE_STOPPED = 4
|
|
|
|
# signals (from cleonos/c/include/cleonos_syscall.h)
|
|
SIGKILL = 9
|
|
SIGTERM = 15
|
|
SIGCONT = 18
|
|
SIGSTOP = 19
|
|
|
|
# open flags (from cleonos/c/include/cleonos_syscall.h)
|
|
O_RDONLY = 0x0000
|
|
O_WRONLY = 0x0001
|
|
O_RDWR = 0x0002
|
|
O_CREAT = 0x0040
|
|
O_TRUNC = 0x0200
|
|
O_APPEND = 0x0400
|
|
FD_INHERIT = U64_MASK
|
|
|
|
|
|
def u64(value: int) -> int:
|
|
return value & U64_MASK
|
|
|
|
|
|
def u64_neg1() -> int:
|
|
return U64_MASK
|
|
|
|
|
|
def page_floor(addr: int) -> int:
|
|
return addr & ~(PAGE_SIZE - 1)
|
|
|
|
|
|
def page_ceil(addr: int) -> int:
|
|
return (addr + PAGE_SIZE - 1) & ~(PAGE_SIZE - 1)
|