$(OBJDUMP) -S _init > init.asm
$(OBJDUMP) -t _init | awk '/SYMBOL TABLE/ { go=1; next } go {print $$1, $$NF}' >init.sym
-_sh : sh.o $(ULIB)
- $(LD) -N -e main -Ttext 0 -o _sh sh.o $(ULIB)
- $(OBJDUMP) -S _sh > sh.asm
+_kill : kill.o $(ULIB)
+ $(LD) -N -e main -Ttext 0 -o _kill kill.o $(ULIB)
+ $(OBJDUMP) -S _kill > kill.asm
_ls : ls.o $(ULIB)
$(LD) -N -e main -Ttext 0 -o _ls ls.o $(ULIB)
$(LD) -N -e main -Ttext 0 -o _rm rm.o $(ULIB)
$(OBJDUMP) -S _rm > rm.asm
+_sh : sh.o $(ULIB)
+ $(LD) -N -e main -Ttext 0 -o _sh sh.o $(ULIB)
+ $(OBJDUMP) -S _sh > sh.asm
+
_zombie: zombie.o $(ULIB)
$(LD) -N -e main -Ttext 0 -o _zombie zombie.o $(ULIB)
$(OBJDUMP) -S _zombie > zombie.asm
mkfs : mkfs.c fs.h
cc -o mkfs mkfs.c
-UPROGS=usertests _echo _cat _init _sh _ls _mkdir _rm _zombie
+UPROGS=usertests _echo _cat _init _kill _ls _mkdir _rm _sh _zombie
fs.img : mkfs README $(UPROGS)
./mkfs fs.img README $(UPROGS)
--- /dev/null
+#include "types.h"
+#include "stat.h"
+#include "user.h"
+
+int
+main(int argc, char **argv)
+{
+ int i;
+
+ if(argc < 1){
+ printf(2, "usage: kill pid...\n");
+ exit();
+ }
+ for(i=1; i<argc; i++)
+ kill(atoi(argv[i]));
+ exit();
+}