提交 e42b00c6 创建 作者: Austin Clements's avatar Austin Clements

Make kernel and user syscall signatures match for sysproc

Except for the pointer arguments to sys_map and sys_unmap, which are opaque uptr's in the kernel.
上级 43a57743
...@@ -23,26 +23,26 @@ long sys_chdir(const char*); ...@@ -23,26 +23,26 @@ long sys_chdir(const char*);
long sys_close(int); long sys_close(int);
long sys_dup(int); long sys_dup(int);
long sys_exec(const char*, u64); long sys_exec(const char*, u64);
long sys_exit(void); int sys_exit(void) __attribute__((noreturn));
long sys_fork(int); int sys_fork(int);
long sys_fstat(int, struct stat*); long sys_fstat(int, struct stat*);
long sys_getpid(void); int sys_getpid(void);
long sys_kill(int); int sys_kill(int);
long sys_link(const char*, const char*); long sys_link(const char*, const char*);
long sys_mkdirat(int, const char*); long sys_mkdirat(int, const char*);
long sys_mknod(const char*, int, int); long sys_mknod(const char*, int, int);
long sys_openat(int, const char*, int); long sys_openat(int, const char*, int);
long sys_pipe(int*); long sys_pipe(int*);
long sys_read(int, char*, int); long sys_read(int, char*, int);
long sys_sbrk(int); char* sys_sbrk(int);
long sys_nsleep(u64); int sys_nsleep(u64);
long sys_unlink(const char*); long sys_unlink(const char*);
long sys_wait(void); int sys_wait(void);
long sys_write(int, const void*, int); long sys_write(int, const void*, int);
long sys_uptime(void); u64 sys_uptime(void);
long sys_map(uptr, u64); int sys_map(uptr, size_t);
long sys_unmap(uptr, u64); int sys_unmap(uptr, size_t);
long sys_halt(void); int sys_halt(void);
long sys_socket(int, int, int); long sys_socket(int, int, int);
long sys_bind(int, void*, int); long sys_bind(int, void*, int);
long sys_listen(int, int); long sys_listen(int, int);
...@@ -50,9 +50,9 @@ long sys_accept(int, void*, void*); ...@@ -50,9 +50,9 @@ long sys_accept(int, void*, void*);
long sys_pread(int fd, void *ubuf, size_t count, off_t offset); long sys_pread(int fd, void *ubuf, size_t count, off_t offset);
long sys_async(int, size_t, off_t, u32, u32); long sys_async(int, size_t, off_t, u32, u32);
long sys_script(void *addr, u64 len, u64 chunk); long sys_script(void *addr, u64 len, u64 chunk);
long sys_setfs(u64 base); int sys_setfs(u64 base);
long sys_wqwait(void); long sys_wqwait(void);
long sys_setaffinity(int cpu); int sys_setaffinity(int cpu);
long sys_futex(const u64* addr, int op, u64 val, u64 timer); long sys_futex(const u64* addr, int op, u64 val, u64 timer);
extern long (*syscalls[])(u64, u64, u64, u64, u64); extern long (*syscalls[])(u64, u64, u64, u64, u64);
......
...@@ -27,9 +27,9 @@ int getpid(void); ...@@ -27,9 +27,9 @@ int getpid(void);
char* sbrk(int); char* sbrk(int);
int nsleep(u64); int nsleep(u64);
u64 uptime(void); u64 uptime(void);
int map(void *addr, int len); int map(void *addr, size_t len);
int unmap(void *addr, int len); int unmap(void *addr, size_t len);
void halt(void); int halt(void);
ssize_t pread(int, void*, size_t, off_t); ssize_t pread(int, void*, size_t, off_t);
int async(int, size_t, off_t, u32, u32); int async(int, size_t, off_t, u32, u32);
int script(void *addr, u64 len, u64 chunk); int script(void *addr, u64 len, u64 chunk);
......
...@@ -12,50 +12,50 @@ ...@@ -12,50 +12,50 @@
#include "kmtrace.hh" #include "kmtrace.hh"
#include "futex.h" #include "futex.h"
long int
sys_fork(int flags) sys_fork(int flags)
{ {
ANON_REGION(__func__, &perfgroup); ANON_REGION(__func__, &perfgroup);
return fork(flags); return fork(flags);
} }
long int
sys_exit(void) sys_exit(void)
{ {
exit(); exit();
return 0; // not reached panic("exit() returned");
} }
long int
sys_wait(void) sys_wait(void)
{ {
ANON_REGION(__func__, &perfgroup); ANON_REGION(__func__, &perfgroup);
return wait(); return wait();
} }
long int
sys_kill(int pid) sys_kill(int pid)
{ {
return proc::kill(pid); return proc::kill(pid);
} }
long int
sys_getpid(void) sys_getpid(void)
{ {
return myproc()->pid; return myproc()->pid;
} }
long char*
sys_sbrk(int n) sys_sbrk(int n)
{ {
uptr addr; uptr addr;
if(myproc()->vmap->sbrk(n, &addr) < 0) if(myproc()->vmap->sbrk(n, &addr) < 0)
return -1; return (char*)-1;
return addr; return (char*)addr;
} }
long int
sys_nsleep(u64 nsec) sys_nsleep(u64 nsec)
{ {
struct spinlock lock; struct spinlock lock;
...@@ -83,14 +83,14 @@ sys_nsleep(u64 nsec) ...@@ -83,14 +83,14 @@ sys_nsleep(u64 nsec)
// return how many clock tick interrupts have occurred // return how many clock tick interrupts have occurred
// since boot. // since boot.
long u64
sys_uptime(void) sys_uptime(void)
{ {
return nsectime(); return nsectime();
} }
long int
sys_map(uptr addr, u64 len) sys_map(uptr addr, size_t len)
{ {
ANON_REGION(__func__, &perfgroup); ANON_REGION(__func__, &perfgroup);
...@@ -114,8 +114,8 @@ sys_map(uptr addr, u64 len) ...@@ -114,8 +114,8 @@ sys_map(uptr addr, u64 len)
return r; return r;
} }
long int
sys_unmap(uptr addr, u64 len) sys_unmap(uptr addr, size_t len)
{ {
ANON_REGION(__func__, &perfgroup); ANON_REGION(__func__, &perfgroup);
...@@ -134,7 +134,7 @@ sys_unmap(uptr addr, u64 len) ...@@ -134,7 +134,7 @@ sys_unmap(uptr addr, u64 len)
return 0; return 0;
} }
long int
sys_halt(void) sys_halt(void)
{ {
int i; int i;
...@@ -145,7 +145,7 @@ sys_halt(void) ...@@ -145,7 +145,7 @@ sys_halt(void)
return 0; return 0;
} }
long int
sys_setfs(u64 base) sys_setfs(u64 base)
{ {
proc *p = myproc(); proc *p = myproc();
...@@ -154,7 +154,7 @@ sys_setfs(u64 base) ...@@ -154,7 +154,7 @@ sys_setfs(u64 base)
return 0; return 0;
} }
long int
sys_setaffinity(int cpu) sys_setaffinity(int cpu)
{ {
return myproc()->set_cpu_pin(cpu); return myproc()->set_cpu_pin(cpu);
......
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论