Loading [MathJax]/extensions/tex2jax.js
CS350 COS
COS
All Data Structures Files Functions Variables Typedefs Macros
syscall.c
Go to the documentation of this file.
1
2#include <stdbool.h>
3#include <stdint.h>
4
5#include <sys/syscall.h>
6#include <syscall.h>
7
8uint64_t syscall(int num, ...);
9
12{
13 return syscall(SYSCALL_TIME);
14}
15
16void
17OSExit(int status)
18{
19 syscall(SYSCALL_EXIT, status);
20}
21
24{
25 return syscall(SYSCALL_GETPID);
26}
27
29OSSpawn(const char *path, const char *argv[])
30{
31 return syscall(SYSCALL_SPAWN, path, argv);
32}
33
36{
37 return syscall(SYSCALL_WAIT, pid);
38}
39
40void *
41OSMemMap(void *addr, uint64_t len, int flags)
42{
43 return (void *)syscall(SYSCALL_MMAP, addr, len, flags);
44}
45
46int
48{
50}
51
52int
53OSMemProtect(void *addr, uint64_t len, int flags)
54{
55 return syscall(SYSCALL_MPROTECT, addr, len, flags);
56}
57
58int
59OSRead(uint64_t fd, void *addr, uint64_t off, uint64_t length)
60{
61 return syscall(SYSCALL_READ, fd, addr, off, length);
62}
63
64int
65OSWrite(uint64_t fd, const void *addr, uint64_t off, uint64_t length)
66{
67 return syscall(SYSCALL_WRITE, fd, addr, off, length);
68}
69
70int
72{
73 return syscall(SYSCALL_FLUSH, fd);
74}
75
77OSOpen(const char *path, uint64_t flags)
78{
79 return syscall(SYSCALL_OPEN, path, flags);
80}
81
82int
84{
85 return syscall(SYSCALL_CLOSE, fd);
86}
87
88int
89OSStat(const char *path, struct stat *sb)
90{
91 return syscall(SYSCALL_STAT, path, sb);
92}
93
94int
95OSReadDir(uint64_t fd, char *buf, size_t length, uint64_t *offset)
96{
97 return syscall(SYSCALL_READDIR, fd, buf, length, offset);
98}
99
100int
102{
103 return syscall(SYSCALL_PIPE, &fd[0]);
104}
105
106int
108{
109 return syscall(SYSCALL_THREADCREATE, rip, arg);
110}
111
112int
114{
115 return syscall(SYSCALL_GETTID);
116}
117
118int
120{
121 return syscall(SYSCALL_THREADEXIT, status);
122}
123
124int
126{
128}
129
130int
132{
133 return syscall(SYSCALL_THREADWAIT, tid);
134}
135
136int
138{
139 return syscall(SYSCALL_NICSTAT, nicNo, nic);
140}
141
142int
144{
146}
147
148int
150{
152}
153
154int
155OSSysCtl(const char *node, void *oldvar, void *newvar)
156{
157 return syscall(SYSCALL_SYSCTL, node, oldvar, newvar);
158}
159
160int
161OSFSMount(const char *mntpt, const char *device, uint64_t flags)
162{
163 return syscall(SYSCALL_FSMOUNT, mntpt, device, flags);
164}
165
166int
167OSFSUnmount(const char *mntpt)
168{
169 return syscall(SYSCALL_FSUNMOUNT, mntpt);
170}
171
172int
173OSFSInfo(struct statfs *info, uint64_t max)
174{
175 return syscall(SYSCALL_FSINFO, info, max);
176}
177
static int nicNo
Definition: ethdump.c:9
static char buf[4096]
Definition: ethdump.c:10
static MBuf mbuf
Definition: ethdump.c:11
time_t time(time_t *t)
Definition: time.c:20
int OSSysCtl(const char *node, void *oldvar, void *newvar)
Definition: syscall.c:155
int OSFSUnmount(const char *mntpt)
Definition: syscall.c:167
int OSRead(uint64_t fd, void *addr, uint64_t off, uint64_t length)
Definition: syscall.c:59
uint64_t OSOpen(const char *path, uint64_t flags)
Definition: syscall.c:77
int OSClose(uint64_t fd)
Definition: syscall.c:83
int OSThreadSleep(uint64_t time)
Definition: syscall.c:125
uint64_t OSSpawn(const char *path, const char *argv[])
Definition: syscall.c:29
uint64_t OSTime()
Definition: syscall.c:11
int OSThreadExit(uint64_t status)
Definition: syscall.c:119
int OSGetTID()
Definition: syscall.c:113
int OSWrite(uint64_t fd, const void *addr, uint64_t off, uint64_t length)
Definition: syscall.c:65
int OSReadDir(uint64_t fd, char *buf, size_t length, uint64_t *offset)
Definition: syscall.c:95
int OSPipe(uint64_t fd[2])
Definition: syscall.c:101
uint64_t OSWait(uint64_t pid)
Definition: syscall.c:35
int OSFSInfo(struct statfs *info, uint64_t max)
Definition: syscall.c:173
uint64_t OSGetPID()
Definition: syscall.c:23
void * OSMemMap(void *addr, uint64_t len, int flags)
Definition: syscall.c:41
int OSThreadWait(uint64_t tid)
Definition: syscall.c:131
uint64_t syscall(int num,...)
int OSNICStat(uint64_t nicNo, NIC *nic)
Definition: syscall.c:137
void OSExit(int status)
Definition: syscall.c:17
int OSThreadCreate(uint64_t rip, uint64_t arg)
Definition: syscall.c:107
int OSNICSend(uint64_t nicNo, MBuf *mbuf)
Definition: syscall.c:143
int OSNICRecv(uint64_t nicNo, MBuf *mbuf)
Definition: syscall.c:149
int OSFlush(uint64_t fd)
Definition: syscall.c:71
int OSStat(const char *path, struct stat *sb)
Definition: syscall.c:89
int OSFSMount(const char *mntpt, const char *device, uint64_t flags)
Definition: syscall.c:161
int OSMemUnmap(void *addr, uint64_t len)
Definition: syscall.c:47
int OSMemProtect(void *addr, uint64_t len, int flags)
Definition: syscall.c:53
Definition: mbuf.h:14
Definition: mount.h:5
uint64_t addr
Definition: multiboot.h:1
uint64_t len
Definition: multiboot.h:2
Definition: stat.h:5
Definition: nic.h:11
#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_FLUSH
Definition: syscall.h:20
#define SYSCALL_PIPE
Definition: syscall.h:32
#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_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
unsigned long uint64_t
Definition: types.h:13