From 4087a6e7fc773ba4eb217dfc196dfe1eee84b25d Mon Sep 17 00:00:00 2001 From: Frans Kaashoek Date: Wed, 10 Aug 2022 20:35:42 -0400 Subject: Read and write p->killed using atomics --- kernel/sysproc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'kernel/sysproc.c') diff --git a/kernel/sysproc.c b/kernel/sysproc.c index e8bcda9..61b715b 100644 --- a/kernel/sysproc.c +++ b/kernel/sysproc.c @@ -63,7 +63,7 @@ sys_sleep(void) acquire(&tickslock); ticks0 = ticks; while(ticks - ticks0 < n){ - if(myproc()->killed){ + if(__sync_add_and_fetch(&(myproc()->killed), 0)){ release(&tickslock); return -1; } -- cgit v1.2.3 From 975f3b31d3fac2c271df3107263df6ae454a98be Mon Sep 17 00:00:00 2001 From: Frans Kaashoek Date: Thu, 11 Aug 2022 07:23:17 -0400 Subject: Clean up using killed() --- kernel/sysproc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'kernel/sysproc.c') diff --git a/kernel/sysproc.c b/kernel/sysproc.c index 61b715b..99a36a7 100644 --- a/kernel/sysproc.c +++ b/kernel/sysproc.c @@ -63,7 +63,7 @@ sys_sleep(void) acquire(&tickslock); ticks0 = ticks; while(ticks - ticks0 < n){ - if(__sync_add_and_fetch(&(myproc()->killed), 0)){ + if(killed(myproc())){ release(&tickslock); return -1; } -- cgit v1.2.3 From 1d4c437ea17e3254fe6138fd8dd181de413a43bf Mon Sep 17 00:00:00 2001 From: Frans Kaashoek Date: Wed, 17 Aug 2022 20:37:22 -0400 Subject: Use uint64 (thanks carlclone and Harry Porter) --- kernel/sysproc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'kernel/sysproc.c') diff --git a/kernel/sysproc.c b/kernel/sysproc.c index 8ca45ba..c74def2 100644 --- a/kernel/sysproc.c +++ b/kernel/sysproc.c @@ -40,7 +40,7 @@ sys_wait(void) uint64 sys_sbrk(void) { - int addr; + uint64 addr; int n; if(argint(0, &n) < 0) -- cgit v1.2.3 From 2a391ebc8ba1fd0e6f0899277218d531fd5c7396 Mon Sep 17 00:00:00 2001 From: Frans Kaashoek Date: Mon, 22 Aug 2022 19:53:09 -0400 Subject: Make argint() and argaddr() of type void (thanks Harry Porter) --- kernel/sysproc.c | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) (limited to 'kernel/sysproc.c') diff --git a/kernel/sysproc.c b/kernel/sysproc.c index c74def2..ecaa8cc 100644 --- a/kernel/sysproc.c +++ b/kernel/sysproc.c @@ -10,8 +10,7 @@ uint64 sys_exit(void) { int n; - if(argint(0, &n) < 0) - return -1; + argint(0, &n); exit(n); return 0; // not reached } @@ -32,8 +31,7 @@ uint64 sys_wait(void) { uint64 p; - if(argaddr(0, &p) < 0) - return -1; + argaddr(0, &p); return wait(p); } @@ -43,8 +41,7 @@ sys_sbrk(void) uint64 addr; int n; - if(argint(0, &n) < 0) - return -1; + argint(0, &n); addr = myproc()->sz; if(growproc(n) < 0) return -1; @@ -57,8 +54,7 @@ sys_sleep(void) int n; uint ticks0; - if(argint(0, &n) < 0) - return -1; + argint(0, &n); acquire(&tickslock); ticks0 = ticks; while(ticks - ticks0 < n){ @@ -77,8 +73,7 @@ sys_kill(void) { int pid; - if(argint(0, &pid) < 0) - return -1; + argint(0, &pid); return kill(pid); } -- cgit v1.2.3