CS350 COS
COS
Loading...
Searching...
No Matches
syscall.h File Reference

Go to the source code of this file.

Macros

#define SYSCALL_NULL   0x00
 
#define SYSCALL_TIME   0x01
 
#define SYSCALL_GETPID   0x02
 
#define SYSCALL_EXIT   0x03
 
#define SYSCALL_SPAWN   0x04
 
#define SYSCALL_WAIT   0x05
 
#define SYSCALL_MMAP   0x08
 
#define SYSCALL_MUNMAP   0x09
 
#define SYSCALL_MPROTECT   0x0A
 
#define SYSCALL_READ   0x10
 
#define SYSCALL_WRITE   0x11
 
#define SYSCALL_FLUSH   0x12
 
#define SYSCALL_OPEN   0x18
 
#define SYSCALL_CLOSE   0x19
 
#define SYSCALL_MOVE   0x1A
 
#define SYSCALL_DELETE   0x1B
 
#define SYSCALL_SETLENGTH   0x1C
 
#define SYSCALL_STAT   0x1D
 
#define SYSCALL_READDIR   0x1E
 
#define SYSCALL_PIPE   0x20
 
#define SYSCALL_THREADCREATE   0x30
 
#define SYSCALL_GETTID   0x31
 
#define SYSCALL_THREADEXIT   0x32
 
#define SYSCALL_THREADSLEEP   0x33
 
#define SYSCALL_THREADWAIT   0x34
 
#define SYSCALL_NICSTAT   0x40
 
#define SYSCALL_NICSEND   0x41
 
#define SYSCALL_NICRECV   0x42
 
#define SYSCALL_SYSCTL   0x80
 
#define SYSCALL_FSMOUNT   0x81
 
#define SYSCALL_FSUNMOUNT   0x82
 
#define SYSCALL_FSINFO   0x83
 
#define SYSCALL_PACK(_errcode, _val)   (((uint64_t)_errcode << 32) | (_val))
 
#define SYSCALL_ERRCODE(_result)   (_result >> 32)
 
#define SYSCALL_VALUE(_result)   (_result & 0xFFFFFFFF)
 

Functions

uint64_t Syscall_Entry (uint64_t syscall, uint64_t a1, uint64_t a2, uint64_t a3, uint64_t a4, uint64_t a5)
 

Macro Definition Documentation

◆ SYSCALL_CLOSE

#define SYSCALL_CLOSE   0x19

Definition at line 24 of file syscall.h.

◆ SYSCALL_DELETE

#define SYSCALL_DELETE   0x1B

Definition at line 26 of file syscall.h.

◆ SYSCALL_ERRCODE

#define SYSCALL_ERRCODE (   _result)    (_result >> 32)

Definition at line 56 of file syscall.h.

◆ SYSCALL_EXIT

#define SYSCALL_EXIT   0x03

Definition at line 8 of file syscall.h.

◆ SYSCALL_FLUSH

#define SYSCALL_FLUSH   0x12

Definition at line 20 of file syscall.h.

◆ SYSCALL_FSINFO

#define SYSCALL_FSINFO   0x83

Definition at line 50 of file syscall.h.

◆ SYSCALL_FSMOUNT

#define SYSCALL_FSMOUNT   0x81

Definition at line 48 of file syscall.h.

◆ SYSCALL_FSUNMOUNT

#define SYSCALL_FSUNMOUNT   0x82

Definition at line 49 of file syscall.h.

◆ SYSCALL_GETPID

#define SYSCALL_GETPID   0x02

Definition at line 7 of file syscall.h.

◆ SYSCALL_GETTID

#define SYSCALL_GETTID   0x31

Definition at line 36 of file syscall.h.

◆ SYSCALL_MMAP

#define SYSCALL_MMAP   0x08

Definition at line 13 of file syscall.h.

◆ SYSCALL_MOVE

#define SYSCALL_MOVE   0x1A

Definition at line 25 of file syscall.h.

◆ SYSCALL_MPROTECT

#define SYSCALL_MPROTECT   0x0A

Definition at line 15 of file syscall.h.

◆ SYSCALL_MUNMAP

#define SYSCALL_MUNMAP   0x09

Definition at line 14 of file syscall.h.

◆ SYSCALL_NICRECV

#define SYSCALL_NICRECV   0x42

Definition at line 44 of file syscall.h.

◆ SYSCALL_NICSEND

#define SYSCALL_NICSEND   0x41

Definition at line 43 of file syscall.h.

◆ SYSCALL_NICSTAT

#define SYSCALL_NICSTAT   0x40

Definition at line 42 of file syscall.h.

◆ SYSCALL_NULL

#define SYSCALL_NULL   0x00

Definition at line 5 of file syscall.h.

◆ SYSCALL_OPEN

#define SYSCALL_OPEN   0x18

Definition at line 23 of file syscall.h.

◆ SYSCALL_PACK

#define SYSCALL_PACK (   _errcode,
  _val 
)    (((uint64_t)_errcode << 32) | (_val))

Definition at line 55 of file syscall.h.

◆ SYSCALL_PIPE

#define SYSCALL_PIPE   0x20

Definition at line 32 of file syscall.h.

◆ SYSCALL_READ

#define SYSCALL_READ   0x10

Definition at line 18 of file syscall.h.

◆ SYSCALL_READDIR

#define SYSCALL_READDIR   0x1E

Definition at line 29 of file syscall.h.

◆ SYSCALL_SETLENGTH

#define SYSCALL_SETLENGTH   0x1C

Definition at line 27 of file syscall.h.

◆ SYSCALL_SPAWN

#define SYSCALL_SPAWN   0x04

Definition at line 9 of file syscall.h.

◆ SYSCALL_STAT

#define SYSCALL_STAT   0x1D

Definition at line 28 of file syscall.h.

◆ SYSCALL_SYSCTL

#define SYSCALL_SYSCTL   0x80

Definition at line 47 of file syscall.h.

◆ SYSCALL_THREADCREATE

#define SYSCALL_THREADCREATE   0x30

Definition at line 35 of file syscall.h.

◆ SYSCALL_THREADEXIT

#define SYSCALL_THREADEXIT   0x32

Definition at line 37 of file syscall.h.

◆ SYSCALL_THREADSLEEP

#define SYSCALL_THREADSLEEP   0x33

Definition at line 38 of file syscall.h.

◆ SYSCALL_THREADWAIT

#define SYSCALL_THREADWAIT   0x34

Definition at line 39 of file syscall.h.

◆ SYSCALL_TIME

#define SYSCALL_TIME   0x01

Definition at line 6 of file syscall.h.

◆ SYSCALL_VALUE

#define SYSCALL_VALUE (   _result)    (_result & 0xFFFFFFFF)

Definition at line 57 of file syscall.h.

◆ SYSCALL_WAIT

#define SYSCALL_WAIT   0x05

Definition at line 10 of file syscall.h.

◆ SYSCALL_WRITE

#define SYSCALL_WRITE   0x11

Definition at line 19 of file syscall.h.

Function Documentation

◆ Syscall_Entry()

uint64_t Syscall_Entry ( uint64_t  syscall,
uint64_t  a1,
uint64_t  a2,
uint64_t  a3,
uint64_t  a4,
uint64_t  a5 
)

Definition at line 673 of file syscall.c.

675{
676 switch (syscall)
677 {
678 case SYSCALL_NULL:
679 return 0;
680 case SYSCALL_TIME:
681 return Syscall_Time();
682 case SYSCALL_GETPID:
683 return Syscall_GetPID();
684 case SYSCALL_EXIT:
685 Syscall_Exit(a1);
686 return 0; // To eliminate warning
687 case SYSCALL_SPAWN:
688 return Syscall_Spawn(a1, a2);
689 case SYSCALL_WAIT:
690 return Syscall_Wait(a1);
691 case SYSCALL_MMAP:
692 return Syscall_MMap(a1, a2, a3);
693 case SYSCALL_MUNMAP:
694 return Syscall_MUnmap(a1, a2);
695 case SYSCALL_MPROTECT:
696 return Syscall_MProtect(a1, a2, a3);
697 case SYSCALL_READ:
698 return Syscall_Read(a1, a2, a3, a4);
699 case SYSCALL_WRITE:
700 return Syscall_Write(a1, a2, a3, a4);
701 case SYSCALL_FLUSH:
702 return Syscall_Flush(a1);
703 case SYSCALL_OPEN:
704 return Syscall_Open(a1, a2);
705 case SYSCALL_CLOSE:
706 return Syscall_Close(a1);
707 case SYSCALL_STAT:
708 return Syscall_Stat(a1, a2);
709 case SYSCALL_READDIR:
710 return Syscall_ReadDir(a1, (char *)a2, a3, a4);
712 return Syscall_ThreadCreate(a1, a2);
713 case SYSCALL_GETTID:
714 return Syscall_GetTID();
717 return 0;
719 return Syscall_ThreadSleep(a1);
721 return Syscall_ThreadWait(a1);
722 case SYSCALL_NICSTAT:
723 return Syscall_NICStat(a1, a2);
724 case SYSCALL_NICSEND:
725 return Syscall_NICSend(a1, a2);
726 case SYSCALL_NICRECV:
727 return Syscall_NICRecv(a1, a2);
728 case SYSCALL_SYSCTL:
729 return Syscall_SysCtl(a1, a2, a3);
730 case SYSCALL_FSMOUNT:
731 return Syscall_FSMount(a1, a2, a3);
733 return Syscall_FSUnmount(a1);
734 case SYSCALL_FSINFO:
735 return Syscall_FSInfo(a1, a2);
736 default:
737 return SYSCALL_PACK(ENOSYS, 0);
738 }
739}
#define ENOSYS
Definition: errno.h:18
uint64_t syscall(int num,...)
#define SYSCALL_SPAWN
Definition: syscall.h:9
#define SYSCALL_NICSTAT
Definition: syscall.h:42
#define SYSCALL_GETPID
Definition: syscall.h:7
#define SYSCALL_MUNMAP
Definition: syscall.h:14
#define SYSCALL_NULL
Definition: syscall.h:5
#define SYSCALL_FLUSH
Definition: syscall.h:20
#define SYSCALL_FSUNMOUNT
Definition: syscall.h:49
#define SYSCALL_MMAP
Definition: syscall.h:13
#define SYSCALL_STAT
Definition: syscall.h:28
#define SYSCALL_NICSEND
Definition: syscall.h:43
#define SYSCALL_THREADEXIT
Definition: syscall.h:37
#define SYSCALL_THREADCREATE
Definition: syscall.h:35
#define SYSCALL_EXIT
Definition: syscall.h:8
#define SYSCALL_CLOSE
Definition: syscall.h:24
#define SYSCALL_WAIT
Definition: syscall.h:10
#define SYSCALL_WRITE
Definition: syscall.h:19
#define SYSCALL_GETTID
Definition: syscall.h:36
#define SYSCALL_MPROTECT
Definition: syscall.h:15
#define SYSCALL_THREADSLEEP
Definition: syscall.h:38
#define SYSCALL_FSINFO
Definition: syscall.h:50
#define SYSCALL_TIME
Definition: syscall.h:6
#define SYSCALL_SYSCTL
Definition: syscall.h:47
#define SYSCALL_PACK(_errcode, _val)
Definition: syscall.h:55
#define SYSCALL_NICRECV
Definition: syscall.h:44
#define SYSCALL_FSMOUNT
Definition: syscall.h:48
#define SYSCALL_READDIR
Definition: syscall.h:29
#define SYSCALL_OPEN
Definition: syscall.h:23
#define SYSCALL_READ
Definition: syscall.h:18
#define SYSCALL_THREADWAIT
Definition: syscall.h:39
uint64_t Syscall_Stat(uint64_t user_path, uint64_t user_stat)
Definition: syscall.c:332
uint64_t Syscall_MProtect(uint64_t addr, uint64_t len, uint64_t prot)
Definition: syscall.c:211
uint64_t Syscall_GetPID()
Definition: syscall.c:34
uint64_t Syscall_FSMount(uint64_t user_mntpt, uint64_t user_device, uint64_t flags)
Definition: syscall.c:655
uint64_t Syscall_NICRecv(uint64_t nicNo, uint64_t user_mbuf)
Definition: syscall.c:550
uint64_t Syscall_SysCtl(uint64_t user_node, uint64_t user_oldval, uint64_t user_newval)
Definition: syscall.c:574
uint64_t Syscall_GetTID()
Definition: syscall.c:417
uint64_t Syscall_Read(uint64_t fd, uint64_t addr, uint64_t off, uint64_t length)
Definition: syscall.c:219
uint64_t Syscall_Open(uint64_t user_path, uint64_t flags)
Definition: syscall.c:276
void Syscall_Exit(uint64_t status)
Definition: syscall.c:45
uint64_t Syscall_ThreadSleep(uint64_t time)
Definition: syscall.c:456
uint64_t Syscall_ReadDir(uint64_t fd, char *user_buf, size_t len, uintptr_t user_off)
Definition: syscall.c:358
uint64_t Syscall_FSInfo(uint64_t user_fsinfo, uint64_t max)
Definition: syscall.c:667
uint64_t Syscall_MMap(uint64_t addr, uint64_t len, uint64_t prot)
Definition: syscall.c:178
uint64_t Syscall_FSUnmount(uint64_t user_mntpt)
Definition: syscall.c:661
uint64_t Syscall_ThreadWait(uint64_t tid)
Definition: syscall.c:480
uint64_t Syscall_NICSend(uint64_t nicNo, uint64_t user_mbuf)
Definition: syscall.c:526
uint64_t Syscall_Write(uint64_t fd, uint64_t addr, uint64_t off, uint64_t length)
Definition: syscall.c:237
uint64_t Syscall_Spawn(uint64_t user_path, uint64_t user_argv)
Definition: syscall.c:68
uint64_t Syscall_ThreadCreate(uint64_t rip, uint64_t arg)
Definition: syscall.c:399
void Syscall_ThreadExit(uint64_t status)
Definition: syscall.c:428
uint64_t Syscall_NICStat(uint64_t nicNo, uint64_t user_stat)
Definition: syscall.c:507
uint64_t Syscall_Flush(uint64_t fd)
Definition: syscall.c:255
uint64_t Syscall_MUnmap(uint64_t addr, uint64_t len)
Definition: syscall.c:194
uint64_t Syscall_Close(uint64_t fd)
Definition: syscall.c:314
uint64_t Syscall_Time()
Definition: syscall.c:28
uint64_t Syscall_Wait(uint64_t pid)
Definition: syscall.c:166
Here is the call graph for this function:
Here is the caller graph for this function: