FrostWing
A lightweight raw-control operating system.
Loading...
Searching...
No Matches
syscalls.h File Reference
#include <basics.h>
#include <isr.h>
Include dependency graph for syscalls.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  syscall_frame

Macros

#define PRAD_MAGIC   0xBADF00D
#define LINUX_SYS_READ   0
#define LINUX_SYS_WRITE   1
#define LINUX_SYS_OPEN   2
#define LINUX_SYS_CLOSE   3
#define LINUX_SYS_STAT   4
#define LINUX_SYS_FSTAT   5
#define LINUX_SYS_LSTAT   6
#define LINUX_SYS_LSEEK   8
#define LINUX_SYS_MMAP   9
#define LINUX_SYS_MPROTECT   10
#define LINUX_SYS_MUNMAP   11
#define LINUX_SYS_BRK   12
#define LINUX_SYS_RT_SIGACTION   13
#define LINUX_SYS_RT_SIGPROCMASK   14
#define LINUX_SYS_IOCTL   16
#define LINUX_SYS_ACCESS   21
#define LINUX_SYS_WRITEV   20
#define LINUX_SYS_DUP   32
#define LINUX_SYS_DUP2   33
#define LINUX_SYS_NANOSLEEP   35
#define LINUX_SYS_GETPID   39
#define LINUX_SYS_FORK   57
#define LINUX_SYS_EXECVE   59
#define LINUX_SYS_EXIT   60
#define LINUX_SYS_CHDIR   80
#define LINUX_SYS_UNAME   63
#define LINUX_SYS_FCNTL   72
#define LINUX_SYS_GETCWD   79
#define LINUX_SYS_READLINK   89
#define LINUX_SYS_UMASK   95
#define LINUX_SYS_GETUID   102
#define LINUX_SYS_GETEUID   107
#define LINUX_SYS_GETGID   104
#define LINUX_SYS_GETEGID   108
#define LINUX_SYS_GETPPID   110
#define LINUX_SYS_SIGALTSTACK   131
#define LINUX_SYS_ARCH_PRCTL   158
#define LINUX_SYS_GETTID   186
#define LINUX_SYS_FUTEX   202
#define LINUX_SYS_GETDENTS64   217
#define LINUX_SYS_SET_TID_ADDRESS   218
#define LINUX_SYS_CLOCK_GETTIME   228
#define LINUX_SYS_OPENAT   257
#define LINUX_SYS_NEWFSTATAT   262
#define LINUX_SYS_READLINKAT   267
#define LINUX_SYS_FACCESSAT   269
#define LINUX_SYS_SET_ROBUST_LIST   273
#define LINUX_SYS_PRLIMIT64   302
#define LINUX_SYS_GETRANDOM   318
#define LINUX_SYS_STATX   332
#define LINUX_SYS_EXIT_GROUP   231
#define LINUX_SYS_TGKILL   234
#define LINUX_EAGAIN   11
#define LINUX_AT_FDCWD   (-100)
#define LINUX_O_RDONLY   0x0000
#define LINUX_O_WRONLY   0x0001
#define LINUX_O_RDWR   0x0002
#define LINUX_O_CREAT   0x0040
#define LINUX_O_TRUNC   0x0200
#define LINUX_O_APPEND   0x0400
#define LINUX_SEEK_SET   0
#define LINUX_SEEK_CUR   1
#define LINUX_SEEK_END   2
#define LINUX_EBADF   9
#define LINUX_EACCES   13
#define LINUX_EINVAL   22
#define LINUX_ENOEXEC   8
#define LINUX_ENOTTY   25
#define LINUX_ENOSYS   38
#define LINUX_ENFILE   23
#define LINUX_ENOENT   2
#define LINUX_ENOMEM   12
#define LINUX_ERANGE   34
#define LINUX_ENOTDIR   20
#define LINUX_S_IFMT   00170000
#define LINUX_S_IFDIR   0040000
#define LINUX_S_IFREG   0100000
#define LINUX_S_IFCHR   0020000
#define LINUX_AT_SYMLINK_NOFOLLOW   0x100
#define LINUX_AT_EMPTY_PATH   0x1000
#define LINUX_F_DUPFD   0
#define LINUX_F_GETFD   1
#define LINUX_F_SETFD   2
#define LINUX_F_GETFL   3
#define LINUX_F_SETFL   4
#define LINUX_TIOCGWINSZ   0x5413
#define LINUX_TCGETS   0x5401
#define LINUX_TCSETS   0x5402
#define LINUX_TCSETSW   0x5403
#define LINUX_TCSETSF   0x5404
#define LINUX_TIOCGPGRP   0x540F
#define LINUX_TIOCSPGRP   0x5410
#define LINUX_ARCH_SET_FS   0x1002
#define LINUX_ARCH_GET_FS   0x1003
#define LINUX_CLOCK_REALTIME   0
#define LINUX_CLOCK_MONOTONIC   1
#define IA32_FS_BASE_MSR   0xC0000100
#define PROC_FILE_COUNT   3
#define FW_SYS_GETC   0x1000
#define FW_SYS_GETC_NB   0x1001
#define FW_SYS_PUTC   0x1002
#define FW_SYS_LOGIN   0x1055
#define linux_syscalls_prefix   "Linux syscall: "
 Prefix for linux-compatible syscall traces.

Typedefs

typedef struct syscall_frame syscall_frame_t

Functions

void int80_handler (InterruptFrame *frame)
 Wrapper for the dispatcher which gets called for interrupt number 0x80.
void syscall_handler (syscall_frame_t *f)
 Wrapper for the dispatcher which gets called for running the syscall instruction.
uint64_t syscall_dispatch (uint64_t nr, uint64_t arg1, uint64_t arg2, uint64_t arg3, uint64_t arg4, uint64_t arg5, uint64_t arg6)
 Dispatches syscall based on the syscall number.

Detailed Description

Author
Pradosh (prado.nosp@m.shga.nosp@m.me@gm.nosp@m.ail..nosp@m.com)
Version
0.1
Date
2024-01-05

Definition in file syscalls.h.

Macro Definition Documentation

◆ FW_SYS_GETC

#define FW_SYS_GETC   0x1000

Definition at line 131 of file syscalls.h.

◆ FW_SYS_GETC_NB

#define FW_SYS_GETC_NB   0x1001

Definition at line 132 of file syscalls.h.

◆ FW_SYS_LOGIN

#define FW_SYS_LOGIN   0x1055

Definition at line 134 of file syscalls.h.

◆ FW_SYS_PUTC

#define FW_SYS_PUTC   0x1002

Definition at line 133 of file syscalls.h.

◆ IA32_FS_BASE_MSR

#define IA32_FS_BASE_MSR   0xC0000100

Definition at line 127 of file syscalls.h.

◆ LINUX_ARCH_GET_FS

#define LINUX_ARCH_GET_FS   0x1003

Definition at line 122 of file syscalls.h.

◆ LINUX_ARCH_SET_FS

#define LINUX_ARCH_SET_FS   0x1002

Definition at line 121 of file syscalls.h.

◆ LINUX_AT_EMPTY_PATH

#define LINUX_AT_EMPTY_PATH   0x1000

Definition at line 105 of file syscalls.h.

◆ LINUX_AT_FDCWD

#define LINUX_AT_FDCWD   (-100)

Definition at line 74 of file syscalls.h.

◆ LINUX_AT_SYMLINK_NOFOLLOW

#define LINUX_AT_SYMLINK_NOFOLLOW   0x100

Definition at line 104 of file syscalls.h.

◆ LINUX_CLOCK_MONOTONIC

#define LINUX_CLOCK_MONOTONIC   1

Definition at line 125 of file syscalls.h.

◆ LINUX_CLOCK_REALTIME

#define LINUX_CLOCK_REALTIME   0

Definition at line 124 of file syscalls.h.

◆ LINUX_EACCES

#define LINUX_EACCES   13

Definition at line 88 of file syscalls.h.

◆ LINUX_EAGAIN

#define LINUX_EAGAIN   11

Definition at line 72 of file syscalls.h.

◆ LINUX_EBADF

#define LINUX_EBADF   9

Definition at line 87 of file syscalls.h.

◆ LINUX_EINVAL

#define LINUX_EINVAL   22

Definition at line 89 of file syscalls.h.

◆ LINUX_ENFILE

#define LINUX_ENFILE   23

Definition at line 93 of file syscalls.h.

◆ LINUX_ENOENT

#define LINUX_ENOENT   2

Definition at line 94 of file syscalls.h.

◆ LINUX_ENOEXEC

#define LINUX_ENOEXEC   8

Definition at line 90 of file syscalls.h.

◆ LINUX_ENOMEM

#define LINUX_ENOMEM   12

Definition at line 95 of file syscalls.h.

◆ LINUX_ENOSYS

#define LINUX_ENOSYS   38

Definition at line 92 of file syscalls.h.

◆ LINUX_ENOTDIR

#define LINUX_ENOTDIR   20

Definition at line 97 of file syscalls.h.

◆ LINUX_ENOTTY

#define LINUX_ENOTTY   25

Definition at line 91 of file syscalls.h.

◆ LINUX_ERANGE

#define LINUX_ERANGE   34

Definition at line 96 of file syscalls.h.

◆ LINUX_F_DUPFD

#define LINUX_F_DUPFD   0

Definition at line 107 of file syscalls.h.

◆ LINUX_F_GETFD

#define LINUX_F_GETFD   1

Definition at line 108 of file syscalls.h.

◆ LINUX_F_GETFL

#define LINUX_F_GETFL   3

Definition at line 110 of file syscalls.h.

◆ LINUX_F_SETFD

#define LINUX_F_SETFD   2

Definition at line 109 of file syscalls.h.

◆ LINUX_F_SETFL

#define LINUX_F_SETFL   4

Definition at line 111 of file syscalls.h.

◆ LINUX_O_APPEND

#define LINUX_O_APPEND   0x0400

Definition at line 81 of file syscalls.h.

◆ LINUX_O_CREAT

#define LINUX_O_CREAT   0x0040

Definition at line 79 of file syscalls.h.

◆ LINUX_O_RDONLY

#define LINUX_O_RDONLY   0x0000

Definition at line 76 of file syscalls.h.

◆ LINUX_O_RDWR

#define LINUX_O_RDWR   0x0002

Definition at line 78 of file syscalls.h.

◆ LINUX_O_TRUNC

#define LINUX_O_TRUNC   0x0200

Definition at line 80 of file syscalls.h.

◆ LINUX_O_WRONLY

#define LINUX_O_WRONLY   0x0001

Definition at line 77 of file syscalls.h.

◆ LINUX_S_IFCHR

#define LINUX_S_IFCHR   0020000

Definition at line 102 of file syscalls.h.

◆ LINUX_S_IFDIR

#define LINUX_S_IFDIR   0040000

Definition at line 100 of file syscalls.h.

◆ LINUX_S_IFMT

#define LINUX_S_IFMT   00170000

Definition at line 99 of file syscalls.h.

◆ LINUX_S_IFREG

#define LINUX_S_IFREG   0100000

Definition at line 101 of file syscalls.h.

◆ LINUX_SEEK_CUR

#define LINUX_SEEK_CUR   1

Definition at line 84 of file syscalls.h.

◆ LINUX_SEEK_END

#define LINUX_SEEK_END   2

Definition at line 85 of file syscalls.h.

◆ LINUX_SEEK_SET

#define LINUX_SEEK_SET   0

Definition at line 83 of file syscalls.h.

◆ LINUX_SYS_ACCESS

#define LINUX_SYS_ACCESS   21

Definition at line 34 of file syscalls.h.

◆ LINUX_SYS_ARCH_PRCTL

#define LINUX_SYS_ARCH_PRCTL   158

Definition at line 55 of file syscalls.h.

◆ LINUX_SYS_BRK

#define LINUX_SYS_BRK   12

Definition at line 30 of file syscalls.h.

◆ LINUX_SYS_CHDIR

#define LINUX_SYS_CHDIR   80

Definition at line 43 of file syscalls.h.

◆ LINUX_SYS_CLOCK_GETTIME

#define LINUX_SYS_CLOCK_GETTIME   228

Definition at line 60 of file syscalls.h.

◆ LINUX_SYS_CLOSE

#define LINUX_SYS_CLOSE   3

Definition at line 22 of file syscalls.h.

◆ LINUX_SYS_DUP

#define LINUX_SYS_DUP   32

Definition at line 36 of file syscalls.h.

◆ LINUX_SYS_DUP2

#define LINUX_SYS_DUP2   33

Definition at line 37 of file syscalls.h.

◆ LINUX_SYS_EXECVE

#define LINUX_SYS_EXECVE   59

Definition at line 41 of file syscalls.h.

◆ LINUX_SYS_EXIT

#define LINUX_SYS_EXIT   60

Definition at line 42 of file syscalls.h.

◆ LINUX_SYS_EXIT_GROUP

#define LINUX_SYS_EXIT_GROUP   231

Definition at line 69 of file syscalls.h.

◆ LINUX_SYS_FACCESSAT

#define LINUX_SYS_FACCESSAT   269

Definition at line 64 of file syscalls.h.

◆ LINUX_SYS_FCNTL

#define LINUX_SYS_FCNTL   72

Definition at line 45 of file syscalls.h.

◆ LINUX_SYS_FORK

#define LINUX_SYS_FORK   57

Definition at line 40 of file syscalls.h.

◆ LINUX_SYS_FSTAT

#define LINUX_SYS_FSTAT   5

Definition at line 24 of file syscalls.h.

◆ LINUX_SYS_FUTEX

#define LINUX_SYS_FUTEX   202

Definition at line 57 of file syscalls.h.

◆ LINUX_SYS_GETCWD

#define LINUX_SYS_GETCWD   79

Definition at line 46 of file syscalls.h.

◆ LINUX_SYS_GETDENTS64

#define LINUX_SYS_GETDENTS64   217

Definition at line 58 of file syscalls.h.

◆ LINUX_SYS_GETEGID

#define LINUX_SYS_GETEGID   108

Definition at line 52 of file syscalls.h.

◆ LINUX_SYS_GETEUID

#define LINUX_SYS_GETEUID   107

Definition at line 50 of file syscalls.h.

◆ LINUX_SYS_GETGID

#define LINUX_SYS_GETGID   104

Definition at line 51 of file syscalls.h.

◆ LINUX_SYS_GETPID

#define LINUX_SYS_GETPID   39

Definition at line 39 of file syscalls.h.

◆ LINUX_SYS_GETPPID

#define LINUX_SYS_GETPPID   110

Definition at line 53 of file syscalls.h.

◆ LINUX_SYS_GETRANDOM

#define LINUX_SYS_GETRANDOM   318

Definition at line 67 of file syscalls.h.

◆ LINUX_SYS_GETTID

#define LINUX_SYS_GETTID   186

Definition at line 56 of file syscalls.h.

◆ LINUX_SYS_GETUID

#define LINUX_SYS_GETUID   102

Definition at line 49 of file syscalls.h.

◆ LINUX_SYS_IOCTL

#define LINUX_SYS_IOCTL   16

Definition at line 33 of file syscalls.h.

◆ LINUX_SYS_LSEEK

#define LINUX_SYS_LSEEK   8

Definition at line 26 of file syscalls.h.

◆ LINUX_SYS_LSTAT

#define LINUX_SYS_LSTAT   6

Definition at line 25 of file syscalls.h.

◆ LINUX_SYS_MMAP

#define LINUX_SYS_MMAP   9

Definition at line 27 of file syscalls.h.

◆ LINUX_SYS_MPROTECT

#define LINUX_SYS_MPROTECT   10

Definition at line 28 of file syscalls.h.

◆ LINUX_SYS_MUNMAP

#define LINUX_SYS_MUNMAP   11

Definition at line 29 of file syscalls.h.

◆ LINUX_SYS_NANOSLEEP

#define LINUX_SYS_NANOSLEEP   35

Definition at line 38 of file syscalls.h.

◆ LINUX_SYS_NEWFSTATAT

#define LINUX_SYS_NEWFSTATAT   262

Definition at line 62 of file syscalls.h.

◆ LINUX_SYS_OPEN

#define LINUX_SYS_OPEN   2

Definition at line 21 of file syscalls.h.

◆ LINUX_SYS_OPENAT

#define LINUX_SYS_OPENAT   257

Definition at line 61 of file syscalls.h.

◆ LINUX_SYS_PRLIMIT64

#define LINUX_SYS_PRLIMIT64   302

Definition at line 66 of file syscalls.h.

◆ LINUX_SYS_READ

#define LINUX_SYS_READ   0

Definition at line 19 of file syscalls.h.

◆ LINUX_SYS_READLINK

#define LINUX_SYS_READLINK   89

Definition at line 47 of file syscalls.h.

◆ LINUX_SYS_READLINKAT

#define LINUX_SYS_READLINKAT   267

Definition at line 63 of file syscalls.h.

◆ LINUX_SYS_RT_SIGACTION

#define LINUX_SYS_RT_SIGACTION   13

Definition at line 31 of file syscalls.h.

◆ LINUX_SYS_RT_SIGPROCMASK

#define LINUX_SYS_RT_SIGPROCMASK   14

Definition at line 32 of file syscalls.h.

◆ LINUX_SYS_SET_ROBUST_LIST

#define LINUX_SYS_SET_ROBUST_LIST   273

Definition at line 65 of file syscalls.h.

◆ LINUX_SYS_SET_TID_ADDRESS

#define LINUX_SYS_SET_TID_ADDRESS   218

Definition at line 59 of file syscalls.h.

◆ LINUX_SYS_SIGALTSTACK

#define LINUX_SYS_SIGALTSTACK   131

Definition at line 54 of file syscalls.h.

◆ LINUX_SYS_STAT

#define LINUX_SYS_STAT   4

Definition at line 23 of file syscalls.h.

◆ LINUX_SYS_STATX

#define LINUX_SYS_STATX   332

Definition at line 68 of file syscalls.h.

◆ LINUX_SYS_TGKILL

#define LINUX_SYS_TGKILL   234

Definition at line 70 of file syscalls.h.

◆ LINUX_SYS_UMASK

#define LINUX_SYS_UMASK   95

Definition at line 48 of file syscalls.h.

◆ LINUX_SYS_UNAME

#define LINUX_SYS_UNAME   63

Definition at line 44 of file syscalls.h.

◆ LINUX_SYS_WRITE

#define LINUX_SYS_WRITE   1

Definition at line 20 of file syscalls.h.

◆ LINUX_SYS_WRITEV

#define LINUX_SYS_WRITEV   20

Definition at line 35 of file syscalls.h.

◆ linux_syscalls_prefix

#define linux_syscalls_prefix   "Linux syscall: "

Prefix for linux-compatible syscall traces.

Definition at line 155 of file syscalls.h.

◆ LINUX_TCGETS

#define LINUX_TCGETS   0x5401

Definition at line 114 of file syscalls.h.

◆ LINUX_TCSETS

#define LINUX_TCSETS   0x5402

Definition at line 115 of file syscalls.h.

◆ LINUX_TCSETSF

#define LINUX_TCSETSF   0x5404

Definition at line 117 of file syscalls.h.

◆ LINUX_TCSETSW

#define LINUX_TCSETSW   0x5403

Definition at line 116 of file syscalls.h.

◆ LINUX_TIOCGPGRP

#define LINUX_TIOCGPGRP   0x540F

Definition at line 118 of file syscalls.h.

◆ LINUX_TIOCGWINSZ

#define LINUX_TIOCGWINSZ   0x5413

Definition at line 113 of file syscalls.h.

◆ LINUX_TIOCSPGRP

#define LINUX_TIOCSPGRP   0x5410

Definition at line 119 of file syscalls.h.

◆ PRAD_MAGIC

#define PRAD_MAGIC   0xBADF00D

Definition at line 17 of file syscalls.h.

◆ PROC_FILE_COUNT

#define PROC_FILE_COUNT   3

Definition at line 129 of file syscalls.h.

Function Documentation

◆ int80_handler()

void int80_handler ( InterruptFrame * frame)

Wrapper for the dispatcher which gets called for interrupt number 0x80.

Parameters
frame

◆ syscall_dispatch()

uint64_t syscall_dispatch ( uint64_t nr,
uint64_t arg1,
uint64_t arg2,
uint64_t arg3,
uint64_t arg4,
uint64_t arg5,
uint64_t arg6 )

Dispatches syscall based on the syscall number.

Parameters
nr
arg1
arg2
arg3
arg4
arg5
arg6
Returns
uint64_t

◆ syscall_handler()

void syscall_handler ( syscall_frame_t * f)

Wrapper for the dispatcher which gets called for running the syscall instruction.

Parameters
f