From 0915ead4e931234d8eee6c3714136fa9f9f7972e Mon Sep 17 00:00:00 2001 From: jnl1128 Date: Sun, 13 Nov 2022 12:16:46 +0000 Subject: [PATCH 01/34] alarm clock with inter_disable --- threads/build/Makefile | 64 ++++++++++++++++++ threads/build/devices/disk.d | 9 +++ threads/build/devices/disk.o | Bin 0 -> 33424 bytes threads/build/devices/input.d | 6 ++ threads/build/devices/input.o | Bin 0 -> 8576 bytes threads/build/devices/intq.d | 5 ++ threads/build/devices/intq.o | Bin 0 -> 15624 bytes threads/build/devices/kbd.d | 7 ++ threads/build/devices/kbd.o | Bin 0 -> 12648 bytes threads/build/devices/serial.d | 8 +++ threads/build/devices/serial.o | Bin 0 -> 17544 bytes threads/build/devices/timer.d | 8 +++ threads/build/devices/timer.o | Bin 0 -> 14600 bytes threads/build/devices/vga.d | 6 ++ threads/build/devices/vga.o | Bin 0 -> 10408 bytes threads/build/kernel.bin | Bin 0 -> 135168 bytes threads/build/kernel.o | Bin 0 -> 2414048 bytes threads/build/lib/arithmetic.d | 1 + threads/build/lib/arithmetic.o | Bin 0 -> 7320 bytes threads/build/lib/debug.d | 5 ++ threads/build/lib/debug.o | Bin 0 -> 4616 bytes threads/build/lib/kernel/bitmap.d | 7 ++ threads/build/lib/kernel/bitmap.o | Bin 0 -> 20304 bytes threads/build/lib/kernel/console.d | 8 +++ threads/build/lib/kernel/console.o | Bin 0 -> 12696 bytes threads/build/lib/kernel/debug.d | 7 ++ threads/build/lib/kernel/debug.o | Bin 0 -> 6856 bytes threads/build/lib/kernel/hash.d | 5 ++ threads/build/lib/kernel/hash.o | Bin 0 -> 21256 bytes threads/build/lib/kernel/list.d | 4 ++ threads/build/lib/kernel/list.o | Bin 0 -> 32496 bytes threads/build/lib/random.d | 3 + threads/build/lib/random.o | Bin 0 -> 6368 bytes threads/build/lib/stdio.d | 6 ++ threads/build/lib/stdio.o | Bin 0 -> 24616 bytes threads/build/lib/stdlib.d | 4 ++ threads/build/lib/stdlib.o | Bin 0 -> 11072 bytes threads/build/lib/string.d | 2 + threads/build/lib/string.o | Bin 0 -> 18200 bytes threads/build/loader.bin | Bin 0 -> 512 bytes threads/build/os.dsk | Bin 0 -> 135680 bytes threads/build/tests/threads/alarm-negative.d | 9 +++ threads/build/tests/threads/alarm-negative.o | Bin 0 -> 3840 bytes threads/build/tests/threads/alarm-priority.d | 9 +++ threads/build/tests/threads/alarm-priority.o | Bin 0 -> 8616 bytes .../build/tests/threads/alarm-simultaneous.d | 10 +++ .../build/tests/threads/alarm-simultaneous.o | Bin 0 -> 9592 bytes threads/build/tests/threads/alarm-wait.d | 9 +++ threads/build/tests/threads/alarm-wait.o | Bin 0 -> 14320 bytes threads/build/tests/threads/alarm-zero.d | 9 +++ threads/build/tests/threads/alarm-zero.o | Bin 0 -> 3816 bytes .../build/tests/threads/mlfqs/mlfqs-block.d | 10 +++ .../build/tests/threads/mlfqs/mlfqs-block.o | Bin 0 -> 10328 bytes .../build/tests/threads/mlfqs/mlfqs-fair.d | 10 +++ .../build/tests/threads/mlfqs/mlfqs-fair.o | Bin 0 -> 10952 bytes .../build/tests/threads/mlfqs/mlfqs-load-1.d | 10 +++ .../build/tests/threads/mlfqs/mlfqs-load-1.o | Bin 0 -> 7992 bytes .../build/tests/threads/mlfqs/mlfqs-load-60.d | 10 +++ .../build/tests/threads/mlfqs/mlfqs-load-60.o | Bin 0 -> 8544 bytes .../tests/threads/mlfqs/mlfqs-load-avg.d | 10 +++ .../tests/threads/mlfqs/mlfqs-load-avg.o | Bin 0 -> 8656 bytes .../tests/threads/mlfqs/mlfqs-recent-1.d | 10 +++ .../tests/threads/mlfqs/mlfqs-recent-1.o | Bin 0 -> 7160 bytes threads/build/tests/threads/priority-change.d | 7 ++ threads/build/tests/threads/priority-change.o | Bin 0 -> 6208 bytes .../build/tests/threads/priority-condvar.d | 9 +++ .../build/tests/threads/priority-condvar.o | Bin 0 -> 10816 bytes .../tests/threads/priority-donate-chain.d | 8 +++ .../tests/threads/priority-donate-chain.o | Bin 0 -> 12456 bytes .../tests/threads/priority-donate-lower.d | 8 +++ .../tests/threads/priority-donate-lower.o | Bin 0 -> 10280 bytes .../tests/threads/priority-donate-multiple.d | 8 +++ .../tests/threads/priority-donate-multiple.o | Bin 0 -> 11416 bytes .../tests/threads/priority-donate-multiple2.d | 9 +++ .../tests/threads/priority-donate-multiple2.o | Bin 0 -> 11816 bytes .../tests/threads/priority-donate-nest.d | 8 +++ .../tests/threads/priority-donate-nest.o | Bin 0 -> 12144 bytes .../build/tests/threads/priority-donate-one.d | 8 +++ .../build/tests/threads/priority-donate-one.o | Bin 0 -> 10832 bytes .../tests/threads/priority-donate-sema.d | 8 +++ .../tests/threads/priority-donate-sema.o | Bin 0 -> 11392 bytes threads/build/tests/threads/priority-fifo.d | 9 +++ threads/build/tests/threads/priority-fifo.o | Bin 0 -> 12328 bytes .../build/tests/threads/priority-preempt.d | 8 +++ .../build/tests/threads/priority-preempt.o | Bin 0 -> 6632 bytes threads/build/tests/threads/priority-sema.d | 9 +++ threads/build/tests/threads/priority-sema.o | Bin 0 -> 7664 bytes threads/build/tests/threads/tests.d | 6 ++ threads/build/tests/threads/tests.o | Bin 0 -> 11512 bytes threads/build/threads/init.d | 16 +++++ threads/build/threads/init.o | Bin 0 -> 20304 bytes threads/build/threads/interrupt.d | 12 ++++ threads/build/threads/interrupt.o | Bin 0 -> 26400 bytes threads/build/threads/intr-stubs.d | 2 + threads/build/threads/intr-stubs.o | Bin 0 -> 39176 bytes threads/build/threads/kernel.lds.s | 23 +++++++ threads/build/threads/loader.o | Bin 0 -> 5632 bytes threads/build/threads/malloc.d | 8 +++ threads/build/threads/malloc.o | Bin 0 -> 16752 bytes threads/build/threads/mmu.d | 9 +++ threads/build/threads/mmu.o | Bin 0 -> 24216 bytes threads/build/threads/palloc.d | 9 +++ threads/build/threads/palloc.o | Bin 0 -> 20440 bytes threads/build/threads/start.d | 1 + threads/build/threads/start.o | Bin 0 -> 30720 bytes threads/build/threads/synch.d | 7 ++ threads/build/threads/synch.o | Bin 0 -> 24496 bytes threads/build/threads/thread.d | 11 +++ threads/build/threads/thread.o | Bin 0 -> 36576 bytes 109 files changed, 474 insertions(+) create mode 100644 threads/build/Makefile create mode 100644 threads/build/devices/disk.d create mode 100644 threads/build/devices/disk.o create mode 100644 threads/build/devices/input.d create mode 100644 threads/build/devices/input.o create mode 100644 threads/build/devices/intq.d create mode 100644 threads/build/devices/intq.o create mode 100644 threads/build/devices/kbd.d create mode 100644 threads/build/devices/kbd.o create mode 100644 threads/build/devices/serial.d create mode 100644 threads/build/devices/serial.o create mode 100644 threads/build/devices/timer.d create mode 100644 threads/build/devices/timer.o create mode 100644 threads/build/devices/vga.d create mode 100644 threads/build/devices/vga.o create mode 100644 threads/build/kernel.bin create mode 100755 threads/build/kernel.o create mode 100644 threads/build/lib/arithmetic.d create mode 100644 threads/build/lib/arithmetic.o create mode 100644 threads/build/lib/debug.d create mode 100644 threads/build/lib/debug.o create mode 100644 threads/build/lib/kernel/bitmap.d create mode 100644 threads/build/lib/kernel/bitmap.o create mode 100644 threads/build/lib/kernel/console.d create mode 100644 threads/build/lib/kernel/console.o create mode 100644 threads/build/lib/kernel/debug.d create mode 100644 threads/build/lib/kernel/debug.o create mode 100644 threads/build/lib/kernel/hash.d create mode 100644 threads/build/lib/kernel/hash.o create mode 100644 threads/build/lib/kernel/list.d create mode 100644 threads/build/lib/kernel/list.o create mode 100644 threads/build/lib/random.d create mode 100644 threads/build/lib/random.o create mode 100644 threads/build/lib/stdio.d create mode 100644 threads/build/lib/stdio.o create mode 100644 threads/build/lib/stdlib.d create mode 100644 threads/build/lib/stdlib.o create mode 100644 threads/build/lib/string.d create mode 100644 threads/build/lib/string.o create mode 100755 threads/build/loader.bin create mode 100644 threads/build/os.dsk create mode 100644 threads/build/tests/threads/alarm-negative.d create mode 100644 threads/build/tests/threads/alarm-negative.o create mode 100644 threads/build/tests/threads/alarm-priority.d create mode 100644 threads/build/tests/threads/alarm-priority.o create mode 100644 threads/build/tests/threads/alarm-simultaneous.d create mode 100644 threads/build/tests/threads/alarm-simultaneous.o create mode 100644 threads/build/tests/threads/alarm-wait.d create mode 100644 threads/build/tests/threads/alarm-wait.o create mode 100644 threads/build/tests/threads/alarm-zero.d create mode 100644 threads/build/tests/threads/alarm-zero.o create mode 100644 threads/build/tests/threads/mlfqs/mlfqs-block.d create mode 100644 threads/build/tests/threads/mlfqs/mlfqs-block.o create mode 100644 threads/build/tests/threads/mlfqs/mlfqs-fair.d create mode 100644 threads/build/tests/threads/mlfqs/mlfqs-fair.o create mode 100644 threads/build/tests/threads/mlfqs/mlfqs-load-1.d create mode 100644 threads/build/tests/threads/mlfqs/mlfqs-load-1.o create mode 100644 threads/build/tests/threads/mlfqs/mlfqs-load-60.d create mode 100644 threads/build/tests/threads/mlfqs/mlfqs-load-60.o create mode 100644 threads/build/tests/threads/mlfqs/mlfqs-load-avg.d create mode 100644 threads/build/tests/threads/mlfqs/mlfqs-load-avg.o create mode 100644 threads/build/tests/threads/mlfqs/mlfqs-recent-1.d create mode 100644 threads/build/tests/threads/mlfqs/mlfqs-recent-1.o create mode 100644 threads/build/tests/threads/priority-change.d create mode 100644 threads/build/tests/threads/priority-change.o create mode 100644 threads/build/tests/threads/priority-condvar.d create mode 100644 threads/build/tests/threads/priority-condvar.o create mode 100644 threads/build/tests/threads/priority-donate-chain.d create mode 100644 threads/build/tests/threads/priority-donate-chain.o create mode 100644 threads/build/tests/threads/priority-donate-lower.d create mode 100644 threads/build/tests/threads/priority-donate-lower.o create mode 100644 threads/build/tests/threads/priority-donate-multiple.d create mode 100644 threads/build/tests/threads/priority-donate-multiple.o create mode 100644 threads/build/tests/threads/priority-donate-multiple2.d create mode 100644 threads/build/tests/threads/priority-donate-multiple2.o create mode 100644 threads/build/tests/threads/priority-donate-nest.d create mode 100644 threads/build/tests/threads/priority-donate-nest.o create mode 100644 threads/build/tests/threads/priority-donate-one.d create mode 100644 threads/build/tests/threads/priority-donate-one.o create mode 100644 threads/build/tests/threads/priority-donate-sema.d create mode 100644 threads/build/tests/threads/priority-donate-sema.o create mode 100644 threads/build/tests/threads/priority-fifo.d create mode 100644 threads/build/tests/threads/priority-fifo.o create mode 100644 threads/build/tests/threads/priority-preempt.d create mode 100644 threads/build/tests/threads/priority-preempt.o create mode 100644 threads/build/tests/threads/priority-sema.d create mode 100644 threads/build/tests/threads/priority-sema.o create mode 100644 threads/build/tests/threads/tests.d create mode 100644 threads/build/tests/threads/tests.o create mode 100644 threads/build/threads/init.d create mode 100644 threads/build/threads/init.o create mode 100644 threads/build/threads/interrupt.d create mode 100644 threads/build/threads/interrupt.o create mode 100644 threads/build/threads/intr-stubs.d create mode 100644 threads/build/threads/intr-stubs.o create mode 100644 threads/build/threads/kernel.lds.s create mode 100644 threads/build/threads/loader.o create mode 100644 threads/build/threads/malloc.d create mode 100644 threads/build/threads/malloc.o create mode 100644 threads/build/threads/mmu.d create mode 100644 threads/build/threads/mmu.o create mode 100644 threads/build/threads/palloc.d create mode 100644 threads/build/threads/palloc.o create mode 100644 threads/build/threads/start.d create mode 100644 threads/build/threads/start.o create mode 100644 threads/build/threads/synch.d create mode 100644 threads/build/threads/synch.o create mode 100644 threads/build/threads/thread.d create mode 100644 threads/build/threads/thread.o diff --git a/threads/build/Makefile b/threads/build/Makefile new file mode 100644 index 0000000..b8a8503 --- /dev/null +++ b/threads/build/Makefile @@ -0,0 +1,64 @@ +# -*- makefile -*- + +SRCDIR = ../.. + +all: os.dsk + +include ../../Make.config +include ../Make.vars +include ../../tests/Make.tests + +# Compiler and assembler options. +os.dsk: CPPFLAGS += -I$(SRCDIR)/lib/kernel + +# Core kernel. +include ../../threads/targets.mk +# User process code. +include ../../userprog/targets.mk +# Virtual memory code. +include ../../vm/targets.mk +# Filesystem code. +include ../../filesys/targets.mk +# Library code shared between kernel and user programs. +include ../../lib/targets.mk +# Kernel-specific library code. +include ../../lib/kernel/targets.mk +# Device driver code. +include ../../devices/targets.mk + +SOURCES = $(foreach dir,$(KERNEL_SUBDIRS),$($(dir)_SRC)) +OBJECTS = $(patsubst %.c,%.o,$(patsubst %.S,%.o,$(SOURCES))) +DEPENDS = $(patsubst %.o,%.d,$(OBJECTS)) + +threads/kernel.lds.s: CPPFLAGS += -P +threads/kernel.lds.s: threads/kernel.lds.S + +kernel.o: threads/kernel.lds.s $(OBJECTS) + $(LD) $(LDFLAGS) -T $< -o $@ $(OBJECTS) + +kernel.bin: kernel.o + $(OBJCOPY) -O binary -R .note -R .comment -S $< $@.tmp + dd if=$@.tmp of=$@ bs=4096 conv=sync + rm $@.tmp + +threads/loader.o: threads/loader.S kernel.bin + $(CC) -c $< -o $@ $(ASFLAGS) $(CPPFLAGS) $(DEFINES) -DKERNEL_LOAD_PAGES=`perl -e 'print +(-s "kernel.bin") / 4096;'` + +loader.bin: threads/loader.o + $(LD) $(LDFLAGS) -N -e start -Ttext 0x7c00 --oformat binary -o $@ $< + +os.dsk: loader.bin kernel.bin + cat $^ > $@ + +clean:: + rm -f $(OBJECTS) $(DEPENDS) + rm -f threads/loader.o threads/kernel.lds.s threads/loader.d + rm -f kernel.o kernel.lds.s + rm -f kernel.bin loader.bin os.dsk + rm -f bochsout.txt bochsrc.txt + rm -f results grade + +Makefile: $(SRCDIR)/Makefile.build + cp $< $@ + +-include $(DEPENDS) diff --git a/threads/build/devices/disk.d b/threads/build/devices/disk.d new file mode 100644 index 0000000..b8115be --- /dev/null +++ b/threads/build/devices/disk.d @@ -0,0 +1,9 @@ +devices/disk.o: ../../devices/disk.c ../../include/devices/disk.h \ + ../../include/lib/inttypes.h ../../include/lib/stdint.h \ + ../../include/lib/ctype.h ../../include/lib/debug.h \ + ../../include/lib/stdbool.h ../../include/lib/stdio.h \ + ../../include/lib/stdarg.h ../../include/lib/stddef.h \ + ../../include/lib/kernel/stdio.h ../../include/devices/timer.h \ + ../../include/lib/round.h ../../include/threads/io.h \ + ../../include/threads/interrupt.h ../../include/threads/synch.h \ + ../../include/lib/kernel/list.h diff --git a/threads/build/devices/disk.o b/threads/build/devices/disk.o new file mode 100644 index 0000000000000000000000000000000000000000..9517f1a0a1af6d006ccbcaa037d6251d11711961 GIT binary patch literal 33424 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 KzBp%@{{I5gf;e>m literal 0 HcmV?d00001 diff --git a/threads/build/devices/input.d b/threads/build/devices/input.d new file mode 100644 index 0000000..c214522 --- /dev/null +++ b/threads/build/devices/input.d @@ -0,0 +1,6 @@ +devices/input.o: ../../devices/input.c ../../include/devices/input.h \ + ../../include/lib/stdbool.h ../../include/lib/stdint.h \ + ../../include/lib/debug.h ../../include/devices/intq.h \ + ../../include/threads/interrupt.h ../../include/threads/synch.h \ + ../../include/lib/kernel/list.h ../../include/lib/stddef.h \ + ../../include/devices/serial.h diff --git a/threads/build/devices/input.o b/threads/build/devices/input.o new file mode 100644 index 0000000000000000000000000000000000000000..12e3ceb3c4454563a3c96d49afd564cdbf43cca0 GIT binary patch literal 8576 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 ZQAK?t0!2It|A=j{{S1%_6q<2 literal 0 HcmV?d00001 diff --git a/threads/build/devices/kbd.d b/threads/build/devices/kbd.d new file mode 100644 index 0000000..3aa6ae7 --- /dev/null +++ b/threads/build/devices/kbd.d @@ -0,0 +1,7 @@ +devices/kbd.o: ../../devices/kbd.c ../../include/devices/kbd.h \ + ../../include/lib/stdint.h ../../include/lib/ctype.h \ + ../../include/lib/debug.h ../../include/lib/stdio.h \ + ../../include/lib/stdarg.h ../../include/lib/stdbool.h \ + ../../include/lib/stddef.h ../../include/lib/kernel/stdio.h \ + ../../include/lib/string.h ../../include/devices/input.h \ + ../../include/threads/interrupt.h ../../include/threads/io.h diff --git a/threads/build/devices/kbd.o b/threads/build/devices/kbd.o new file mode 100644 index 0000000000000000000000000000000000000000..7cefede9f8ca4b4f1b0208269d40484e1c3f447e GIT binary patch literal 12648 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 literal 0 HcmV?d00001 diff --git a/threads/build/devices/serial.d b/threads/build/devices/serial.d new file mode 100644 index 0000000..c094a3f --- /dev/null +++ b/threads/build/devices/serial.d @@ -0,0 +1,8 @@ +devices/serial.o: ../../devices/serial.c ../../include/devices/serial.h \ + ../../include/lib/stdint.h ../../include/lib/debug.h \ + ../../include/devices/input.h ../../include/lib/stdbool.h \ + ../../include/devices/intq.h ../../include/threads/interrupt.h \ + ../../include/threads/synch.h ../../include/lib/kernel/list.h \ + ../../include/lib/stddef.h ../../include/devices/timer.h \ + ../../include/lib/round.h ../../include/threads/io.h \ + ../../include/threads/thread.h diff --git a/threads/build/devices/serial.o b/threads/build/devices/serial.o new file mode 100644 index 0000000000000000000000000000000000000000..515297d6ab7240c7e6937d0b475d696793aab33d GIT binary patch literal 17544 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 G>i+>)Lu$qV literal 0 HcmV?d00001 diff --git a/threads/build/devices/timer.d b/threads/build/devices/timer.d new file mode 100644 index 0000000..ca70799 --- /dev/null +++ b/threads/build/devices/timer.d @@ -0,0 +1,8 @@ +devices/timer.o: ../../devices/timer.c ../../include/devices/timer.h \ + ../../include/lib/round.h ../../include/lib/stdint.h \ + ../../include/lib/debug.h ../../include/lib/inttypes.h \ + ../../include/lib/stdio.h ../../include/lib/stdarg.h \ + ../../include/lib/stdbool.h ../../include/lib/stddef.h \ + ../../include/lib/kernel/stdio.h ../../include/threads/interrupt.h \ + ../../include/threads/io.h ../../include/threads/synch.h \ + ../../include/lib/kernel/list.h ../../include/threads/thread.h diff --git a/threads/build/devices/timer.o b/threads/build/devices/timer.o new file mode 100644 index 0000000000000000000000000000000000000000..b07fb9c9131bddf56d6fdb71fdfad7ac5577fae8 GIT binary patch literal 14600 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 literal 0 HcmV?d00001 diff --git a/threads/build/devices/vga.d b/threads/build/devices/vga.d new file mode 100644 index 0000000..ece73b2 --- /dev/null +++ b/threads/build/devices/vga.d @@ -0,0 +1,6 @@ +devices/vga.o: ../../devices/vga.c ../../include/devices/vga.h \ + ../../include/lib/round.h ../../include/lib/stdint.h \ + ../../include/lib/stddef.h ../../include/lib/string.h \ + ../../include/threads/io.h ../../include/threads/interrupt.h \ + ../../include/lib/stdbool.h ../../include/threads/vaddr.h \ + ../../include/lib/debug.h ../../include/threads/loader.h diff --git a/threads/build/devices/vga.o b/threads/build/devices/vga.o new file mode 100644 index 0000000000000000000000000000000000000000..0ade2df4909221dac45e8c8ffb202533586cbd18 GIT binary patch literal 10408 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 Px} z=QzeituGvB?^~sCoMa&Y9B1CE1T0#$kctw=G5*p55obg&m8d6`CBaEq3YsF37@X9m zR=r4VkrWSM(=rm3I?xMhHsfP-H#WW*Ji{Bvq>X>|Cdcq{~PKJ-k_(>TuTrj}UF3=ytQGwrC< zucIBfHfx5IUyePdRkQ^X4cFC&&WBggx;9+5-mb^G`}(?dAw1}U5gRTjxG|%cJ4D$c zT`E!r=Ge4bRmQ8UYia(soaReqHkR$%!2e>n`UD`8#D>;--av%wg*_tL*ISQu0bs!+ zwuF$V>C=3!a2y1cq8ErN4yo~mbv*EfWmb-Ge1xg^R9PTzRd4SsFer@GAv=q~ik|(TgL|hNf0%a(N57$29Azt6&qSPMum$ z+*Om8`SXobs5%y;BVZPi6Qzm|Z%LRO*XjRnhqYt8be*XBKUkvhzF4F}-QMI-*Qeoh zJYA^EYq}RF@l}_5QtH=n4X@)m)aiYr6`g+zRDO8NaKE4chqyy1`1q-(ghvgCg`DgP5magFCSNxy5H zs{g2jUrvgDGbyg&MjHO=ILp5w@Oq8gwy=S0O|6*K*tlsbjBIV~2JA1kMAujm$Gyrp zN=e5?fSz3!4%cngvar7+o&M?m?FVU8i7A2On?>uST41)rbd%^@uMQb?#ctc&U+ zD>Vz3R$W88BJ8M>0iGHupN93!8`KWD%Ev*D7#rXeNURWef6Z9^*NjQ$zpI%7DU7oA z7gHe!jDGOF8_5kVhyS;pT@|E258*^(^i-(=my}9s2G}Uh2&98s9m2R9(pVLwq*+v- zL%65THBI3NR!BW*%~*U+N@9Yso{zSO>s3zASa@^Lx(d{cH4P`30ajae6>iGR)ox_< zOedZBL!AWsUFCHZ7uj_HyvQbOc#dsilAL_bTRk&fK2y3H`!y}Lq7;BkJhl;>1Q#=l z$6^R$U%^FU&~;@KboD&H-@ancAgpCo6-n_4i*Qig-! zBW=xk9wGR+?@$qruL;9@RtPvwexcx7(}ev9*+8P*W%%*Ua2T;vALeyGh2Jq#njchu zEuUeM6+MQFwKQQ)E|^uI)^U~9!vd>XrN<;fttpoyfmY44tkxP`M`1wcadk^AF|WpA zwL*qIj{`=ukdTsgAsc3Ij)z=JC{*V#&=G4vD?vy)nHc^_oHx3>`LqY2V3N|!?E;Oj zo@bvfxSNiHXArZFN8qZMd zoM3{hrTsMQyx5;u-rQmnX7$6jelnp3e;Sb%lLtdt@x zwDFn@PJ5jxi8$Pe#js>hP=_;RPU@PbHLY$8W{W1hZh{vv*xaz84kIxg_?(WjAPv)J znvu&Z%vjxqwGyRclPysP7Hc@+>9ZtHMRY+NISe^j9GR)J^tMpX&y?SJ)$J<$vBWp;%Dtt@wX)Y^M_PC zS3Y33Ti*OHm3Z`XD*tSWM;=k}=@S3Q7gYQziGSl!6|a)`ixR(C;_pbjLE_`(g_^L$ zZ`rHLtC5k$KTL|rn%Z=XufZ;x8Y$D~9+8T@9XWzbFcEZRKHj4Kzjk5O61Z?&T2=r# zw`So@H)(@H=P(I?mk80%C(8jgbvikX83mm3-MCVR1Z4+k9fnN`nGNe2toiZ&_*9%# zRix6HRo(=mbH=nK6tU^Jqgnx3&M-K1#1Ii|E~&$q48qVCF_*8Y2hR-r&>eG2@4f3!q{$se-n|}GLZgI#T18S-2{OAG$2K5Pto}KA z01q0%R*Z<)kw%gz*3*T1YT++JXKG2|MC|WH?#y|ob{l@Y2%%!GBQ$l?oJE1t%P8T( zlNLBqb4zGgn@)3t*$A9iIqAU=GSZKv7t2)#o*L1#D-MzB!vlm9QLCXv<5cio^hP5T zAA*&}u{(8kW7FEk=^93}YSs)(m_~OW>T}}uEG=*HgY4Vs^#yhaLO48**FQ9t8M>K1 z@O0Fe4yUW1uwxcX#zuvTEQSvrDuygwj`^j*YQ;GcoD`f8ez`uD)6o=D_$0or9p~I> zJAsaqV*z;KiY3_oR0qNE5wYd;8ijCDx(c(-DLl0SM+_F$M`PIg(uvpw1cL;L;=hid z^9gSC@1A~y zI_g$V#a`gmMvj*PB@|zIXvP8LpCOM~5J;5yl(j#-7kOaLujPT`i0D8U+4bq!ozi#y zdE6Jw^@jA6Fz|mydB7x`NO{oYPaC+A$pfBtQ*1pEy98!imGQ821l@#&9m}d_Oi3uX zpLi^qHv9hYBekgB%1nFa;17bTBx)FYQrE3+YT$RJR4;cslv&)1-^_90Gs~N2SZ1babXy|IyhM*r%1Aj@X9>oMjV*8!sB%8_ZDgfjsW!TVAP%NM z95g^3Zl>u!yzX$~`NvnvkeD9ZjY=lNg10 zFZnbo2dhv`m~A70XEAgFA!66rctH%Ogm|6NnU=znr$Kl|V{0?LkPH8hUmLa+B{CD7Eg1hR&*9aO-;T0=JhniX!-wy*aKOZBbJX$Z>j$~Qw64E zIhf~3^)sH@Nu^CqdVkz?Q!ouOXKI#ob|jNqsVCj2$;%JDqUf^Zgz!TQqm~ZIf)2Hi z4$(Wa(lp0#nR7TVeTJbqk@Aw2Qpn3B@g{!jgXTu)`Yr=`H-l$PZknudK=Hlw>Lu6{ z%uks=@!~Lu2ES-b|wKPfMMUjE7aMXiE!1=63gEfe~#6LO)8&E;@0iohIcYiensHqs#}tX5&I@Y2gL zsFDP+w~6jWg8{EGLK|o?y%sCxyl%#HQHqVZdl<*_$-03#ILy!h8yD3A!1Qo+D7rBO zBUr&}gfp>+%CGXns7g)Fc{dL}sN7}@@vB1^80?A}m$@goFd1zz2&MO<3_7B%t?RH1 z*}NI#=o+YH;U=`DZZ-Dv30o@t;a21Wj;czgkfCLrQuC`0$Nd_iFIefy#4(3IYeHD) zlGX@558cvUhr*=xy457LSK%eg;i9)Hj>{-zSq{8FKpc>zD@N`tAbeqx0$~r`&;TsRvKngW)b?W& z$n!g)?MDv*1DvLS`m~L9fd0wtrEMH_f!bZ=x6RN#3rqQjen5`Hi*$uB~s2 zQCdT&z78j+lT3^dnJQnSuxn?O*x4kxi6nJH-=&~e<4;ukX=4y=7j$&o3cLE%3s=_4 z#SP@1k>1y?$9NAXZaQ`fIgYh`wf&$P?7&>e-K3VYFTgDqYCVGxPq$}IBkZ#(JgTK2 zlDkqGy`s%--nY>`!;#mejtwK(z^l@IlkvEwF#3{mO9o5TQQ1B6^7>Y*{P<6tdl`m;m^@MZ~blW?tsEfU5g+$!M%5*e+p*gddmia}s_@!p9_hQo@9Uy%PRZ!dE2xFA3k2@P8%z zhlHbcs&AkC zii8(Qc$tLrCA?0;8VNrj;c5w6B)n6?`z8FigpWx0RSBPz@M#I3m+%z{|69VhB>abj z#h+00pDtmUgfk?ZE8(>gE|c&!32&EhgM{}=_@IQJmGH|FenY|o5hw%OzYS;Zg}dDB&6j!xCIZlpl}8v03jd7%3+ID?K;dOXMqwdP z68Qi{E|EwBMXr`eE3y5g zNrZBF;Kyt2ymrLrey(`YSP)o_=fYDK5csIT8HB+qszTPOlaY}#IxrncMY;WtP0nja z!nj;S7jaVQ<0|R2W+9|p2sypZ${8QH4nR2%HJ;vN<($ctjQEsm=_q1E3T)l8|(!UcqeZ&jMauSR0 zrz+Ms=_Me}c|pZijlD;TewV2GiW%vZ2($UHL|9Y*YUWIrtLqtTu|#?a+cJs#j3RfK zU_BC1LSqq7i&z9>ts-jl*?%D7A0w{Zx!TTa2hlG`>jJwU&9|&cEP%)9u_$*zVHty* z(`My7Aq_o;UI){$m6KR)_mS4-JhbW@XxG=(a|1K^acdVS1*GaZezH|Wc@uw1t^dT1I#u&q zC`Z4*?ners4}>P?6J#`VABx{SDNMrtBw11j`yAY-5WN-cYUfqvUi$2o22jGv<_z^&7MCJJR z-DDjnF>9_Bx|NDtr}}8)*vq5{@o?-yi982g8@o~>-$K1(8zpiD(I1t_B8s$2q?#f- zC9;wtk4mH$vK#w^MCvK$I}&N3$RUYrrpV7Eavw!rlgP&?GANPHQsk&a{+%LYg&RC9 z*b-s8KTje&I%y8?Lm6vg0rVqqw2-86Qc^?5WoaCZ|Davo|v>;Ft~V~tkX z`6x+$g{PGbBA~xfca{AD0sR#flzj{3=&yLxl=H#JN%$LM(No!8q|)E$(kXYMiZ=X> zvFK^a_wj|y@#xB9EP5)t2+;I5Hm~dtfTzEc&Ma#Le)=mJRdyQ+(O+pn8S?md(u65D zA(MuiF%~^dp$jDGGRQF&J(X=l8vUJITy_ve>963FvJWDK{!Tt=%6|juRfeahvT2}) z{zh#oBi*6DqP((8QH=fyPA)qc6w==*qsrcgO!_-@aoN2H=&!K2tO{`SS6oo`2Oy%q zaihvUjuiSEwYh9GDyF~F3d$Cu2>lg~E?b67`Wv;w>KSLjp_u>>@!j5po|5mjNQVD4 zryzpgR{(N+zFY1sD3({c2LFp2mwPjWpEr)~t@3(wAE6YFN4J|&JRaTSjE6nC+^fNq zymKE#O8&Q@{H6If{|?UudARX1e=YsdcM>uIE|hQ@qCF@a5_Dg;(3-;a0We($Ma09U_3qBc&@Mt&ZOt^(cw8(!327& z7#*Gs66taFXk6xE6`V!S3r2?<@H~m0gQLT%+pL1K>A42!o2-I!=y~Pna6O)FdR_$> zJWr>nHM$;XW>e8U1rw;~9D4p@!DM=#OK84Suo#M1a3vMp3m%~8RaA7}=m?6=Bk*`Z zIf2io=k9`w>G^6Z`V{0%aw+Ns1|`8!C*|itb~a1!x1cXj{1)JIiqFM!u9dqL!KgFH z!jHM(T>KvxwQ>szjE*)nSff5jWvzmr5VjBf5**7bAm3)xEd)|n@H-S3bt{z}UvLA# ztfCo+T@Z%?j;im$bNOgo%`~c&XqsJcJyq34YBg+)?E(h+JLzh~OY~%-gpx`dkThxo zDQoU$CgXAI6G%O|8~>eh1`@5@U!paIW517tQ^&r9|LKnr9RmXhuJre4W8q29;<4xl zgpIYisBko>FXmZIG0$p>)vTtJW;I1TtI0ndxXX(RuLNWPxo*WpM6p${9Stll9>imz zmH!GN6~*IL5l}thJdGZq@+e$<`ssM4u2+ic^M6R$qtEU{P|!RUoIQu6W))lv6r)*L zbF7jz$Q}18Xbw!G8j5mP6_@3;<7wOyU<}wQv0W$jkQ^ryvx{=~=)|88~CN-WojU!p|* zutrgCg-*PJieFCrE6SZMiKmfM6u7b|_p>td8~Z5occC~-FvmK5Z9~)wEZ>2YB7iDB zoUwqIb8il{`Qbb5ymo}A;*WlT-Q)KYL$>C`B**4-%J~bhoH?J!*ve%wTd>AINw^ww z)@-)(+5uTYI)z_g_Y(kA(2W8eoIqAK(3JB#0HE*$>Lh{NbBLqx{wBOZx$6XY)x@2G z^4~z)#IH+aFGU6=@=c252%SB+*LmWV5;;IQD6W4`4<|WHwAVhxqeBp}O%bnjGGbq@vt`eUlm6#ASl^_a~v^ z$0YJ1QE}9aT4iA2WGG~&NM=qK3oQH1VM!$-5Onar# zQ?^KhF9Qhu+K@frmxOepX5GY32+U+^)Hft@5s6^pfYi(Fy->2aRaZ!al~32gIlYp@ z9qN}R*pNg>J5+m#T5j)XtAtu~&Oz#&hXZ{PJFgu;0jIqm1N+a7Hd3bQ$iWGdsP!)g z9t9k_`Pmq@0m6sT74C~y*}oOqEW zGdovEghXYX^C_z7(}AzuVdu3YzQ$qJ*HG|WSmaL&uNu!JAAmrSf!XSr$8&KE=|@0f``faghbv)m1{06hBZXxG><;#d`KzK5_qA_&TB_% zE&k{i*u94;|26TXMQU3);U0>%1}F=(OngfUv4Wo_HQhorO_m57RD9AguN^qaY@%B7 zBhF|g#jIuS>Th~G`nLOwBFbIKxlc(QMs5l5>wTR2^_1N4U#7A*1Rj+fYAXE#yJx^n zIdcM)y+NefY@J6-Oo2*{KPV+mQw31sw*QB<_W+ZsI{(M-ow+mj&g{>$XF*gIGv#!*o$Xe?+H5e2ct7-EgxSV%+@qlqQPZv1^d z?|JX+UCH4w?b(*?S=3;b-pTj_}LHz{yD zjUQIFQUEFxkenE=fHbX>75E$`sBc$5db7TKm$bXvpU=-b1&Fv751n0n2%-ks&_%v5 zc98#m3JCwh6%hV26%dxbA&6%6S@jbCutwua$ z(1E`MBam*W+%eytBJ;%vjfLA)X6fvjG-;`HAqB9SejcuET^lTQsU{KaUJn4Kts@g@ z>ylOl#prWA%Y-G(N?5V0N`lHzsZxVQv3?VY|3!3O-YEd>M?7?Pk+r8kboxREX;~Qz z{mYb)xd8=R{Y;syG(^%<6_9**G8nU60Vx!g$|B{UUyP;wFJtHCodRU|9UeNn_y@=m zD3cR>j)y3w6vL|(5cW4IAid=FV9aLj|ay`^vOs z4U{H(qiL~Q2TF^*aT3r%D<=(v9qPZ- z;4@j=`?XNzl~E151wnLnF@#wgihYHOU0Kst`F(!W{gbBfEJ>CYz}QOXjI9>suWfYnb8 zn0=g8bq-$!Lo3Jc)B&vZIu`|H#o6MpS5Ji?tIes~&o*H&6c=L&-hJA`iK9Oa^E<+MN(d4i@5XmQAH;fbFeBuqmP62s7 z(ZsMjfX64YeAvzi;SxDewsVq_5g%VV5I zj0`5qIWbNnMuw2l1u;$|Mn=%T!s9ezWH(Oqt@1F97#Yc=t7Du-jEtiH<`}0DBcn;? zmKdiIBV(9!Eo^|KyEExJ57UT|J&3*`#%aXJp7d{waT+l)mPsGA;>;E&iNX}wo67=a zC*!A_KUTtHoWFCyY-w;fAs0#RlUKs4yA5>vK>QKL z&IDoivV?60+idB<6aEmkRY-gGM~_3jCqoENf0G zWmQ7OP#*(fo(PvYTcN%Jh8vwsp1A!4jMO+8cHp7@0yiL*degr%O^FGPA0X>*AfwtNI~&tmpDS%By4T=e$66zB~&EO?5G?jCl zK<#Nza~CrG@w7Dp2WsH8$evKU3EWEqtL`G^l{V={FUH9nV1jEM-r z{EJod6jLm*-@GXA6c9EDOz7<5Y!r~{;}}ODCPQlRRa+}mz&aVh_PQ6)dwrnE{EiIK z7O?Ao9^UXCFz`-?iKD$Q&N~GQ7kQ!~Y+Mio?h6861%WY_1k#)t1nv$3VO5!=QHoj9 zyX{Q<4zwp+U?{9C={EHLm6$m4n8b@4cxJ%4>1(+R;9|vP>wWd%Tr+}nsQ9!6& z8H{;Yfer}P_?iO8&;S)IP?T3nSh*Fa#y!5FPGjs%=NpMG1|l8aLl9ey?;|sI3_?&k zMB}d!9t$t@HLeUQ*80JhW%(GUUH1h)-u1nI!>3 zwfKfQS}`TdZcu=kY4zmT0vm}~%tmSi$5C{4vDZxI&^LFTn|BHbxC9TKUA!NRdb6Vm zeKQdO$e%va*nMMitG)M1lKqBr_ZaQ>mcsk3DZ8z``8E;ymhA!tp(5@RAcu*6U))SU z!p2<`V8dmylGu`!X)8`adU54Fw7t7Zc`5Md>>`sGDYvVXMw0DXi;N^67)e?KlB9e| zI+Ugq{5up7N&5bkOkaMjBkvTzY$943I=lE~iRsJA)R^YwE~a_8i)mizVwzWirg2bA zW8u#p)Jnd8A@3BxM+CY%2z(O+zFi(b8+UdmU@SBbL!&k;%h+2@ufVp${2BO;}wd;#>yJNL3HQ> z##Lze0+SXBH3P#WzEBfOwznWS7JkvUa?b$0#$gIbawX^>w5|=lTA!~ufCzcu_^KjtmUT8gxk(gs~bg3^I*MT2j zG^Vf0I|ckNr7Up6fFIl}5&B;@y2@sW@D7_L!aHo12v=VO2Eok|;W{Y-fz1-(#(Rik zUPffIL^!Zn!s*;B;RH5IIR9m{gwwfM!kM}SG%eXI;rx8Fgjp|+$W~cdFOCG(iz8ju ziz8X?7nJqlNbXg5&3bX9iZfIAXe`&I<6K{~>}V_FWf4Al)LR%SSh5HoJ$fDdW)VI* z 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 literal 0 HcmV?d00001 diff --git a/threads/build/lib/arithmetic.d b/threads/build/lib/arithmetic.d new file mode 100644 index 0000000..7e4b8a2 --- /dev/null +++ b/threads/build/lib/arithmetic.d @@ -0,0 +1 @@ +lib/arithmetic.o: ../../lib/arithmetic.c ../../include/lib/stdint.h diff --git a/threads/build/lib/arithmetic.o b/threads/build/lib/arithmetic.o new file mode 100644 index 0000000000000000000000000000000000000000..5e63c6d0e09dfc709a491de16e295c08b99e2d0e GIT binary patch literal 7320 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 literal 0 HcmV?d00001 diff --git a/threads/build/lib/kernel/bitmap.d b/threads/build/lib/kernel/bitmap.d new file mode 100644 index 0000000..e727dd5 --- /dev/null +++ b/threads/build/lib/kernel/bitmap.d @@ -0,0 +1,7 @@ +lib/kernel/bitmap.o: ../../lib/kernel/bitmap.c \ + ../../include/lib/kernel/bitmap.h ../../include/lib/stdbool.h \ + ../../include/lib/stddef.h ../../include/lib/inttypes.h \ + ../../include/lib/stdint.h ../../include/lib/debug.h \ + ../../include/lib/limits.h ../../include/lib/round.h \ + ../../include/lib/stdio.h ../../include/lib/stdarg.h \ + ../../include/lib/kernel/stdio.h ../../include/threads/malloc.h diff --git a/threads/build/lib/kernel/bitmap.o b/threads/build/lib/kernel/bitmap.o new file mode 100644 index 0000000000000000000000000000000000000000..ca6d6fbbb381236b30091603c3855e19d7fd06c8 GIT binary patch literal 20304 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 R|1U1oX4GGrm;aRd{|hjnuABe> literal 0 HcmV?d00001 diff --git a/threads/build/lib/kernel/debug.d b/threads/build/lib/kernel/debug.d new file mode 100644 index 0000000..c810eac --- /dev/null +++ b/threads/build/lib/kernel/debug.d @@ -0,0 +1,7 @@ +lib/kernel/debug.o: ../../lib/kernel/debug.c ../../include/lib/debug.h \ + ../../include/lib/kernel/console.h ../../include/lib/stdarg.h \ + ../../include/lib/stdbool.h ../../include/lib/stddef.h \ + ../../include/lib/stdio.h ../../include/lib/stdint.h \ + ../../include/lib/kernel/stdio.h ../../include/lib/string.h \ + ../../include/threads/init.h ../../include/threads/interrupt.h \ + ../../include/devices/serial.h diff --git a/threads/build/lib/kernel/debug.o b/threads/build/lib/kernel/debug.o new file mode 100644 index 0000000000000000000000000000000000000000..eb383684134e24d801d8a92990bd598689e48108 GIT binary patch literal 6856 zcmbVQZ)_Y#6`#Gc&u2S6pY0^I2}l>wgeL8sV9w5z`V?Hk5LOZ~p)H*4{mdPdmOc#%&4KShCCQ-}3~p8O zb_k@$07w`@bqJ-6VfNZVww@t2E!h`O45x+i z2uk;hI3h2>(JYYh3s+8zAciFaU4+boQD%FTS%@-EMwvpCY146{Ezbc1u~-Kc#dvfz z&||_0`1GYiGTFOYp{T@QV^itKhI;*@Avur?$;2o#MvM)qvB7w1U24P_?MvSW%VjN# zr*;hP9NZ6rab%F_F^v6V1`xgL+5WLfn8n2XY;bT7sDg)MMm#k*h)O7u911PWfMEYH z2r@Q6@~~0{w}k?GCw5K1=urf_8Oj-ZCuH}ZoA{z~H6@3luYM{uM?E?21EApjA zIak12VAoQ^t_E4#*@OQ1LDBNcxeAU5=prwLG;CQ(+m4MC>;Ztd=QZlY7F@@7s~psO&yAvpu_gTP9o1WDkMa z5(v9B8!UTPjc4nwm{^I|tI!n+)KMJ?Kd=hVX6v3C@Iv5vtqGBHZq_ZwE-(?Ym2s=u zFkS94_h1l5A@pS#{?-K2JWN*H8lP+|HJqR^SqFa(eQALNJ2DR}iqXiq%x;xqn|fhtCbwnVCW+z}Y#q$T@h>vt zSlU>(sxNsSw(6&$4S!g~#Wt5pzZ{z%5_hYFJAOeGcH}?qb!v=v%miU?%3NWEN}Tcz zy&*0)cN^RfoDq?i8H*H&v(8?}Wv8!jF8Eiv;IJS&`t$WJcz9ii zLp3)wy>+H-tHY*g9c1krQSBgg1g_YO(QVS{WDha$Z9V+3VC19m#Q0)CJWRTP{yc(E z5Rb0Cyg*mtPjq7V<0FQ9)L!6Q#F_Qwbw z^SHT-YHzp3G6^5?RKt2uaA!%va?k2L%c z;Wst>KEi*a;SJ(H(D2uY|AU4e|C;!I(o^%LPVTiDeu?a? z)9~*Tzn*HWNL2JNqsjl0`rW7Dzasw28vb1}#x|ObsUq$11w7U(w{BCi~xs z$RqS1*}1IY(}cgP;pYgyq2c(H#iGWC&1he(gWHNJJmE_h_t?&;)2g`;o_(K}5h4B$ zQWY)ue;q73o)M^&jmoo}|6DDw;8E-co~$d1@_5zC1^igRaz!h!SZ>LOXR_x?MzqRY z#CA$9$l!z6w3e1Uz6@fhOps?en9oNs@rI#x=#S+JZmq`Q<&bmWO_YN-n|vdY60exz zT}7k#|0|3G#zw_eS(+t6<)I3va4MFq0}9WZ*$|P$O}fBeBn8YJkW}}J$^kYK4ln<< za$4_*T6GxzQ-U^i{g+5EdKRJyou2{>McdW@@MlQ>F`%PG`L8hi4~Om(wyAsi8=7HV z7W0Zu@yp}CfuL-miNW|Gsrpy(L;rM}0I{cNpnY1S#3ctGk5oqb; z|1nBNl|K59uPxnw%zJd30I^r8|0%6eV_6ksJN18s`d4wn{xN^j`^WqWZ7M&36y-X_ z{bya~Px)~Mq&w-K#KA(@EUWOV^i+KTS`-}$0r58JM=_*z*~^4!ZnAese?~K)#;@Qv zf#?*!8y(_@XROj!aYcXhzR~ta)c+A`#5W7(TDm@p>3bI-HcRKn%g98EKK>DC>!kl7 M`TtHt7fD_Jze-)yivR!s literal 0 HcmV?d00001 diff --git a/threads/build/lib/kernel/hash.d b/threads/build/lib/kernel/hash.d new file mode 100644 index 0000000..7ef0725 --- /dev/null +++ b/threads/build/lib/kernel/hash.d @@ -0,0 +1,5 @@ +lib/kernel/hash.o: ../../lib/kernel/hash.c \ + ../../include/lib/kernel/hash.h ../../include/lib/stdbool.h \ + ../../include/lib/stddef.h ../../include/lib/stdint.h \ + ../../include/lib/kernel/list.h ../../include/lib/kernel/../debug.h \ + ../../include/threads/malloc.h ../../include/lib/debug.h diff --git a/threads/build/lib/kernel/hash.o b/threads/build/lib/kernel/hash.o new file mode 100644 index 0000000000000000000000000000000000000000..739487111cf384d734ae41d8cee94d3705d8c462 GIT binary patch literal 21256 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 h6Dq_&K(5GaoQBd8}C!s|6fDF#?Sx& literal 0 HcmV?d00001 diff --git a/threads/build/lib/random.d b/threads/build/lib/random.d new file mode 100644 index 0000000..5eeaa0d --- /dev/null +++ b/threads/build/lib/random.d @@ -0,0 +1,3 @@ +lib/random.o: ../../lib/random.c ../../include/lib/random.h \ + ../../include/lib/stddef.h ../../include/lib/stdbool.h \ + ../../include/lib/stdint.h ../../include/lib/debug.h diff --git a/threads/build/lib/random.o b/threads/build/lib/random.o new file mode 100644 index 0000000000000000000000000000000000000000..a0c384893e33476405b03cea555884c5ebd9e075 GIT binary patch literal 6368 zcmbVQeQX>@6`$F)eV5qr`Ku7)g3fJ8DdO&8#R(xzQrFS7>olUKt!aoN?E6^zuDK8E zZm&(!CbYOoeX=6i2-HN1+Wvt`|0(}aSp`8ciIl`bLKc4js*teMB7z!)pa{iM0>^tZ zZ+7?QY#}l7&Aj(}pYwKhX4c<}A9}*zoTW7TIjP2GnY3u>*lw?134p&34Q$UnZNa)l)aDbMYHiHGb=A{2n^} ztZy!UulgJ77a{_5z*^^L+l-m`J^tFMdo_Sg|M^P%E>i|mnr>*Z#}Gy{tEL5>=Hj<3 zeho6>D=dB&Qn+h7Y1ke-FSD@dRLTZj^hxKN`qFi%VWjtn*k9PZtYu z$zvN#S3DV1$76)w|5YbVT}z{_K8=Pnn+$$!Hhw3x7{Aky|6F_xQk{vfaa>5&xzUE-mVKKilGIN@K{X@T zjHHR3vH3CVg8{+t7BLt?-qh5bEjS?aw9TG8YIDqt8HO}!l7n>7oCL`Q__d(l8Vi&e z@2mp3NrVFepz$o@U8qNE{5rm_iL@ez!o+BPEi#V8aZP{}cVP|R*2 zvsvk>a2acPK0&N(RWq4}cP-<2#Tv77i0P2)f3?XdqdcWPET@$TC}$1A`pA3nR?# z7~^|zcE-Y#8@CUWcDY}oL3=P1L^YXBKTx9GrjcJn8yUayJ z?VY?U(D8Xli0S8w5 z9)fHc3*mrSc0{=f{*>|2=X+AU=Vg!JdVl^SkX^pckhR zJZBz_#^5iPO)^Pk3#nWsZ3~2z5`}azA5GzDRd&*8dor5Az(B*xCut~;Oa;7~Tlwv` zm){rVP zV5h^WOrpdP3cC>QCgn`A*I+m@6^=X&ZYM#xn9qXeQX+3hri&2TE=hbk2cb}58qJX?JBie>$aJab*eRz- zvu&Jm1)S`LI+b5aOpD5~vTdiQSu9h`+p$WrQgAAT&9@rh-KKO`4 z;Z7tQKlu#f$2)jmTOc?OOZ0w#@rO<9B#*auoHY(?X(?U-4Jq3z#q2hYN^aZ~3TS(j zIe4#!~Hl0 zgoazKz=@}U!PY2nbtP4J7vbu}P&jVS@P0uro7$z3GnqJmN#YGA69=yc5M^pxmQpai z^G88qH02>vhaqE%Sv0_ahZ;el?;eP*{6V0)U|woIVod-RBm7~SvO0qI5-ZL`kHVE+uZFAj^o1U)}(JV*~t69j5?4(Qq|i zymny2!C!|<8{og!aA6GHUv!-Kf9NCkXGP5%m#&hvt8uh94qaT?h3#JmS;$zs=iy zIQpL>KRY#C*$itqzVFyZG{{Amq` zGg7oO8vaG{|6{_D73+lfpX)g3|4zfzI{72v>Un*K_)j!_^bWRSLqzDGb*SraeZb)RKI8|1-cB3x zJM?gHA4XgC(FmWmqTxLTaZ|Exf7Aa^T~zA&Sn)ZEK6QHqm|DVNzcJ9e;HRlb4RUxy z%R|>40PXeWzk-`Mv?cO`^T*q&KL26Bbe{mRBXqUBgN(1~x?>>IF;xE+Jy3N%DHpmf zo-ga=KTnq-Wsmt|?t1=Nz;vGgvDYa6-;nV&T{jJ~_2Ms4e6>z6KJFKK{0d;`Q{@Sy zXc_th_(%(=ST(*1+UwbG6aPkI?5on9+bcUYR>|H~AYzp4bzIpg{4F35)0P=i_UDx% zjcWc1z5v8}_4^amZ-NxDe)x5w>{VUYi;X7NDgQM}7~SDdw@0;xcMq^tx}1#w?Qi=0 TF|YOPchjZsJ-;!~y8V9vI&Yd? literal 0 HcmV?d00001 diff --git a/threads/build/lib/stdio.d b/threads/build/lib/stdio.d new file mode 100644 index 0000000..c8f87c1 --- /dev/null +++ b/threads/build/lib/stdio.d @@ -0,0 +1,6 @@ +lib/stdio.o: ../../lib/stdio.c ../../include/lib/stdio.h \ + ../../include/lib/debug.h ../../include/lib/stdarg.h \ + ../../include/lib/stdbool.h ../../include/lib/stddef.h \ + ../../include/lib/stdint.h ../../include/lib/kernel/stdio.h \ + ../../include/lib/ctype.h ../../include/lib/inttypes.h \ + ../../include/lib/round.h ../../include/lib/string.h diff --git a/threads/build/lib/stdio.o b/threads/build/lib/stdio.o new file mode 100644 index 0000000000000000000000000000000000000000..fa5ca76a74f10cc2e8eae52357e8a94bc74000ed GIT binary patch literal 24616 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 JsWLkM{{djxhmQaN literal 0 HcmV?d00001 diff --git a/threads/build/lib/stdlib.d b/threads/build/lib/stdlib.d new file mode 100644 index 0000000..3ce6ae3 --- /dev/null +++ b/threads/build/lib/stdlib.d @@ -0,0 +1,4 @@ +lib/stdlib.o: ../../lib/stdlib.c ../../include/lib/ctype.h \ + ../../include/lib/debug.h ../../include/lib/random.h \ + ../../include/lib/stddef.h ../../include/lib/stdlib.h \ + ../../include/lib/stdbool.h diff --git a/threads/build/lib/stdlib.o b/threads/build/lib/stdlib.o new file mode 100644 index 0000000000000000000000000000000000000000..4e4dea3c4ff06a8acddae664d11d31bb47b8b3d1 GIT binary patch literal 11072 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 Q7SrbsN~b+d)zJ0-250X7e*gdg literal 0 HcmV?d00001 diff --git a/threads/build/lib/string.d b/threads/build/lib/string.d new file mode 100644 index 0000000..ee43697 --- /dev/null +++ b/threads/build/lib/string.d @@ -0,0 +1,2 @@ +lib/string.o: ../../lib/string.c ../../include/lib/string.h \ + ../../include/lib/stddef.h ../../include/lib/debug.h diff --git a/threads/build/lib/string.o b/threads/build/lib/string.o new file mode 100644 index 0000000000000000000000000000000000000000..3909e7967461e5be7b0a8519d8c42c6e6d80ee4f GIT binary patch literal 18200 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 literal 0 HcmV?d00001 diff --git a/threads/build/loader.bin b/threads/build/loader.bin new file mode 100755 index 0000000000000000000000000000000000000000..77db50cde8a01f333147a4f8f059109eb7212327 GIT binary patch literal 512 zcmezMNAp16fxa7k7xpmJJV{x>RQhYf#b+r{*8OJ*X*(2NFfgR;w;{R|L5lgDtxe$ z1!S4iyMr${9{osj+Mw_btn|$aj*{Oy8G!0{eEIAjwH#0* z82tYaq-LFG0MnDsGl(-N)-o{c^RL~)r}2MH%Yl-AX9Zq=4@k_*Ojd+y8T?e}DgX`! Bj8^~v literal 0 HcmV?d00001 diff --git a/threads/build/os.dsk b/threads/build/os.dsk new file mode 100644 index 0000000000000000000000000000000000000000..512335f6eed049e0a3e7b914c1ce8d6cced7d4c5 GIT binary patch literal 135680 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 VRwS?@ffWg?NMJ<*{~t@>-vL`T>a_p> literal 0 HcmV?d00001 diff --git a/threads/build/tests/threads/alarm-negative.d b/threads/build/tests/threads/alarm-negative.d new file mode 100644 index 0000000..6447dce --- /dev/null +++ b/threads/build/tests/threads/alarm-negative.d @@ -0,0 +1,9 @@ +tests/threads/alarm-negative.o: ../../tests/threads/alarm-negative.c \ + ../../include/lib/stdio.h ../../include/lib/debug.h \ + ../../include/lib/stdarg.h ../../include/lib/stdbool.h \ + ../../include/lib/stddef.h ../../include/lib/stdint.h \ + ../../include/lib/kernel/stdio.h ../../tests/threads/tests.h \ + ../../include/threads/malloc.h ../../include/threads/synch.h \ + ../../include/lib/kernel/list.h ../../include/threads/thread.h \ + ../../include/threads/interrupt.h ../../include/devices/timer.h \ + ../../include/lib/round.h diff --git a/threads/build/tests/threads/alarm-negative.o b/threads/build/tests/threads/alarm-negative.o new file mode 100644 index 0000000000000000000000000000000000000000..17d7d22120de40e34819215b3efc35056a1702bc GIT binary patch literal 3840 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 literal 0 HcmV?d00001 diff --git a/threads/build/tests/threads/alarm-simultaneous.d b/threads/build/tests/threads/alarm-simultaneous.d new file mode 100644 index 0000000..be3dee4 --- /dev/null +++ b/threads/build/tests/threads/alarm-simultaneous.d @@ -0,0 +1,10 @@ +tests/threads/alarm-simultaneous.o: \ + ../../tests/threads/alarm-simultaneous.c ../../include/lib/stdio.h \ + ../../include/lib/debug.h ../../include/lib/stdarg.h \ + ../../include/lib/stdbool.h ../../include/lib/stddef.h \ + ../../include/lib/stdint.h ../../include/lib/kernel/stdio.h \ + ../../tests/threads/tests.h ../../include/threads/init.h \ + ../../include/threads/malloc.h ../../include/threads/synch.h \ + ../../include/lib/kernel/list.h ../../include/threads/thread.h \ + ../../include/threads/interrupt.h ../../include/devices/timer.h \ + ../../include/lib/round.h diff --git a/threads/build/tests/threads/alarm-simultaneous.o b/threads/build/tests/threads/alarm-simultaneous.o new file mode 100644 index 0000000000000000000000000000000000000000..e8e8a8b7713e5965429f468e1b9f817030b5379c GIT binary patch literal 9592 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 Dno^pG literal 0 HcmV?d00001 diff --git a/threads/build/tests/threads/alarm-wait.d b/threads/build/tests/threads/alarm-wait.d new file mode 100644 index 0000000..3dff7e7 --- /dev/null +++ b/threads/build/tests/threads/alarm-wait.d @@ -0,0 +1,9 @@ +tests/threads/alarm-wait.o: ../../tests/threads/alarm-wait.c \ + ../../include/lib/stdio.h ../../include/lib/debug.h \ + ../../include/lib/stdarg.h ../../include/lib/stdbool.h \ + ../../include/lib/stddef.h ../../include/lib/stdint.h \ + ../../include/lib/kernel/stdio.h ../../tests/threads/tests.h \ + ../../include/threads/init.h ../../include/threads/malloc.h \ + ../../include/threads/synch.h ../../include/lib/kernel/list.h \ + ../../include/threads/thread.h ../../include/threads/interrupt.h \ + ../../include/devices/timer.h ../../include/lib/round.h diff --git a/threads/build/tests/threads/alarm-wait.o b/threads/build/tests/threads/alarm-wait.o new file mode 100644 index 0000000000000000000000000000000000000000..5074d31fe5aba9dcc8de44d2057c1a462dabc87c GIT binary patch literal 14320 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 literal 0 HcmV?d00001 diff --git a/threads/build/tests/threads/mlfqs/mlfqs-block.d b/threads/build/tests/threads/mlfqs/mlfqs-block.d new file mode 100644 index 0000000..50951f4 --- /dev/null +++ b/threads/build/tests/threads/mlfqs/mlfqs-block.d @@ -0,0 +1,10 @@ +tests/threads/mlfqs/mlfqs-block.o: \ + ../../tests/threads/mlfqs/mlfqs-block.c ../../include/lib/stdio.h \ + ../../include/lib/debug.h ../../include/lib/stdarg.h \ + ../../include/lib/stdbool.h ../../include/lib/stddef.h \ + ../../include/lib/stdint.h ../../include/lib/kernel/stdio.h \ + ../../tests/threads/tests.h ../../include/threads/init.h \ + ../../include/threads/malloc.h ../../include/threads/synch.h \ + ../../include/lib/kernel/list.h ../../include/threads/thread.h \ + ../../include/threads/interrupt.h ../../include/devices/timer.h \ + ../../include/lib/round.h diff --git a/threads/build/tests/threads/mlfqs/mlfqs-block.o b/threads/build/tests/threads/mlfqs/mlfqs-block.o new file mode 100644 index 0000000000000000000000000000000000000000..d3c48ea47bfe386936500736f500d7b0e9686fed GIT binary patch literal 10328 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 OeTL$HRy77%xBnl*7VGr@ literal 0 HcmV?d00001 diff --git a/threads/build/tests/threads/mlfqs/mlfqs-load-60.d b/threads/build/tests/threads/mlfqs/mlfqs-load-60.d new file mode 100644 index 0000000..9fe145d --- /dev/null +++ b/threads/build/tests/threads/mlfqs/mlfqs-load-60.d @@ -0,0 +1,10 @@ +tests/threads/mlfqs/mlfqs-load-60.o: \ + ../../tests/threads/mlfqs/mlfqs-load-60.c ../../include/lib/stdio.h \ + ../../include/lib/debug.h ../../include/lib/stdarg.h \ + ../../include/lib/stdbool.h ../../include/lib/stddef.h \ + ../../include/lib/stdint.h ../../include/lib/kernel/stdio.h \ + ../../tests/threads/tests.h ../../include/threads/init.h \ + ../../include/threads/malloc.h ../../include/threads/synch.h \ + ../../include/lib/kernel/list.h ../../include/threads/thread.h \ + ../../include/threads/interrupt.h ../../include/devices/timer.h \ + ../../include/lib/round.h diff --git a/threads/build/tests/threads/mlfqs/mlfqs-load-60.o b/threads/build/tests/threads/mlfqs/mlfqs-load-60.o new file mode 100644 index 0000000000000000000000000000000000000000..e697c802f02c1cdb0d72ee1c6048be000249de78 GIT binary patch literal 8544 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 C9rMiq literal 0 HcmV?d00001 diff --git a/threads/build/tests/threads/mlfqs/mlfqs-load-avg.d b/threads/build/tests/threads/mlfqs/mlfqs-load-avg.d new file mode 100644 index 0000000..37e6eba --- /dev/null +++ b/threads/build/tests/threads/mlfqs/mlfqs-load-avg.d @@ -0,0 +1,10 @@ +tests/threads/mlfqs/mlfqs-load-avg.o: \ + ../../tests/threads/mlfqs/mlfqs-load-avg.c ../../include/lib/stdio.h \ + ../../include/lib/debug.h ../../include/lib/stdarg.h \ + ../../include/lib/stdbool.h ../../include/lib/stddef.h \ + ../../include/lib/stdint.h ../../include/lib/kernel/stdio.h \ + ../../tests/threads/tests.h ../../include/threads/init.h \ + ../../include/threads/malloc.h ../../include/threads/synch.h \ + ../../include/lib/kernel/list.h ../../include/threads/thread.h \ + ../../include/threads/interrupt.h ../../include/devices/timer.h \ + ../../include/lib/round.h diff --git a/threads/build/tests/threads/mlfqs/mlfqs-load-avg.o b/threads/build/tests/threads/mlfqs/mlfqs-load-avg.o new file mode 100644 index 0000000000000000000000000000000000000000..771ae3eca0ae86e2e0369de7c3d26149befe05a4 GIT binary patch literal 8656 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 literal 0 HcmV?d00001 diff --git a/threads/build/tests/threads/mlfqs/mlfqs-recent-1.d b/threads/build/tests/threads/mlfqs/mlfqs-recent-1.d new file mode 100644 index 0000000..2905d5d --- /dev/null +++ b/threads/build/tests/threads/mlfqs/mlfqs-recent-1.d @@ -0,0 +1,10 @@ +tests/threads/mlfqs/mlfqs-recent-1.o: \ + ../../tests/threads/mlfqs/mlfqs-recent-1.c ../../include/lib/stdio.h \ + ../../include/lib/debug.h ../../include/lib/stdarg.h \ + ../../include/lib/stdbool.h ../../include/lib/stddef.h \ + ../../include/lib/stdint.h ../../include/lib/kernel/stdio.h \ + ../../tests/threads/tests.h ../../include/threads/init.h \ + ../../include/threads/malloc.h ../../include/threads/synch.h \ + ../../include/lib/kernel/list.h ../../include/threads/thread.h \ + ../../include/threads/interrupt.h ../../include/devices/timer.h \ + ../../include/lib/round.h diff --git a/threads/build/tests/threads/mlfqs/mlfqs-recent-1.o b/threads/build/tests/threads/mlfqs/mlfqs-recent-1.o new file mode 100644 index 0000000000000000000000000000000000000000..36df46a00c1c49f1cfca83e5184ce96ab3017c89 GIT binary patch literal 7160 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 NnEL;^=8LT9|8L!_q)-3= literal 0 HcmV?d00001 diff --git a/threads/build/tests/threads/priority-condvar.d b/threads/build/tests/threads/priority-condvar.d new file mode 100644 index 0000000..1ccd05b --- /dev/null +++ b/threads/build/tests/threads/priority-condvar.d @@ -0,0 +1,9 @@ +tests/threads/priority-condvar.o: ../../tests/threads/priority-condvar.c \ + ../../include/lib/stdio.h ../../include/lib/debug.h \ + ../../include/lib/stdarg.h ../../include/lib/stdbool.h \ + ../../include/lib/stddef.h ../../include/lib/stdint.h \ + ../../include/lib/kernel/stdio.h ../../tests/threads/tests.h \ + ../../include/threads/init.h ../../include/threads/malloc.h \ + ../../include/threads/synch.h ../../include/lib/kernel/list.h \ + ../../include/threads/thread.h ../../include/threads/interrupt.h \ + ../../include/devices/timer.h ../../include/lib/round.h diff --git a/threads/build/tests/threads/priority-condvar.o b/threads/build/tests/threads/priority-condvar.o new file mode 100644 index 0000000000000000000000000000000000000000..48465e0230296b00290f6fd811045f8dbbb2482f GIT binary patch literal 10816 zcmbW73y>7W8Gw6sx!r-~9^CP`;~`7r;4t3a9URB;J{~7`#sUf?f`lx4yR(n5H@nX6 z!a)gAK+r3EK+05%(b8DH%T!ERQQ{L~B4}a?AE_i|G?)sB5>4VGN-6R3|J{Gj_BFee zlwI7+-{1e}zk7OmdSZ>1T`~PJeI96EN>$0AoNo~)QQhIhgNIlQVD!1)*?UoI_Qq&cL51lGac^K8~ME7}& z{O&F7mZI_uP6 z_qjtG&h^~X{m$SkO0qSe>=`^EvUK~kZ0OXX0ypM~7wy4R&1Qf1d1L?X^CPQo&JGO? zQEq?VR=O`m%G)Uh9eTCrSxAGIqLJE8X)0UabIaiupQj5}(=)jH+%VU{7mD5&Htb%f zVLtyW9e1GMx_ycGknXg6(y=13aDO^}O^!u!Im^kXGInrlV{T?J9!aIGSO^Cs6l#Hg zc`KLCwFsA7OV&wcoK${ib2MYewnv;$lt~n9jIs5pgdItz>_jLOVpsBJf{nRgE+2s= zfGTW9W}6i(WT7Q&AuOYWDKJ~+V{8P!E+)TuMsry?Z1of?9@CE%&j^0)hWn zsu@)V#DkNED=J1*r0l%VduuYN5FQ@GL^JN_op1y9;4uZ6*zPK)+=oihu24?D9SCn_ z#Hf|7Sot!DezT~nc?%s4o;`1@rsAqm(8ZB}S;a;aN#2CA3C?E#anoSMmbtF!HxZL* z808va)Z{a-mPWpjn6WVOjjG}Cc%)X}*y~)QaqodhM&q#olZ`?*X81RvDv(dbnE&e6 zywb|Q`5}-;@Ra@Ecnf4x$Xm96NxhJ_#y}1VIg0r;1@dv`&%6X(?-V$T*`0$PVlJYG zzF+|KT9lxV{tf9ZfE8=lueN5FmpW0H6YJs<^+`ML2hGaJ<36l zTbbE_a#O&W&&-J^wg#L|W==w}GvMS>%$$sJSHOvZJO$;RfYX;{=0zy41wO#csVHv@ zI8l&;C~pNDkf))X3^);xzk)LO!I2#^8*#`2>zLVu9b^G3$IMx~K^owlH7`MVmyo}D z3&__7VqkJ9;=KYlqr6YZAv8H4pA_;^bbXrf8`D1mucW^Ur${A8bTqi^ z;YY8ytNatTfVS!%V2FR!%}}eBw`UC^ehc}x<83kq{+Ln8r!#0o5wPk*m>VNqSc^J? zuUjbn7!Od4J06Fdvo2B?0Odjeo+HVzTmy%vD;PX(shm(Nud020JP&%%&5cOdyb?hp!x}b#V*t%!m>}C*b-2S&R!(ElA<;hZ#d79jc)EA zfuURR;P|<2|8=f7vc?sC4MnjS+kaz`&VVanG*;CGyj7E`#u&B! z8W?rYbQTCK0mPWM8bnye#xrl#g22K+ZyhYaq=uW;*Y5JA4T~VGAMMe|tTVh-fdKj# zP#sz68g@dwQCwRgwE@tYB0OqGj{x5#0SqK9Dx1K6GU%!dqqhztR!?KSbuB<@W`F>* zpqPpWrb%rGVxafT2JBW>{r8qPpj%yq+Z39O9o%QIF-99`#)XWf4JCcXLug75eI{T_ zy>;ykSg8-d0M`03bVG>YAlOwR2xAion8KT}Ny9B{7+`iO{NZ9pYdDwipgy}@2tpq2 z7Z3XwB*XZ;suGTT9}Uzfu^XWsO3IF=3o)xDo$AvF?OHSnb}id1$F|b2I$yY-fyQ$A zSj>utl9)TluvHLp%1)sKGd`Wlp#*D7Zl@hh3MiTrGWb}IQ^=Bi%<3y7Km!5!h6+Sz zXHj1vmCiS(>?L9lMvAe5ig%205VkXh&s^m5EFEiZGOsr40C=CqgQs;YKQ(jYX{_X? zm;3HV`W-x&oA~iAemujE>)~klF8B3!J>|Ki4kDi6Cyy6K8M1Z4aVOGm{lB|D*b#*D zES-sNW1`z(8@=Utx`N!#g@qL>KvNy<;F?QjoO}>!ESK740l>Uw^ z-IC1oTP=mYf}Jn4WWj&UdUtb+S0l#YvSl1dJ7)1@voJDwwrcf;;EJ}k;Jnb>P;0Qc zKbMK;o8#$BBo7rk)9hHW=3N=vf?Bj6T+@rw5hsCFP{IxygnYra7AGv*a#B&KMx1DJ z@jz!sb4PoyIT37L17YJ}oas+NWV{s3*$m`oIf7@?&=eYE(H#ZYRY$iqXPr#mismy8 z%h@pcHf*ud89Nc=2dIj^=lI5)MUxRns8NGgFC2+pQ%J$c(p7|@`9h9ux1wP?!xGuB zV{~G-0uI5x-5GW{cAt7G9poq(x<}ICY5AJaOt2If^Nb>GSRnYl^1x%1t<#sj~cv zH7mZ>y^>`!J1i%hiO0h`l9nBg!R(SIcn@rXM)>lPvcv9`r;8}w?D``K7^kdbZD%l@ zV1yE|<+QDVJY%a?tXL3i+Q9DuF{hj7hVdW(?FAlScc^ z!?1cy1}*+!;TxT0RW%1aD=K~7M~oN126caV`e+;o1<-C=&xN$(aIRQ(sl+xjO8rfjfI1g&r_m zDOY6*%AXe8h(Cep(*oW*uw#WkSuP?0IsfKD^(KwWnK@hI@;+Rqap}KS;c`twgzr{Z zuwB^Dxg|joa{gXN^_;@dzKiO+6)x8TL^ms(zxGl6PYTEWuA%xT3WrU&TdFY;D0sq+ zqP+hmE8Kng0sT^itNrR#_(ZUiWrM;opUtF*DcpTU16@|(YW!Uq@1i&d6fU0|sKRFn z7CfnOZddpeZXpiODO}DO)ci)_n1523vo{s4=Krq3)pkEpxH>*V3Rmsrt{v6LyQtkd zyhu=xPvw$0OjWp=e@Nk&|Fz_^SmA2^y$Vp z1MQJZA9*iGewO^@+(UOtfoo=w9_{&;AgZ@29OK975k61j*Hf@AjlWNMc57VThwC)H znc{5HxV)b&jUT1Dqj5RUc51wv;_uP;t;7#${4?Tm-IC+EhxiXP`)^VGL5(NK{zn?0 zK;t9(A>*H>aeiL2Z=^W*e8VE`ZzcP;1$Oyd;(yinofPLojlV(mUugU+@iCOIYo$EpfT-$@t$D;h9|bB$wken%a@Pp6b8SIE7*F zX*@{np40eD;?;DP@k3OX^Fs1tY#ars<7qVZm; z->LDnRDW3GUdr<+jpIHR%W;iANc9sM|2EZM*7yL`U)Q+YKYgI_cW8V**Z4`Q`{-dK z$64MNwZzd~eI8BH?B%?gso8g7XQ8xe_HrHXQ0#HYJfZ8Sh#^dgAk zhoSWGyBwGv6A(Kz5|51S)s$M5e~-}_`r&W2SX#x&J?gd_K~pOK-(M_Tq(A15De3v+ zb4rhio(rk{0Zpk@8GiRH)xJ3$qrk7K;soDP#XGg$KEA(VOqnN{v&ZN~{h!*zlI_d$ z4Q2fAp^0*d3`l3`C(lR7Uo&IBCV!nvKgn@^BGc#ZDe}kbqZZkJ$$khzsqqWa_{nj> z@xzePUyf_3wlQ|o7(7Cu@xyPA7(@5RIiU?P5b&puhM)3U@u2q~n3up!cxPUXeD+?^h$0BTeYdmO)SWt1Coq6+dn4KBk zyy3$H!9WZvlCY=gk=C51F`Al>HrV4ysU`-+sI;feny-VL9!pbcZCIl*ZG*AL?f-x8 z|Gv3;1;D5zrqR zG0qqxLw#>xHU}5fN`B~hnWHgsxslsrpyUs&=YG~;9pCx3Wn8fC|M_{W_mHoahvT=7 zcrKntg_FE0-1NK^y~r)YRRNC}#;O?4AFI4UeX`U}eL%g2&T7>=*7wHHtKd@`Rjm@g zTjl!RI9?hf6Fxnv_103Op$<;_+)nJ#hYt7n^oK6g7=CX)j=gfiy8i{7>38ltD<=No z(ROR-z(i@G&)`#1 zcUoPVFgd+sKPYo0M=i#O*6r{M?Nl`D@Msunc4b`eKd{Fq&Ygu0h&JENI(8xzAIztB zmsz4*wjDQDEJW^ERK6yXPUP}-Du$Y|SO@%b?Xp|$5GLi0l9MYsId^|FRV*Z2JDSWU za)nruEhw80iFhC@XN#45Dw0j?u_Mw2$YYVn#-v+GWD69~-204AG^X3Pj~M^VVlrC9Ker~T4Z@XixJH*kyKUEc@V6!gxWpfX#~ z_oRT12s(-RwTIj^3l^V*uJ;JIgxOtz9%3#$uYG0<%0o`q3TC!q)sXIH<_x4wpqDdq zCemS`uVdycq-O)&#mw1AM}Y2RW*gG&A!ju+=OEb`a(b9K7s;NGQ_eAS9@4!bCk6CX zNLwLipv26pk-io1ea!p_(%VB$66grh_ka%2^O4SmoCMGdkOn)rvNPr)tW0PtGuz*R zKCzHpX6BLuK<(pQHkTrOub`KG9_UYnQlN4z!iNMLMf%f%j-kpCL3d)Hqk`^6`b5ad zLEu&21o~ts32u7O^e=_VYNQ_(^cr;Yn4qsm(zxu`c2+rCG(x#t)BL1Hi1#X&Lg<*vFN(t`4)gYFE z@zG{jNIa;q2uY$BBaO=dXLU2c%oxNgw$WqXz`r^%Q3heQFk3{}`A_;8V2O zlK4}q*L)BQvtE1#_=n&Aq+mCS5Y=*p)!u$YWq!*#OmI*w-cr@w3YFu_m06 zSTH`l1FQ+_|AOR$tm$8X#~O0^92Q1do2+8+fjNWa48#AE7kX%5PL-VJk-=kgrCEp* zRmnk*oD}xR;6ol6Xk$jRv8bsfW69BNMcx-fo>1q(6$!b22mfC%ofAn6bhk@0qmryo?;L9o6Mz+QW^rODcqxUN(0!g z51}KeF|{4+=Yg!rF#222p{=HinV?ANq2esG>u>39LuPge3OGH8k=kMmi%@71P8gd* zfGMmQn>${k00m~(!hf+0`IAnLBvZFA9tgx&VOsgvyFeMndrec}%Fn!j8Z~x`w0q1I zlKD!??#Sl`G=z4P8VY(HyKJXm=i%*DXRiqn%Wf)Vr(;>{0MM{)5;SZRk%9@H&y|sa z=Wls`A(<7Rh$(2k$8;(s(ofj~l?+J0A>Z)=331jARC0MYnk%dqm6$}&EtsEC;|y%= zjDWc|;M>q@wgTfH#*6RTW-hoXkTZAqmbQM+*V*z6N78Wh`4&uvTf=s|1k5kt&9?@v z8+>b9_^o#azjboXzuULW0Nxk4Dd3;}7vOPC>#1``&Y4;694@^xfdTY^XM9Ure0~@g z=$aExJBdM?!5%5@GTfHat~_2qSeBMmKzC&~sK5^0aU;O7a_(Lm06U#eWXjyM%*ys) zq68W?yUp6#w{dfP>$WXh`nTMOJ9TcpCy}o}G;y#pQ&(4HRcuA9 zGZGyv7t?Muoi8R_U<$>kW2d6`77I3T$w4s9ugfQ#46-1EBM%U6rC_hi*ah3kC4o&i z$?Up)Ju9OtyCcy|Bzg!8>Z(5{t$;u4G7d3%uY#S}uyyT+re z?xC0WePY>YiEQ413xt>(ZoXyH$NM(3QgN^C#Ea>4d~en+;Nh~mq+ng`fYj2JLNXo) zfIptscU^w1Z)4tQIQSE=Wc zBO#h_g;e1A|I4un0s!DKSqlan-W@d>9Uvx1{0z3>T7%sPcyDA83L!U1*8uJViQN3k z4L@ff_Uu<KD;E~?f1aGtN#{0z4g zS9?&BKw>tE+CP7(!1Xkb8wO&g6eS^mX@3BNa=&euO zxQ8nDBi{+$Ou?DK565uFwm{tYj8Rt=Zd9?MKH_qwtwa!-#3MA-`ULFZ?Zn@v;IM1< zT3W&7GYz3f6r7)5iO2bZ4a3dkl(@V^G~)cAN<7XBY%))o$0Y%C95(b`n?(JP`U#Rm z6da#1vc0C@xIdNa?6QK-k;-uYwSvoM6N(#YbBkg%|G5f|^)I0^w51BJ=D$h7QU6h{ z&Db3ZuI9gA!I6~D!3Pvv&Hw8PF5fd4;@b+Y_Ui=&SNru71;;#3p%ZAYE4bRPc6v2n zebjMZUkATQ!PU4s6ddFJ0E0ryD!3Z=J_T3%`=ElW{XMDRYTUn3aEyBqgF^eRf~#?V zrr>JaUnsa5_x}`JjXRazYgjk6&hr#pjk{LCRX-nBaP)&8j$5t z_dePqhF=F?7qIyL2DHT2Qh(&ym-t_kzMR9D22B|*SweEupF%X=I*FEk2Fd>_4gVu@ z)~n&)p#Ju0IGs(|Rt>+J{Or*1ZsKhX$M-Te*a-3_^BktQ`!(E8{_oT9y9qz0;b#ax zq2U(ck7)QZ;-Ap)F4C9dAoILHdZ#u0Hku!2HT>VHUq9CHM`&FBO~V6(|A&TWD4%yU zyp`gIP%|55UDm4<(o?3ZZx`^2x*a5)cd(C{+(*`nbyDej#b&c8>4O-92X zB0psfmvIki_$Bg>Klo#l{rwT)k8Ajw#6PLw3xqlQu7>lUG(dJv!{zhzqJ}q7{ePw5 zKPCQeDKD8Pg=I2diT{%H{#DbzLj3<~_!#lJ6yp0e zyoLB}8ZMtB`!rm}JEGz9i67SR=P1udHT*8h^9c?A7V+|ZBHjU#dsEYw`;B)sT<&igX}(B5A0>XahRZyzCLGhip_TquX!^}G?wd6I zj}d>XhNp0zohEJn@{YJxA5FVtBnj9CK@Ky~!LHGg3F((l*s?-PEzhQC61Qp4XOyrkhzQJx1hT<(7!)bM{M{f9OD7ldCRT+TOn_IRxh z{)_2Aew6Z=q2c&zEw;HDF7+cCF88Ag z>)^{Yd^h#0qYl1O!@o)TYwF+|HT)|geb!e8r*iWB5C4M#(ht*J&VOQAfa;{<5mLbP zC`FD~8ZMvzavey0`95N?^8P_L0YA)@T}Rxrl7f#liI|I@hhwRPn_#g4_-l-qQxpuB zijV%eLb?b#{F72*U;w`|#}skGNfhvVvx?<&@X?!0ARdb)i-UtU{N4~Nz%M5;_+>}@ zl0rsymVV2k?)~1k2v}k*;;+I(JhVfaP-7YX`G=07-QUp%#ZF|D zrt5A8S*`rrmkJ|kkNM;J*7M&DnC=rT|C8c>T@z|7{|%&8{OuH9&NGaUdt*KR0l?6w z%o9l7hH0RCXdXyh#+Ub_AgE=3jy{@F8q(bBtF#{`dryIgUy;3zOFM~w6$r%i`Fn-z zF+a7*{!8r3K-8*Vi4wO+5$lH~k@m8#wPK^mA^Jdcni9ir%gr_HaZc!K7a-O{0e+2) V()9kL&sz4UDgRT7Et0zZ{{zrM3AO+L literal 0 HcmV?d00001 diff --git a/threads/build/tests/threads/priority-donate-lower.d b/threads/build/tests/threads/priority-donate-lower.d new file mode 100644 index 0000000..669b407 --- /dev/null +++ b/threads/build/tests/threads/priority-donate-lower.d @@ -0,0 +1,8 @@ +tests/threads/priority-donate-lower.o: \ + ../../tests/threads/priority-donate-lower.c ../../include/lib/stdio.h \ + ../../include/lib/debug.h ../../include/lib/stdarg.h \ + ../../include/lib/stdbool.h ../../include/lib/stddef.h \ + ../../include/lib/stdint.h ../../include/lib/kernel/stdio.h \ + ../../tests/threads/tests.h ../../include/threads/init.h \ + ../../include/threads/synch.h ../../include/lib/kernel/list.h \ + ../../include/threads/thread.h ../../include/threads/interrupt.h diff --git a/threads/build/tests/threads/priority-donate-lower.o b/threads/build/tests/threads/priority-donate-lower.o new file mode 100644 index 0000000000000000000000000000000000000000..e0fdb9282b39537a6f6ee1c81fe3a730676f1592 GIT binary patch literal 10280 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 K%BEb>?f(b%35=ou literal 0 HcmV?d00001 diff --git a/threads/build/tests/threads/priority-donate-multiple.d b/threads/build/tests/threads/priority-donate-multiple.d new file mode 100644 index 0000000..3ecb87e --- /dev/null +++ b/threads/build/tests/threads/priority-donate-multiple.d @@ -0,0 +1,8 @@ +tests/threads/priority-donate-multiple.o: \ + ../../tests/threads/priority-donate-multiple.c ../../include/lib/stdio.h \ + ../../include/lib/debug.h ../../include/lib/stdarg.h \ + ../../include/lib/stdbool.h ../../include/lib/stddef.h \ + ../../include/lib/stdint.h ../../include/lib/kernel/stdio.h \ + ../../tests/threads/tests.h ../../include/threads/init.h \ + ../../include/threads/synch.h ../../include/lib/kernel/list.h \ + ../../include/threads/thread.h ../../include/threads/interrupt.h diff --git a/threads/build/tests/threads/priority-donate-multiple.o b/threads/build/tests/threads/priority-donate-multiple.o new file mode 100644 index 0000000000000000000000000000000000000000..fa82c6e2cd3885c5b21745c53f464df0cbc709d5 GIT binary patch literal 11416 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 literal 0 HcmV?d00001 diff --git a/threads/build/tests/threads/priority-donate-nest.d b/threads/build/tests/threads/priority-donate-nest.d new file mode 100644 index 0000000..9c83345 --- /dev/null +++ b/threads/build/tests/threads/priority-donate-nest.d @@ -0,0 +1,8 @@ +tests/threads/priority-donate-nest.o: \ + ../../tests/threads/priority-donate-nest.c ../../include/lib/stdio.h \ + ../../include/lib/debug.h ../../include/lib/stdarg.h \ + ../../include/lib/stdbool.h ../../include/lib/stddef.h \ + ../../include/lib/stdint.h ../../include/lib/kernel/stdio.h \ + ../../tests/threads/tests.h ../../include/threads/init.h \ + ../../include/threads/synch.h ../../include/lib/kernel/list.h \ + ../../include/threads/thread.h ../../include/threads/interrupt.h diff --git a/threads/build/tests/threads/priority-donate-nest.o b/threads/build/tests/threads/priority-donate-nest.o new file mode 100644 index 0000000000000000000000000000000000000000..58e1fba092c6d73582afd69331ec368633cfe0d0 GIT binary patch literal 12144 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 literal 0 HcmV?d00001 diff --git a/threads/build/tests/threads/priority-fifo.d b/threads/build/tests/threads/priority-fifo.d new file mode 100644 index 0000000..3fbb145 --- /dev/null +++ b/threads/build/tests/threads/priority-fifo.d @@ -0,0 +1,9 @@ +tests/threads/priority-fifo.o: ../../tests/threads/priority-fifo.c \ + ../../include/lib/stdio.h ../../include/lib/debug.h \ + ../../include/lib/stdarg.h ../../include/lib/stdbool.h \ + ../../include/lib/stddef.h ../../include/lib/stdint.h \ + ../../include/lib/kernel/stdio.h ../../tests/threads/tests.h \ + ../../include/threads/init.h ../../include/devices/timer.h \ + ../../include/lib/round.h ../../include/threads/malloc.h \ + ../../include/threads/synch.h ../../include/lib/kernel/list.h \ + ../../include/threads/thread.h ../../include/threads/interrupt.h diff --git a/threads/build/tests/threads/priority-fifo.o b/threads/build/tests/threads/priority-fifo.o new file mode 100644 index 0000000000000000000000000000000000000000..9355ef416d25c1433bc8c5b7e0ebe64cc55d022f GIT binary patch literal 12328 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 literal 0 HcmV?d00001 diff --git a/threads/build/tests/threads/priority-preempt.d b/threads/build/tests/threads/priority-preempt.d new file mode 100644 index 0000000..cdc87af --- /dev/null +++ b/threads/build/tests/threads/priority-preempt.d @@ -0,0 +1,8 @@ +tests/threads/priority-preempt.o: ../../tests/threads/priority-preempt.c \ + ../../include/lib/stdio.h ../../include/lib/debug.h \ + ../../include/lib/stdarg.h ../../include/lib/stdbool.h \ + ../../include/lib/stddef.h ../../include/lib/stdint.h \ + ../../include/lib/kernel/stdio.h ../../tests/threads/tests.h \ + ../../include/threads/init.h ../../include/threads/synch.h \ + ../../include/lib/kernel/list.h ../../include/threads/thread.h \ + ../../include/threads/interrupt.h diff --git a/threads/build/tests/threads/priority-preempt.o b/threads/build/tests/threads/priority-preempt.o new file mode 100644 index 0000000000000000000000000000000000000000..ff1c7c307adab50415559f02e98749438ca2da0c GIT binary patch literal 6632 zcmbVQYit}>6~43U$HtEBwH=q5wCbcv+N8>kW8$VJjT7hL)()YKLac@#(K6nh-5okR zvzeK7Y)eTIDQQeWYAc}ps6Y`Cgg;e5qO?H4P$>l=p@xS5A^w1XidLfK2UMz2IOpDT zXYXF`s#34)x#xW6c^`A`oqcTP!~-eAV6qwPAZu_EW$fCP20hKmX*R;Pu=&~5zsPsM()Lmg~+XdWUb`Xt=!j`lWa8h~LlOt?%QH z`&QzcP5NpyEvtsj&0jxt_EkRIOK+L8s~6sQZDt(@@aB;w^VOd|IkUd{v)R>O>7J7D zX~UaYH!fXR@3{C6<$u z(~X_b=DF`EDsVCIooze>f8Yp`%z)sDvw;+29bBH_n|E`=Kv2udo=#=D5lnUPE}cnb zI+5r0sh%8)j4nh{DK6;j=yd&I}+s<;@ONRYA zs3pvwROat0vq6pZVI*S+pVR#}4^^Ww!~gE>4RkdjyRr${`DBB9j2VN*j{f1^bpO`=L1U;p`yrUE z?X0)=AV7?z2Y`e%zlEjy_xIl4J2%W&Cy8NwyCxF+(CC3tSU=Q9rOaInyG@oM4DTLA z@6)$Fdt}rAyr+|;Gs0mCYEm!wQP|C^pEcN^F%F7-mT_pbrHg)yJvTftiVg-0V{RB7 zXSYGzF-UpPVwjTOFN_%*A|N9o!OZQ3f4;jI->PyhnfekWAP`u_QtaFCG>rH9`{2nB z1Xu^7McJTI;`#-zUUbGhcR@p_yf7vUgi>F?XA~EUPRXiZia^7wC1}@ok%Fxy90
#zR%tlw{Kv(L}h#-f6+>*LyIP>-CR{%*rgOAilhOzrT zS2^DGD9BT37_Eqx_wA~~>X6UAiF_;zp{T1+#KPFbDiFCV4oG=g`I_y!1=hMGja7oG zGge=y`*D4&2Br^xA}PEJb=ND(2+OY1UhEuuz#=n%tM$H(}<= zX6|8dTLR^v>VoGGhMubhkfjp}yyihDRH&gj5>ady9)+b0Vy6%XA@c&iZ1M-rOF}Hz zk&~}gy$M$LBe(23MYB+`LzuV*-7rmb&_@%K&zI_cA)jYr?we#Sc4e!>jK|F%2?9^f zwR)_Hl$-oUE}lzy+7B3?)q?X*m=8*&{P~LG=kYXRFk7(nWhY|n!J|j_n>*+EDvQ<1 z?GX($H#rY`Nq)#)bk1bkS9BUgSX*RF{LmB zy*8p^HWf&5MQwWdNSW##p6_ZECR&t6$eb=m(BsZcj(MOz4FA{=S9jxfjy7<)a+Ze6 zeLAJ#JBdG`;K{WJuum#D9M4Jnw1Q(kCy9?WT;_98!(~2S)Nq;4a|*8J^SpxN(J1%f zD+-SJEE4~kg3H>3&~FqR^{){B7X`{b(Gz%;OJ)!L1?=bT=g@l;BZw- z+CvJi`ai4S=>PX*;VHQ4pI@#)rw9J|?V9xEWfXCwpCMfCF^PYN{7Rn^pC^5|Bl3o7 z$<+ktT>|ED)#|iI!7=WC$^U&CeueO94L?TsjE3(f{*;D0q%Zfa%pdDAwzBAWo|w-* z()Ts|5yI;l{x!l^G#q_ldqQ-H|8u1O1r6UrllQEKf1LEMY4~lV|2+-=GwJ_G!~a0| zbq$y6dPBqIJyY&4G{=zg{Sx1sqRt?mCI2JTOMN+?cWU?%;>R@n4Dkmve3AI$)XQ}| zM0uao^a*BVP5;Zp%XL5&-y>OnRy044kfSFw9DXw3?MoW|EyAyAxSZeTHT*5ozd^Vh z7s2dzZSa3+_<1sTvkm@l4c|-p|7nB&Ps9I8y!d<<^#u30#51%XW&Zff0JhC-aJ4RF zgere#iNVQcl}ZTI{1l}w-**dXA#uUn4r-1@s_M&o(mUfl0!UZ!EZrT2QL4X4<8m5 zeE5hD4Ki{ndH!)iqxj&R38pxga=xXfX(IG*V_IgZ#Rgvd-tC4b`uw2w<6w)S)V%>LTch~$97hbB+<$^&@T;(} zm%Qw+lfz-nu|BMif`_gBchO${8u|^+G#>i+ T2SL=z{$0xdg@!4obo>7U)}`7U literal 0 HcmV?d00001 diff --git a/threads/build/tests/threads/priority-sema.d b/threads/build/tests/threads/priority-sema.d new file mode 100644 index 0000000..d47c680 --- /dev/null +++ b/threads/build/tests/threads/priority-sema.d @@ -0,0 +1,9 @@ +tests/threads/priority-sema.o: ../../tests/threads/priority-sema.c \ + ../../include/lib/stdio.h ../../include/lib/debug.h \ + ../../include/lib/stdarg.h ../../include/lib/stdbool.h \ + ../../include/lib/stddef.h ../../include/lib/stdint.h \ + ../../include/lib/kernel/stdio.h ../../tests/threads/tests.h \ + ../../include/threads/init.h ../../include/threads/malloc.h \ + ../../include/threads/synch.h ../../include/lib/kernel/list.h \ + ../../include/threads/thread.h ../../include/threads/interrupt.h \ + ../../include/devices/timer.h ../../include/lib/round.h diff --git a/threads/build/tests/threads/priority-sema.o b/threads/build/tests/threads/priority-sema.o new file mode 100644 index 0000000000000000000000000000000000000000..2bffa380f5e1fa596b68a4f4901c581521593c1c GIT binary patch literal 7664 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 literal 0 HcmV?d00001 diff --git a/threads/build/tests/threads/tests.d b/threads/build/tests/threads/tests.d new file mode 100644 index 0000000..3e4c1ad --- /dev/null +++ b/threads/build/tests/threads/tests.d @@ -0,0 +1,6 @@ +tests/threads/tests.o: ../../tests/threads/tests.c \ + ../../tests/threads/tests.h ../../include/lib/debug.h \ + ../../include/lib/string.h ../../include/lib/stddef.h \ + ../../include/lib/stdio.h ../../include/lib/stdarg.h \ + ../../include/lib/stdbool.h ../../include/lib/stdint.h \ + ../../include/lib/kernel/stdio.h diff --git a/threads/build/tests/threads/tests.o b/threads/build/tests/threads/tests.o new file mode 100644 index 0000000000000000000000000000000000000000..6dd6648b4f8a8e982a8b5adaa185455357856372 GIT binary patch literal 11512 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 literal 0 HcmV?d00001 diff --git a/threads/build/threads/init.d b/threads/build/threads/init.d new file mode 100644 index 0000000..97afcec --- /dev/null +++ b/threads/build/threads/init.d @@ -0,0 +1,16 @@ +threads/init.o: ../../threads/init.c ../../include/threads/init.h \ + ../../include/lib/debug.h ../../include/lib/stdbool.h \ + ../../include/lib/stddef.h ../../include/lib/stdint.h \ + ../../include/lib/kernel/console.h ../../include/lib/limits.h \ + ../../include/lib/random.h ../../include/lib/stdio.h \ + ../../include/lib/stdarg.h ../../include/lib/kernel/stdio.h \ + ../../include/lib/stdlib.h ../../include/lib/string.h \ + ../../include/devices/kbd.h ../../include/devices/input.h \ + ../../include/devices/serial.h ../../include/devices/timer.h \ + ../../include/lib/round.h ../../include/devices/vga.h \ + ../../include/threads/interrupt.h ../../include/threads/io.h \ + ../../include/threads/loader.h ../../include/threads/malloc.h \ + ../../include/threads/mmu.h ../../include/threads/pte.h \ + ../../include/threads/vaddr.h ../../include/threads/palloc.h \ + ../../include/threads/thread.h ../../include/lib/kernel/list.h \ + ../../tests/threads/tests.h diff --git a/threads/build/threads/init.o b/threads/build/threads/init.o new file mode 100644 index 0000000000000000000000000000000000000000..133ec9990a32496ad5481252363742abb9dcaa08 GIT binary patch literal 20304 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 Wj}^43RQb{Es>IV=ke-G+#Qy->>6YRE literal 0 HcmV?d00001 diff --git a/threads/build/threads/interrupt.d b/threads/build/threads/interrupt.d new file mode 100644 index 0000000..7da8141 --- /dev/null +++ b/threads/build/threads/interrupt.d @@ -0,0 +1,12 @@ +threads/interrupt.o: ../../threads/interrupt.c \ + ../../include/threads/interrupt.h ../../include/lib/stdbool.h \ + ../../include/lib/stdint.h ../../include/lib/debug.h \ + ../../include/lib/inttypes.h ../../include/lib/stdio.h \ + ../../include/lib/stdarg.h ../../include/lib/stddef.h \ + ../../include/lib/kernel/stdio.h ../../include/threads/flags.h \ + ../../include/threads/intr-stubs.h ../../include/threads/io.h \ + ../../include/threads/thread.h ../../include/lib/kernel/list.h \ + ../../include/threads/mmu.h ../../include/threads/pte.h \ + ../../include/threads/vaddr.h ../../include/threads/loader.h \ + ../../include/devices/timer.h ../../include/lib/round.h \ + ../../include/intrinsic.h ../../include/threads/mmu.h diff --git a/threads/build/threads/interrupt.o b/threads/build/threads/interrupt.o new file mode 100644 index 0000000000000000000000000000000000000000..47d450b13c91e16f83a3db17aa6a91e749b78510 GIT binary patch literal 26400 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 Aw*UYD literal 0 HcmV?d00001 diff --git a/threads/build/threads/kernel.lds.s b/threads/build/threads/kernel.lds.s new file mode 100644 index 0000000..6b60fcd --- /dev/null +++ b/threads/build/threads/kernel.lds.s @@ -0,0 +1,23 @@ +OUTPUT_FORMAT("elf64-x86-64") +OUTPUT_ARCH(i386:x86-64) +ENTRY(_start) +SECTIONS +{ + . = 0x8004000000 + 0x200000; + PROVIDE(start = .); + .text : AT(0x200000) { + *(.entry) + *(.text .text.* .stub .gnu.linkonce.t.*) + } = 0x90 + .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } + . = ALIGN(0x1000); + PROVIDE(_end_kernel_text = .); + .data : { *(.data) *(.data.*)} + PROVIDE(_start_bss = .); + .bss : { *(.bss) } + PROVIDE(_end_bss = .); + PROVIDE(_end = .); + /DISCARD/ : { + *(.eh_frame .note.GNU-stack .stab) + } +} diff --git a/threads/build/threads/loader.o b/threads/build/threads/loader.o new file mode 100644 index 0000000000000000000000000000000000000000..e9f4c56cec136abddfd8d1bf0fc3271fe0764ac8 GIT binary patch literal 5632 zcmdUyeQXp(6u{s0DjW!0MZg+Cj!)6lYf)m3NT9&+VJK1qL`=YPy}NA@+FtIq3Rn?r zQJP>S1e0orArX^?RC6&Twgu!sNl65$ii$$CAi*lNqA0Dja?b3&*LyyXfAlXWu=AVW zzM0vby`6o1eqO=+42J`#IAA8ET4Vw8Z)a>_KHLg};dh~f(zlmZ8%>@L0OPPPqK;F~8ZCvh7cVuMv(*?UM;gCtlCR>8T5nFoXdRFjnWl$#J4OMxJqe@wxWhd@Vf?5< zzy(HA7N{#s)V0@j=<9?Da6sSVVE_*pE!Uj!jINe$WjY%+SN692swnR0sy#C)nM}He zs=)T}}TT)pA80jH_jHxAYEDR2gs5V<+1#->o`Y zC7D#!>!-k~cbuS9-GzbjHNkOqkN?4O`95{Cs)WF&j<;E) z+W`6=YAmu3ewg3i^1}kgix?L$Ud(tIK3F@BP95#u1^5aUwDYZyPpxSVkX<4VR) zGk%8gdd3?VZ)E%|<0{6_G2X;@3*#3US2Iqnx*xVO|03g;7;j@-%XmBEml@YFeueRC zjNfFum+@PS-)8(CWA)}>@k28q_@RaI0mkZm#^Q%Vgev|h;|~~r#P|f`lZ-!Oe46p+ zjK5&~HRH34&oMsF_yXha7=O=L?V4Ep@B^W`FKbh?+J3mq{LhT9F#d({?~Jc8?q=M} zxR3Flj8h*BKV;ZjfI903C*y&PU5xeqXcs>WVLX)aFvepUdl-*nJf86c#uFJ&Vm#UA zT(c~a8w^&&ihXO#y)lq&uQylyGfSi4Kq!{Gt|AZ$N4-nw@^4x@^%o&cae_0A1!Xh; z;q4I|FiQ+I(28`xqoT)f^y)MCw=y36bTQ6-=u>Z}-R(j2$L(hSaTfa2s@tdLqF*A$ ze+>Ob;h#XiNqDWDaEo5&Z>)NFW*u7lnNfwxe!4}maL}xX>XWLk8lk8x9E$}?!Vrj-6a~voUB@712BM~Q89VS| zhNxQK3a#%O=m(>x^?excmprXwK6)C5)^UUw2b_%tJnf>}gnt~z*(Llc^m~L4 zqHh#FjJ`?u67(MmzZQL)@RR|b6F!3R9l}#)_?z(kSscD-wEopN&Jf}0eaIGmC&o_{ z{#EpO!c$f@L-^eozfgF3ua*hlfbpw^--mvk@Qvu#3;z!K8sX`^-68zD7{6P1$`~7j zr}uon@JDc*gz(4EpAfzk{TbnDzqlwoWsg^c{}{*V6TS_-3sVC6J$#COgz#UY_Xz(L z`W)dYBlQV?4&(j8pGRLP{3Y}&g{RE3RQR7T-W0wI{bu1QJKZk)RgA9}o-)|I!gphQ zTzJ}l4+{SW#vd1+vftCfQ}){~{0$tZQ+O*WQ0IDtr))Vh)9y&mowDUD;VDBNExa4| zmnp*2_hXvyqcA>S_-ynA!jD0}LU_u?L&8&@8WDaDj#DMPAN@Ar=cC^x`~viQgntBm zqwtH+HwnKOJ$Pdq%FIBqs?Dffml8$8>jGXgyxs(FC}0M_TO5ml*Rm=Bw7LX}RWLsK z|5SNYZ+%IWPtjoc1h{WdlP;gyIxo?;m`?(0-yj=SW80-_-B;JTWZM-?R<-u{GexV$ z6Z6suIe(5ip~w8U{dK+~$JBGt{0H&*(O&@A1j>)6s@Qb*Ur+aswZ2CE*M+=)ofpY# zR|@*@f%tTT6?v_?oo=aoc)|79L0?9e`Y-3#KHdCn7#LFLd6Dz$d^lbIp5b<{dAze? G+5ay((47JR literal 0 HcmV?d00001 diff --git a/threads/build/threads/malloc.d b/threads/build/threads/malloc.d new file mode 100644 index 0000000..020db21 --- /dev/null +++ b/threads/build/threads/malloc.d @@ -0,0 +1,8 @@ +threads/malloc.o: ../../threads/malloc.c ../../include/threads/malloc.h \ + ../../include/lib/debug.h ../../include/lib/stddef.h \ + ../../include/lib/kernel/list.h ../../include/lib/stdbool.h \ + ../../include/lib/stdint.h ../../include/lib/round.h \ + ../../include/lib/stdio.h ../../include/lib/stdarg.h \ + ../../include/lib/kernel/stdio.h ../../include/lib/string.h \ + ../../include/threads/palloc.h ../../include/threads/synch.h \ + ../../include/threads/vaddr.h ../../include/threads/loader.h diff --git a/threads/build/threads/malloc.o b/threads/build/threads/malloc.o new file mode 100644 index 0000000000000000000000000000000000000000..6e62e6199dc87cf0d2e33b80f9c26190a06dbc61 GIT binary patch literal 16752 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 literal 0 HcmV?d00001 diff --git a/threads/build/threads/mmu.d b/threads/build/threads/mmu.d new file mode 100644 index 0000000..b2ee3f9 --- /dev/null +++ b/threads/build/threads/mmu.d @@ -0,0 +1,9 @@ +threads/mmu.o: ../../threads/mmu.c ../../include/lib/stdbool.h \ + ../../include/lib/stddef.h ../../include/lib/string.h \ + ../../include/threads/init.h ../../include/lib/debug.h \ + ../../include/lib/stdint.h ../../include/threads/pte.h \ + ../../include/threads/vaddr.h ../../include/threads/loader.h \ + ../../include/threads/palloc.h ../../include/threads/thread.h \ + ../../include/lib/kernel/list.h ../../include/threads/interrupt.h \ + ../../include/threads/mmu.h ../../include/intrinsic.h \ + ../../include/threads/mmu.h diff --git a/threads/build/threads/mmu.o b/threads/build/threads/mmu.o new file mode 100644 index 0000000000000000000000000000000000000000..4eb1f4855a6fa4d8af100dad847899754121f30d GIT binary patch literal 24216 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 YaT>1?QssXTJ0^tP`sF;SI!^k30b}%(h5!Hn literal 0 HcmV?d00001 diff --git a/threads/build/threads/palloc.d b/threads/build/threads/palloc.d new file mode 100644 index 0000000..c5cc344 --- /dev/null +++ b/threads/build/threads/palloc.d @@ -0,0 +1,9 @@ +threads/palloc.o: ../../threads/palloc.c ../../include/threads/palloc.h \ + ../../include/lib/stdint.h ../../include/lib/stddef.h \ + ../../include/lib/kernel/bitmap.h ../../include/lib/stdbool.h \ + ../../include/lib/inttypes.h ../../include/lib/debug.h \ + ../../include/lib/round.h ../../include/lib/stdio.h \ + ../../include/lib/stdarg.h ../../include/lib/kernel/stdio.h \ + ../../include/lib/string.h ../../include/threads/init.h \ + ../../include/threads/loader.h ../../include/threads/synch.h \ + ../../include/lib/kernel/list.h ../../include/threads/vaddr.h diff --git a/threads/build/threads/palloc.o b/threads/build/threads/palloc.o new file mode 100644 index 0000000000000000000000000000000000000000..0c438c512e0e22909315e8516d518a8d644a789d GIT binary patch literal 20440 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 Rd!g|I_KRVcj5H!V{%?3fU;F?7 literal 0 HcmV?d00001 diff --git a/threads/build/threads/synch.d b/threads/build/threads/synch.d new file mode 100644 index 0000000..bd5eb50 --- /dev/null +++ b/threads/build/threads/synch.d @@ -0,0 +1,7 @@ +threads/synch.o: ../../threads/synch.c ../../include/threads/synch.h \ + ../../include/lib/kernel/list.h ../../include/lib/stdbool.h \ + ../../include/lib/stddef.h ../../include/lib/stdint.h \ + ../../include/lib/stdio.h ../../include/lib/debug.h \ + ../../include/lib/stdarg.h ../../include/lib/kernel/stdio.h \ + ../../include/lib/string.h ../../include/threads/interrupt.h \ + ../../include/threads/thread.h diff --git a/threads/build/threads/synch.o b/threads/build/threads/synch.o new file mode 100644 index 0000000000000000000000000000000000000000..bc56c80b8ef549d7b60b4d0d94763e8b6e3d2552 GIT binary patch literal 24496 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 L+uX(b)b0NlBqfXP literal 0 HcmV?d00001 diff --git a/threads/build/threads/thread.d b/threads/build/threads/thread.d new file mode 100644 index 0000000..a012c71 --- /dev/null +++ b/threads/build/threads/thread.d @@ -0,0 +1,11 @@ +threads/thread.o: ../../threads/thread.c ../../include/threads/thread.h \ + ../../include/lib/debug.h ../../include/lib/kernel/list.h \ + ../../include/lib/stdbool.h ../../include/lib/stddef.h \ + ../../include/lib/stdint.h ../../include/threads/interrupt.h \ + ../../include/lib/random.h ../../include/lib/stdio.h \ + ../../include/lib/stdarg.h ../../include/lib/kernel/stdio.h \ + ../../include/lib/string.h ../../include/threads/flags.h \ + ../../include/threads/intr-stubs.h ../../include/threads/palloc.h \ + ../../include/threads/synch.h ../../include/threads/vaddr.h \ + ../../include/threads/loader.h ../../include/intrinsic.h \ + ../../include/threads/mmu.h ../../include/threads/pte.h diff --git a/threads/build/threads/thread.o b/threads/build/threads/thread.o new file mode 100644 index 0000000000000000000000000000000000000000..acfd47bc1d20cdc15f322fa617674a13180165ca GIT binary patch literal 36576 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 Date: Sun, 13 Nov 2022 13:20:33 +0000 Subject: [PATCH 02/34] alarm clock with intru_disable --- .vscode/launch.json | 14 +++++ .vscode/settings.json | 5 ++ devices/timer.c | 14 ++++- include/threads/thread.h | 6 ++ threads/build/devices/intq.o | Bin 15624 -> 15624 bytes threads/build/devices/serial.o | Bin 17544 -> 17544 bytes threads/build/devices/timer.o | Bin 14600 -> 14600 bytes threads/build/kernel.bin | Bin 135168 -> 135168 bytes threads/build/kernel.o | Bin 2414048 -> 2414056 bytes threads/build/os.dsk | Bin 135680 -> 135680 bytes threads/build/tests/threads/alarm-negative.o | Bin 3840 -> 3840 bytes threads/build/tests/threads/alarm-priority.o | Bin 8616 -> 8616 bytes .../build/tests/threads/alarm-simultaneous.o | Bin 9592 -> 9592 bytes threads/build/tests/threads/alarm-wait.o | Bin 14320 -> 14320 bytes threads/build/tests/threads/alarm-zero.o | Bin 3816 -> 3816 bytes .../build/tests/threads/mlfqs/mlfqs-block.o | Bin 10328 -> 10328 bytes .../build/tests/threads/mlfqs/mlfqs-fair.o | Bin 10952 -> 10952 bytes .../build/tests/threads/mlfqs/mlfqs-load-1.o | Bin 7992 -> 7992 bytes .../build/tests/threads/mlfqs/mlfqs-load-60.o | Bin 8544 -> 8544 bytes .../tests/threads/mlfqs/mlfqs-load-avg.o | Bin 8656 -> 8656 bytes .../tests/threads/mlfqs/mlfqs-recent-1.o | Bin 7160 -> 7160 bytes threads/build/tests/threads/priority-change.o | Bin 6208 -> 6208 bytes .../build/tests/threads/priority-condvar.o | Bin 10816 -> 10816 bytes .../tests/threads/priority-donate-chain.o | Bin 12456 -> 12456 bytes .../tests/threads/priority-donate-lower.o | Bin 10280 -> 10280 bytes .../tests/threads/priority-donate-multiple.o | Bin 11416 -> 11416 bytes .../tests/threads/priority-donate-multiple2.o | Bin 11816 -> 11816 bytes .../tests/threads/priority-donate-nest.o | Bin 12144 -> 12144 bytes .../build/tests/threads/priority-donate-one.o | Bin 10832 -> 10832 bytes .../tests/threads/priority-donate-sema.o | Bin 11392 -> 11392 bytes threads/build/tests/threads/priority-fifo.o | Bin 12328 -> 12328 bytes .../build/tests/threads/priority-preempt.o | Bin 6632 -> 6632 bytes threads/build/tests/threads/priority-sema.o | Bin 7664 -> 7664 bytes threads/build/threads/init.o | Bin 20304 -> 20304 bytes threads/build/threads/interrupt.o | Bin 26400 -> 26400 bytes threads/build/threads/intr-stubs.o | Bin 39176 -> 39176 bytes threads/build/threads/loader.o | Bin 5632 -> 5632 bytes threads/build/threads/mmu.o | Bin 24216 -> 24216 bytes threads/build/threads/start.o | Bin 30720 -> 30720 bytes threads/build/threads/synch.o | Bin 24496 -> 24496 bytes threads/build/threads/thread.o | Bin 36576 -> 36600 bytes threads/thread.c | 58 +++++++++++++++++- 42 files changed, 93 insertions(+), 4 deletions(-) create mode 100644 .vscode/launch.json create mode 100644 .vscode/settings.json diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..5fb8bd3 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,14 @@ +{ + "configurations": [ + { + "type": "gdb", + "request": "attach", + "name": "Attach to gdbserver", + "executable": "${fileDirname}/build/kernel.o", + "target": "localhost:1234", + "remote": true, + "cwd": "${workspaceRoot}", + "valuesFormatting": "parseText" + } + ] + } \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..faeb3cc --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,5 @@ +{ + "files.associations": { + "list.h": "c" + } +} \ No newline at end of file diff --git a/devices/timer.c b/devices/timer.c index 796f5a8..926524f 100644 --- a/devices/timer.c +++ b/devices/timer.c @@ -92,9 +92,15 @@ void timer_sleep (int64_t ticks) { int64_t start = timer_ticks (); - ASSERT (intr_get_level () == INTR_ON); - while (timer_elapsed (start) < ticks) - thread_yield (); + // ASSERT (intr_get_level () == INTR_ON); + // while (timer_elapsed (start) < ticks) + // thread_yield (); + if (ticks > 0) + thread_sleep(ticks + start); + else if (ticks == 0) + thread_yield(); + else + return; } /* Suspends execution for approximately MS milliseconds. */ @@ -126,6 +132,8 @@ static void timer_interrupt (struct intr_frame *args UNUSED) { ticks++; thread_tick (); + + thread_awake(ticks); } /* Returns true if LOOPS iterations waits for more than one timer diff --git a/include/threads/thread.h b/include/threads/thread.h index 33b46e6..1080db0 100644 --- a/include/threads/thread.h +++ b/include/threads/thread.h @@ -91,6 +91,7 @@ struct thread { enum thread_status status; /* Thread state. */ char name[16]; /* Name (for debugging purposes). */ int priority; /* Priority. */ + int64_t wakeup_tick; /* Shared between thread.c and synch.c. */ struct list_elem elem; /* List element. */ @@ -143,4 +144,9 @@ int thread_get_load_avg (void); void do_iret (struct intr_frame *tf); +void thread_sleep(int64_t ticks); +void thread_awake(int64_t ticks); +void update_next_tick_to_awake(int64_t ticks); +int64_t get_next_tick_to_awake(void); + #endif /* threads/thread.h */ diff --git a/threads/build/devices/intq.o b/threads/build/devices/intq.o index bb67a628d97c1b35a6d9dc6ea042456f143aa706..6e4311c772e558e5f857b0589a76d63b7bc37a24 100644 GIT binary patch delta 95 zcmeCE>Zsaqn_DH$iGhJZffGnDuq75UF)(Owl%z4R<+d;~Fjzo@^Cti2KFe6L`7FZsaqn_DHpiGhJZffGnDuq78VF)(Owl%z4R<+m_0Fjzo@3nu^PKFe6P`7Fd H$+G|eLjMat delta 57 zcmeC^WbEi<+@Q;?lHkO^z@WehBpBF}%b6G$G&oAq7})b$7#SEWAi@Qc1G!HymTi{e H$+G|eL-z|w diff --git a/threads/build/devices/timer.o b/threads/build/devices/timer.o index b07fb9c9131bddf56d6fdb71fdfad7ac5577fae8..c08a0b9e303ac3a04bd4c98f35d0063cdf147c2a 100644 GIT binary patch delta 311 zcmeAu>L}Xa!^*gI@q9BDToaMN)U>Han5pP1_p?Rr4a2I45A=OroPF1+zR}CeIWM4 z7>FqoCfjmLGqy~QL}Xa!^*gM@q9BF^CNUN)U>Han5pP1_p?R#SrZo45A=Ork=@s+zR|XeIWM4 z7>Fr-lWn=B85<`@a?1e8GHwmV>dEuD&1FlW#xbZv8H{sQurM(2=M^(Bl}^^?k!H-F z%nv4kY}rgq)e@{g)ww{`nIP4h>v#f~467w!>e!}B!IqN$9sh^#Y;ASw!yJ1UB!gNovsnhWG^E=Z7;>7b~IxM0`3^UUyw{oeQU{=t0b-shZi&pqedbGK(m z&2~x6cFFu6b{_d*;}pNgQw`3k8jYr=)MPn%P%nK?H&&S}eaY+b{_#ha$hDT5FKypf zowt1-^^fg))@Ohtz_``Q(d%`;S zn}obDK->H@*}ck*tazbcNU6kBSb9igFS2Mf8k4n(KM+cq7)vy{`9fdtBps&q($#xc zq-2jwg{5TC)Cede?@kTYc{@J3IyF$|?^x+MO%I=wZqp*h1oB6w^v_I|7uv~YOE*@V z)*G*z(vO>pf;f#;(8PhN%9MeWMZrojVZ=HuuxUH{s^6!zF^Ae!1xbyqDo$yQVyc)9 zIlfZ0pwZ9HQmJyT*i!ftWw@Fwxm{X0r=pUlHBcET(8r_~n+m#f7K5qqx@6;Dg|0Z* zxFDJwn?8ErWKJ$w*M+Najwv8$_3KPYE3xXd$-2Oii8jjw_r~caG~6WlJv7EXQV}!^fyBB{$}T8o!ZRR~REs zGR7xDo3)G)A$GW5O_^28l=_ZLeDOE)u+@6!R4mt&rd7ep;uN&>H5K9UlJF}?TbJ;E z=QvrM=T%jC#E{}is^&&U-BZyeQPSm4RbE?1O_t4M?mX{^dWXfnD?>*X^0%rGQZUZ| zUy~o^`9L+fH*dUIO_5Ydk*4qzqhNx_h;kMK*`T70EXnl=l4$ep;6|>__Zamr9hNES zCJuVXpN!3%stq9nBnWmc9?90Ccahm8vYU-*|=WJ_9fenP*TQ_=hwljtgWM5G(< znk?DGBQY2~&^yt99vHFBjU*+mGGt5R5C^3&9SDPO?^ZpNA|#W|#A{*aD7Dd%Cuy?w zshYGQYZvx0zaZH|F~o``AzPjzByH(U&Eop_*>@QZsKmNNQFT#91M8GvnzW@=8ev>+ zt4mClsu;2^$xm1oyqnYko+IT+gWDza5e3(jt}IT*iA=U=hNjYAnIZR*p)ch}|C=ma zDp}<_bsYvKXZ4lx>}X z3*Fxc$$zDtws|BC9}FIW_2)^^R~aMN$<)hOp3)S*T{mS!=}owasPraHUv1sp&{a04 zuv}Ki&#^s06S%I5t*NPDq6A$tSl)c?RhO20wQ9;3gE>=|`5(5>!olB#?09vY*|r#| zY^+SgoGk4ou7GT#A>H`UWKqfgI_^1BfkFCKSn(nE=2~W#?)-ri)S~H0@)CErMADb| z!b$SZlCX%862C%Hl_cq)s-&Y0UpoabmwdIfw>ep2PY*L$qFT3dPGu~sHK4C)X!>DeA4oa{XexqQ0P<*PBi0CS1ST1pOm3B-$zD^}c8vQ~KiW3i^Ux za=j@^QC~Dxu1_>6>a9s~{o**RH%mP(SSLR)jZ-ib<;eAk@rrtDv0T4+mZHAkid=6> zRMZz~j!GTKViSbBxEwH;l7RD?yT^Nu>SXaM{lQ=K-~>~|G#YT34FIx?;H(T*%BfuRJ7Gg*14wMXv(T~aFb-O z>Js7d0r!N$wowxIKkD2rt6L*?ht+MOZG&0d00gT@i+l?VyNQS9^pO z$tkm_8MbWI3(Z>;wL*o}Al4Fi-DAAs848!5ImpQtIc&9U1=`(?wV34PTC(7EJALqx zigZ@X<&Yzvu}^92UngQ&qUUp}B1yaS67S?55*s>tf8FwD zBJ#N3O$DDw-wM~{8<-7#EX`+k9Ft&eA)lVik@ld}>Pn)KoZ>pGXz4lO$_1^5wQRJr%oHfsQSyaS2x? zv!@v!LfX=Y4VRrYS$%lNgo8Hb`7KMK0g2h}=4GR2t3XN2UXr}MeS|?`Q#i6%veCP! zWbN>x3%YS+aOi<~XDjx{A9SF%V?al9oF=soJtavcZ?AgNiK|n!s(!ztmBdRiY}( zPRHvQE~1VuTgk1R{Z$=QEh+co(*=qLD>hBVWx+TVQ_4~=E2K8kXr%PS;-{gc-d^&< zu2!n1(^+_yyP=R{6GOtX`wm*7(teo4_du1;&P-yjdXr<>ZOm%2q9j=@*aTHaSfnk@ zV<$3d13{MJRfiO_c;;oB=j6jzwPY)cY*~j$CNaa9$8yipT-O@ovrrc6ttys0-0eF~ zk-jpF7SsAM#isOcSrc|!e6dyB+&ibDA6Tv{#-P+ON_pUvVonk%eM#aTbtlA0PUxVj zl)|CXv6z|@WGSI_Ncr!aAdBo+he+;(s(JN3^Q=WN)NF zvcE9m(yrql_rcz+n7sp4!#-ZJc%P?fz$`vK#-e6%SxVnJq>#Ni?(T2w(MwuNiYJgS za_;I9xgzp1?W?yh!v3QN-*M4G4f!y4_pDS-VJcWBeJivSh@CDvhLLBo?zIzQx2!BE zuFX`S!h~zuqWwdmX74ix0RBVf9rh+c?|S05ork?U7FTvLsR_EME@;)e0orD<s3iB;To;!A-%5Jt_!$a?Q^J=t}XATY@EbH-tacb zI5Y%L)-D_h^qMzTc7D2WfW&V(!-(5^Q~EXPAU&+?n_;||RsnbyfgKskrQ#|^GNYJd z?9GT4Ir?5Oo1mp}AI-c29IK@7S2VUS?KM#u04fdbO) z*er-8*~fhG$tTAGp(D9^th4*=R+4FDNwK7Dem8+5A-}tqEq?HM1!k2nmf?KKk$gYc zOuovGjfj`*p|H$Q$ud{eEi>E_*m6Um-Z>Q?<4{m`qU|^T{&Y3K##F^ z8RFJ7B=riKo6}Sp949qcjS_3SLNR+_>dDabzO`ZWR^f7aeOq67 zb@4uWGOxbSBciG<-p8uERM#E+XhmmmChPaOs9Ir`WQF?hf3|`wtAVO4w1Ru@C>K0` zuS!BY>Uqn`;UPc8#`*A}+ z_6b&X_AH6Lohmyiw7#Lu|A-7L9)h8^wK$yQe$<5MK50s{*5~RFn=6SO@?^2iKas`u zKvCz5JHzdx4L&sjbRewol8h6rh{uU!c!R7xv0Pi8M>0?P3n09*6LoSJd_gvz z3{X^Phn-ZC#I31^+h}Jp{FG0`Dam35HrrVwEk9M)a>uFO9%U!>&Z+nqho5loAY2=u z0%fJ{r032?q{-=!h;kLlXC%qu?!?h6WcKOg2;ej(g+}EPpLlLti%<7i0KT{s_Sv$C z7AoA=C2nz(P>cJ@XWkL*>*A}#j+(5s_&S~mi0E4v-%WMC)H4C2)a)+nc}tZ~nT292 z1hW_7$iPE`5@!Ct$scDzBgWLF&mXFC$;kiAQnj1r6F!E-Y*efNxBjEvf0<9rM78+( zelB=x%IEPBb5*pJxt+0hDpt?>vIkjq)*mJ8IO|7de$fxVJv`f%lzq`pRh~}jh4@B8 zEp3$YCNo*HRpsaWIIc}r4JX6tD z{<@P@&q%wFgc8qq+r?R0H3)Of5Q)BEmh`PqQ^Y;gMc}lW`2#7-DI&)Drt+EaO5TMM zQ^Y|@lA6rksxnF9*PacaSQzkk$bzrB!5y;itC`J;9mKoPO%KpxYVH)vbb!tcK$1v z_}t0WvVJh01fE+t;9r?eCz$q|x~fT95Oj`}sk-pZHsA{2rqV*?2x2O3A0^tuT`;|0Wne_kXh-3P}5JL-BL` zw;k|v^|w=?C%N{mKfFWgUFZ#oB>KW0*n0HZ1ubYBUm`ck+vt?9!Qee>0SWl7tK08C zNY?u;Q3zT~qaVnu@3zA4#OeE@VB6Em`k9r^nU#=Jao|h|dw0v6OG9%sixX86G1~TT-&t8h#_aY?LSno4w*U5+>|=1S`=F~*OLpelb=d`nLhj{GZVlvDb6t-aZwdy!OKx2DoBrz~i4otg2{u{v zVf_BtGVihUM93!sgWLuafiFjwTbMH+h&i*Gd-L}z zesG<*UiHvkzk~-7ZVgTwYtZzUNYvGSos>-|OyHnuvU6%|jn-s&hvZ!~a4|0F)oX;e z5iXJ2SNnBU$jP)mVl96zM-b|hR-wmT@6TxLhnUW}YJxf~;;auG$SYfM0y_zU*AoA+ zdFGvm(syRfKm%YOkEn>8WJNC{;Vy&fd%61k4ECn5%^79aYB=YVr^IF=v zD=yunqn>OMeyugWY&zyz0#fE*o8N8jeNjz8{VuB{mF4wb`&)KZX~l_b9TGq${^|<> z&1M=*36Xv?5*9Fht!o^E8$^9(>KO5aJ;%D5A*0{Mf+-%{! z>8?U>b&+0!!%fg318K=kvFRHm~=Kq>;4|@|i3? zfClJ5Cil6()t~&vq`+kz}-Kkj+?AC4xD7?pZ+bC z1kaq{vjV$GyYya5a{JGYFo*cv?T^1(h`;+XM#zP`7?M=DylEZCM-tmDajR(2Dn)>; z^KcmRS1Tb(Uiqty0NEmZ_E%q_gt>+U{M`WGb_)KxKZ>67cRR7#m)!WGjY*q(EzmE$@A-lcnQ*To8YunVDEz#HHT%eed#$v1aOhtxxUgrnAKWG5s)K~8 z)ap@A7-}S-+S|?MQEMjZYO?e%BZe}cP-d~$%%gkpe8O4eVZuf&>9l{(6gug zB(GqzrRp`te@vE|3cYhGwp>#xO^;;xLl4$+Yf|{o|H-XaJ=EhVU$aN!khtPeYqI{4 zkfaViieTk_-nOJ&CXB0$RG}FmaE6m!kJ};94>iH$^5ceN%VUqGN@B|}ng|et&rl!> zMx*Zzy|cj1x9;oXx{E1Yyq|dq#K=}`>=pMj(q4Zd8C%m0hLa67Ax`JC29mnfos`rx zW{Mcq6nJwq_H1TvFg`1zW{8NIst^hIT{MkA6Wke*f+^+ zNat(ug!VQrz_H`aoS+5u(Ly6wNQ1Nx2*1)HTIh#1#$OE3y;^858lL{41;J2AZ$Q!r zCkRH;=bZq9gJwGcjvsp032-pc*3J-t!-bA>hAvM0KAnVpQJ)@khBJ^yQ|iGY_?h0S z2Zyn=qdshd3$#ZA*x$4jzxfv@HCojGERak0yTCZ@zUlOU3;0m~hVU|s$bYjTOxI$| z|2zXDpk;n+V+a(ANlj5$G;Qh%J)k8uxxy6KLUUbVCZ0>{bkGJ%U3KsZKFiZV7nnz{ z>7X;r%Wv5XE&)v5cdt1hAw@qsY- zoF4E&+kQ^ZB3pAC8=q-Dr;mJ~+-~`pX1oqUgt{Kn@D=b(de;|Hpg*1C2P>Lp`-x49 z(@6dUKUfZMg1#1j(Q$%W1K?TkrFR3ckI{6V9&oKekBV?#4?Uq3eb#{e@TGGM7+kIB z9s|VM%keUX?P{8(f zOzPEk@En$Uw#Tq6qvrPL+%o!pd)S4QBRinuqv_cWa1votC>R}vT?Ln1843g8HtpOI z<|5&)j$rIyKR&q%j+&KoeqAS+2)Fa+b%JmJyc7w8A@CEe41-Qs@(G8RAck%X#}3EP zN8vD8dpw+GhC^$b+8J8Hak{lLj=90~bY}?F#)Q#rouM5prTPfy*u<7@O_sLw`3M+| zQI;10;r{!kOHn3;i!JOdRkS7odNq|+0R1q7SvKUGo`oR6b@)Qc>j?3^F?Fn_hOXd= z!O^{|kOPED0}bttF_7Pt4gccqQiWSLR`FGD9F(!$peZs5yjo2cn%oVdkom)IIBcSY z<8{F&2tDZT?vj*H1%3S5169Elyqm(M?ngx0WDF5VN03Dl=IOODL2tQ17^dP_zNhf@^#fS=aTmA$(TIkamZ zXx~Dq>IrfB!En!^i~GO}DDwwoLC*Vqu!S7z*B47Uv{zqD#yNCqUuff$(?@uJ$%AJ1 zg;p?;F6<}VZS)0qbX#0M@Su&NFgT;>%qV8-Ln8bc1ty2VAkHg{NiWJ-j%JI_%F8!rHvrlj|D-DVkJsORnZ=jzKd z;ES_DqXCeN;>-iU=%*ZYJa;0)8OCsmUKs%T0HxHkdFF zrejZ-k-i?tjMUx)!8CLbivbp4l^$kowwPY_2*b zc0t^Ioub($i0j)tQjX%Zr4^dwK(vKmVYG$g8zz-5SdW&+_Z+0yHqcHnIP`Pqz!*&W zr)bz<@Kg>A+s|ACe;H^zKBvcHFb-wTBZDzfJkti;oRQ*RN$6q6{F>H%2< z>qrj{g--5B>70rd6L%Rbeq!mJp|B9?6JjwvN7F;Gpw~7YM!$*$Z>L$q#MeJ@(c;2G z=_1t)L-YJWgNNa$R+a+jo?+0|t}2MS499gzG`$jsLvF!v=-N{m%febQW1QduF-$KG zmb>|Bg_8;J_Ss8*_y@f_9A+rjxvs}1{fv)A-#3e;Q{un}_RuA9EZ(q5p+5^oLO0rU z1TOUEjbIDCv=Pur8x%_t?z+=6BUole(oh;Vl7%DEk3qImBOwB(qWdG^HBtRgx_6XB z(2d>~zk7|wDXKLcFdBKf(XFE~V7k%L(Ku}~Xia;Lfmn(E!!e8>8*``E$KcYV8*M)p z+mE5E$3h?No;Zs6GQcH6!~D{b-WrRJJ58HChiix!I{7&m)#&nbl7VQdFIu$pIp_;} zscsx*&;&Ys9L}4)>FjZ+&1GsGhdDVmUpi-{ag(8*>lk(`B#ndb>89}*WZ|^UcxdaM zX8Vr=l2M1!gz=cNWV)l{admf^mX8O&Cz9i#MrnQF8re;|=7}dp;c; zTAw0yMtFHOLwYFQRfW@C6Clw2w3<#ACNQscejd8n&1m?mroI>tVj?xrwCB+(IrRAR zERlAb$WqACiO@ycwL1-;gem*8i4dna?GiRl7?4pq<^Tf?n*_<)Q(XjFFIqGSqbG-+ zp9IIzp>#65C&CcAX$k~8jh`%Z(T|o-fp|ubIA)7TD#<)I_I2|K$AoZUCK1~PO{z-x5+B7_N@T8Mwz%w?gj2Ymo zy*5qgms?Q!QarGoFaHAo++g#~fSnkj9S?eM26WI4oXHrav)<7(Y9^boR?LJj_xCPK zsgfP*V%GKgP994?&cxX%jKVCmZV3&ag`=W`j-ACa$3c7z23MmGWl_PPRAu%UPL#SP#*-}l3CoG=kRxY z<>GgKuvJ1wh=g-rL{($xrWY}9#n4Y)1m#v7SHn?MHy77X*|hsywsToE7dAr@^_~ab z+TsN?ZWm5$Bj-UEuN}5)xAn$U`E5X7x@#WH#*xu*KJKwfXvTcpKTW2m=fhfr5epzF z*cK`nv0~o0o0h~7kEJ^o!02%0?Vhk8tuTd@ve;3yFN_N5h}xI7PDBHS(dQCzCwYLb zNkj|g(zg?t%_&1grSdB}t%%9dvsVMn(y>CgE1QgyN}1PaJ;O6}^iUaN;#tcF?si zp@vbk=q2!KqUZ+N{->AVdDOOVvYlJ-C+t!5jbuDhSWG`nM!8A!>>J>vEl8nxTkz20 z(Hqd1&Pc&cOch<90&RShMl)U)F72emVWwZE;7U1)!fsp%@7VG(gtSnGP4=_Wao1iN z^)mPlRO+XnBMnz+jDPmocHvi{mb$4dxm33b=e%PtLwHB!^lwePXdk6=01Gcq;w!9_ zdMrX)mC%?)7_TKXWswl`beC8Pe;pTCVfa5V=+#Bcy$Ne@jc;7cR+vZDfLpNQKXk0; z`(;}SLl0so;jbo&==+Odpu22`GWkh3ZTt!h?Bw_abAcj=t@?^sO3JRlf=D-Qg)sLHB}dCbs(!-=(i5kf>1Z-c)^lyy=t@M!&hZX4zsgl zHXDIW|d(f1V63Vf_t8?%+SK# z;M`U8f!Sv8EoOUz;{-A<6})YXw*N_lXFT`>y(0%X5?4Htxao3<*o{Um$2|#SbaPG= z0(s7In*qOEE*sE3B|O=HwC4)Uc`#6O>4{oTq;NB=MC0^L105=a zF&8R^Td0>J(uAST*ZICX=#?$FB6++5TxdlaGgeg^cq{X=f;^0(cwz0qTA8qtwesRh z$r571L9^vyl}&M_jenGh`IyJ#ENre>_Izm-bhbMHVLvTHpJ&s;Rp8^U_|=B=qqFzu zZ>um|Mp2K|2-|7D)wp)qOBb%T*U4AWee0(`+YdBawi-MKEAI5H-#JjI3`NCAy6ZqK zL{KPBhf`j!LkaI+RFvqX__>@~LhkIy#BwK_g?!dXb{vl86eggycEeRANAiTYmfl2O z+XAl4WR1Aypj>P^^szaV&rxhJ?n-B!WJ&N`I_@`~l-`mZWUAPdMy+MSo?nYw$y}PU zR_YS&Y}T?-^h^e>LUE*JfVVAmoU>~1wHe`HVp0Z-wY$Vxzbfo8zrf9=Uu3`nT)y;L zhl|Tzbj><=6)oko9&abuiZPJ7ti!boS&xf0JkMPZt@O4%Nt&?=aC4Vd;fnukt(kPX zOaE98lQ7=nHsE?Mj4t1RTd7=nV1rHXCL5u%n_}6)vs^A6xsk0cR&RtD>`>`O+)A?y z;-SU-5uC{+%*({>(PEmOiFX5h*|mL>yzFwPgEm1EUq#4Rvwm~%TjD0@sIAJPcw5tw z7HneU8)JqwQn3k)4lk)l|4+lB2pwy@T$`9p*JeUHy6g?yMMw$}Ss?>jB7iUt_9PI{ zLh*|jt6mloMiUA2S0)(6LtpwIeG@*>4xmCeJm{lk(1do(!jA!4(D)@Z zehVg)B$~Mek568qhqo|C;|$aTpLtV=ZlTC5Yy+=h>l4<9H{C$NRoPVq1)IkLX*p#E z`;+3sToUk-+{uYe2%b8N%Fw>=P!3Ny- zG~S9jPo}-MVuGAZXK#goP=yHVxLZ%KvGqE8d1wa>*n#W(vs=Ln*?-xJ8;!}d{x%pB zC`-XTf?|0t|9cgdm(1IszhY;@wi91%V>{QHZSbs@-Ok2%k&lmKJA{2rYdU{B-XgG` zJWG#l$6Z4S{bDw8Ku^ za+%ooZ^{z>&*OUIMYbtBONZ~mLkF(* zN4uEXrMvJzP^tDV>EJ>L&fnk0ePIdpdIy&HDlCS_ zZP!ifS7ox)jJw!ediWi@dot6icW{4LLYwZhPw(0I!lkfx?YR#k@$sU4FdvD9Ev&0; z^H&)mwAdsUNz8O`F57v}%w-)okPAM+aSSXS^~tP7iJUgb+~=Gw1a*b`iI zRa5W%5YpDxpvfBb=M#pGpvjB-aS}7rRr{fpZRWJK9Y#Oe&qh9`V*|anA9P9$E%xpc zchOZ$X*2D309x6$g|^j|A`@9_98{y`17ILJXq2CQ0HU1W@BAx=@Up(;)Rd$oy`i^$ z_O!XvrzFoxnw~IC*!^lWG$;?w9XkTLCi(gzNYsX8e5ZF##RuPWoXs)#d$ImiUOt&$ zPzR9G7MyI+msS|0gtSo+LP>vAtqXqWf>_6J15QH`u|VS)-A9?1++Jkx=tQ zMI}0kUs8O6gJmVUvs?jI#`ZN5gG3;qRDbOmQRC)~L>$U-HOC^3e{t-<>8Ens%5f6^ zr*1pAWxqu<3$fzbL=-%T<1&sPa=ghggbVnJ$BIvLkx#;_PpFrkyExEez1dk%KqC0q zLBM{8vPAb6uYbc`RG^86h#xzY|Km`W=xi8gFTnOdtpD?=0_^!U9{F3pfZGktBj<<@ zzWiFm1-yKbm)9qX^>=uAaI#o_%*!)h7RwFKik)JY=(2KE=yR*NWw@dAVSNSpJ!nF|0dh ziWPrwg33)|+36b*-_H_J$IENCiDiFYPTwh(LwPxSw^)wk*&LHNF5$S6<9d!;IPMZq$bh-L;t0n=jwd*t<@gQ9A36TY zv5Mn;j@nGIr_XS7=jg{Vh+`*2mI1r-ihdjia~#ESBFE_*=W|@dF_mLF$2T}`LU6 zUXj3Y4#$@`zQ%DC#|<1Q$83)KIlj;FBaSCIe#!A$j+f2+%XN;wb9}(j=?ziA#vDC3 z`g08C7{;*&$Nn6La2(BX62}=F%?tRK#T-|1%;dP8V=l)JI2Lm}%dwo}&m5~bKIG^^ z#E!Ug)Qf1=bl?@;IS$|$$8jRZSsar&rgB`zF^gjk$2^W7b3DWGJjV)#IR0+(3jDc& zbE-z8ao#MVj-xNfwj7`37{zfY$8j8|aZKd+8pkypH*?GuP#FIQd4+}JNsgr)FLJ!j z@h(Tro1&tPIeKvn=lB0>^XpZrSZ2ZsV6^l8pf0m$sAKTuH%@+F^6Lw$B#Ll;dq{7#TGvP zZ}N(2j?PrnRL9YmV_S~Ta*X0Ql;b##(>Nw_e2wE8j+;4VoB5Z694#DAaxCR|k>hoa kcR6aZcnom#;uy#=jAJB66UWgU8^-f5bMsrfXfHMRA9%JsrT_o{ delta 26024 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 O{xC2v#7TFp`u_m8*Xx`B diff --git a/threads/build/kernel.o b/threads/build/kernel.o index 3b8fc8806066d99639cccf0c2124984be4eee21c..ac23335fc10f801f370a896820a8802865a19d56 100755 GIT binary patch delta 69344 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 diff --git a/threads/build/tests/threads/alarm-negative.o b/threads/build/tests/threads/alarm-negative.o index 17d7d22120de40e34819215b3efc35056a1702bc..97299caf1fa8761e93261659dc463f22d1cb3a2b 100644 GIT binary patch delta 12 TcmZpWYml4pma$~xJ0U&*AZY~d delta 12 TcmZpWYml4pma%N(J0U&*Aaexp diff --git a/threads/build/tests/threads/alarm-priority.o b/threads/build/tests/threads/alarm-priority.o index d6781427dd3214226f678c669e3c108f29f293fd..18eff43b50eaba1923e4b0c7def9f4c17df4356e 100644 GIT binary patch delta 33 pcmZ4Cyux{dJqu&WW(StDjEpUl`PlRsYbV>WDKK_zj%V|f1^~E`3EKbw delta 33 pcmZ4Cyux{dJqu&mW(StDjErrQ`PlRs>nGc>DKPeIj%V|f1^~GW3F80& diff --git a/threads/build/tests/threads/alarm-simultaneous.o b/threads/build/tests/threads/alarm-simultaneous.o index e8e8a8b7713e5965429f468e1b9f817030b5379c..7782d2418ec06a6756209d2ca45e70d57752bb2b 100644 GIT binary patch delta 47 ncmez2^}}mJCmUnQ<}S8*Ow#RQ3{b!UrbS^~*4oX^oTf4WAhHO< delta 47 ncmez2^}}mJCmUng<}S8*OwyfV3{b!UrbS^~*80uPoTf4WAxsF# diff --git a/threads/build/tests/threads/alarm-wait.o b/threads/build/tests/threads/alarm-wait.o index 5074d31fe5aba9dcc8de44d2057c1a462dabc87c..fd6d307784ecf6f92cb51435f1bef3a45ffb78d5 100644 GIT binary patch delta 63 zcmey6{~>=vEtg7M3IhX!0w<7QU{8DsBsI88(iqrtH!?9WSU`mHHZSC2WMVAYyqHIb Mg|T+?HUTSj0QA=m;s5{u delta 63 zcmey6{~>=vEtg6{3IhX!0w<7QU{8JuBsI88(iqtDH!?9WSU`jeHZSC2WMVAayqHIb Mg|U9~HUTSj0QM;k?f?J) diff --git a/threads/build/tests/threads/alarm-zero.o b/threads/build/tests/threads/alarm-zero.o index 1594762aa1b08f0a74c5d5c2f39f8076e15f7957..9f52820b0e6f1bbed3d4614685c86fcace5c360c 100644 GIT binary patch delta 12 UcmaDM`$BfYYsQj|Z~pKC04oFrp#T5? delta 12 UcmaDM`$BfYYsRvTZ~pKC04oj#qW}N^ diff --git a/threads/build/tests/threads/mlfqs/mlfqs-block.o b/threads/build/tests/threads/mlfqs/mlfqs-block.o index d3c48ea47bfe386936500736f500d7b0e9686fed..9cb6441d41085c9facc2dd69b4a97272fc12ce35 100644 GIT binary patch delta 63 zcmcZ+a3f&DVOEv66b1$c1x_Hrz@GRNNNRAGq%pAPZe(I$uz(2XZGO(m$i!H(`6c@g MM#kFBk2uTZ0QsK~asU7T delta 63 zcmcZ+a3f&DVOEud6b1$c1x_Hrz@GdRNNRAGq%pAPZ)9R%uz&~`Y<|wl$i!H-`6c@g MM#lQhk2uTZ0Q&I|egFUf diff --git a/threads/build/tests/threads/mlfqs/mlfqs-fair.o b/threads/build/tests/threads/mlfqs/mlfqs-fair.o index b5128ecb67d91d6b6858d73793497bbee9934bb9..d1d23891c7a175418db06c63876f18eabefabc68 100644 GIT binary patch delta 27 jcmX>RdLnc~AUk8p<{RdLnc~AUk8(<{$GP+w>oxCJhfQ=W?EMRSYO89U delta 32 icmexi{=Qav)>_2dhe43IhX!0w<7QU{8DsBsI88(iqrtPcbntSU`mHHtVoTF)@~Gc4t4z Y$k;NOm(!K8c5*PMHe=W3dd`Ci0A~sjGXMYp delta 75 zcmX>Qav)>_2dhd#3IhX!0w<7QU{8JuBsI88(iqtDPcbntSU`jeHtVoTF)@~Hc4t4z Y$k;ZSm(!K8esVCUHe=7`dd`Ci0BH~rLjV8( diff --git a/threads/build/tests/threads/priority-donate-chain.o b/threads/build/tests/threads/priority-donate-chain.o index a44de37ea52f612070848fa9e87fb24ab4192907..5822b3c10d3ba1266d531905252f88e116ef5fc7 100644 GIT binary patch delta 97 zcmZ3HxFT`GT6UGV6b1$c1x_Hrz@GRNNNRAGq%pAPZe(I$uz(2XZNA9P$i!H(`7-Bk jCdQV@=XtalJ176=%_R=%_S|Sv* diff --git a/threads/build/tests/threads/priority-donate-lower.o b/threads/build/tests/threads/priority-donate-lower.o index e0fdb9282b39537a6f6ee1c81fe3a730676f1592..886d7e5953fe284864fa25d49ba4ac05f864047e 100644 GIT binary patch delta 96 zcmZ1xup(f?T2_^~6b1$c1x_Hrz@GRNNNRAGq%pAPZe(I$uz(2XZNA9L$i!H(`7-+@ ZMx{=1kXjI6lY}$bYZ1(@&Br+tk-VJ&Br+t9Cnqs6b1$c1x_Hrz@GRNNNRAGq%pAPZe(I$uz(2XZ9c%x$i!H(`4Hz1 ZCZ0|SkXjI6Z=ZaOM}e_+^K+g~B>)Wu6E6S& delta 73 zcmewm_aSb>9Cnq26b1$c1x_Hrz@GdRNNRAGq%pAPZ)9R%uz&~`Y(Buw$i!H-`4Hz1 XCdTf`8+b$}pXU*0tl#{cr&9?4wYwAV diff --git a/threads/build/tests/threads/priority-donate-one.o b/threads/build/tests/threads/priority-donate-one.o index 243ac4b58ab80e67f575ee6b0690040b45c254b8..fc2ebd05c182fb4ce1edfdcdd216e0a6a93a9563 100644 GIT binary patch delta 85 zcmcZ*av@|xHJeIY3IhX!0w<7QU{8DsBsI88(iqrtH!?9WSU`mHHqU2cWMVAYypThU WNxV}Wq!t9&B;ic<+RgX4isS+Lj}Nf` delta 85 zcmcZ*av@|xHJeI83IhX!0w<7QU{8JuBsI88(iqtDH!?9WSU`jeHqU2cWMVAaypThU WNxWMeq!t9&B;ic<`px&aisS+N^$))Q diff --git a/threads/build/tests/threads/priority-donate-sema.o b/threads/build/tests/threads/priority-donate-sema.o index 091b0b3ef62f2f889c3d1997e09e85ba8f3984a3..f303c8592e56320b1265df51ad5e294a80694ab8 100644 GIT binary patch delta 69 zcmZpOY>3dy- SF?LSY;8tL)-R#M2t_T1CY!2-J delta 69 zcmZpOY>3dy- SF?LVZ;8tL)-|We4t_T1E5)S(S diff --git a/threads/build/tests/threads/priority-fifo.o b/threads/build/tests/threads/priority-fifo.o index 9355ef416d25c1433bc8c5b7e0ebe64cc55d022f..ba5f0a56e38c2963d87ae708776c120e5dc234aa 100644 GIT binary patch delta 81 zcmZ3Hup(i@Qg)TN6b1$c1x_Hrz@GRNNNRAGq%pAPZe(I$uz(2XZ9d7)$i!H(`84M~ fCdT&3`*C2uYxiFD9jYC delta 81 zcmZ3Hup(i@Qg)Su6b1$c1x_Hrz@GdRNNRAGq%pAPZ)9R%uz&~`Y(B}($i!H-`84M~ fCdSUm`*nAVaF=p(Ze1k`yv1c;}uYxiFD?Svz diff --git a/threads/build/tests/threads/priority-preempt.o b/threads/build/tests/threads/priority-preempt.o index ff1c7c307adab50415559f02e98749438ca2da0c..96b4ecab5c19315dcfc1032240f9c942f6e4569c 100644 GIT binary patch delta 60 vcmaE1{K9y{L}td4&6Ak<7#Uk8FJuu_Y8PaH0yY6SleH7UtlfNrML-k)sQwDi delta 60 vcmaE1{K9y{L}tda&6Ak<7#Z6pFJuu_>J(&v0yY6SleHVctlxZtML-k)syqtW diff --git a/threads/build/tests/threads/priority-sema.o b/threads/build/tests/threads/priority-sema.o index 2bffa380f5e1fa596b68a4f4901c581521593c1c..efb1e26a8684aa145c4bd7473a803ef5556b188e 100644 GIT binary patch delta 33 pcmexh{lR*}V`j#Z%}-4y*tG diff --git a/threads/build/threads/interrupt.o b/threads/build/threads/interrupt.o index 47d450b13c91e16f83a3db17aa6a91e749b78510..d192e871a233c0268d025dfd27ee739512eef308 100644 GIT binary patch delta 23 fcmZ2*j&Z>`#tlx=j3t|$rDt+7wr{?x;_L(faK{MM delta 23 fcmZ2*j&Z>`#tlx=jAfghrDt+7c5c3_;_L(faP0`$ diff --git a/threads/build/threads/intr-stubs.o b/threads/build/threads/intr-stubs.o index fadd77312e06b259a646b3622034a65681063578..dadce48117b6e83532dfb6bb5d4dde7c1ebbbcb4 100644 GIT binary patch delta 37 ocmeC!#MH5gX#hrfeOX| delta 35 mcmZqBY0%lg!Y-CyoMe%mr&r9NUy@s(pPUTgZh(=?k&| diff --git a/threads/build/threads/mmu.o b/threads/build/threads/mmu.o index 4eb1f4855a6fa4d8af100dad847899754121f30d..8e0ca2db6fe908652f9d496cf097cf0372ae5a39 100644 GIT binary patch delta 16 XcmbQSmvP2k#tk~6j3t|OMYBBtHnau2 delta 16 XcmbQSmvP2k#tk~6jAfg3MYBBtHoyhG diff --git a/threads/build/threads/start.o b/threads/build/threads/start.o index f785a308c85eac72877d03d9654f19012e6d706f..3e54eedb7435e230c280a9f5c8c676f9f88bfc03 100644 GIT binary patch delta 37 ocmZqpz}WDCal;p8vHY-Y>I?w&!V)+D delta 98 zcmdn6pK${aX$hz#L^CijD6jzu2Dan_KvILdB#nVB{~{9ug9SvmV6&fq1ruZ0=60bt iPR5o=G7?N|^^;^&#G7P5+CYGv56)z3+-xmV>I?w+CK5^j diff --git a/threads/build/threads/thread.o b/threads/build/threads/thread.o index acfd47bc1d20cdc15f322fa617674a13180165ca..89939550c60c8de38c4ad7d51e0af1491817cf75 100644 GIT binary patch literal 36600 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 = ticks; + list_push_back(&sleep_list, &curr->elem); + + thread_block(); + update_next_tick_to_awake(ticks); + + intr_set_level (old_level); +} + +void thread_awake(int64_t ticks){ + struct list_elem *list_elem; + struct thread *thread; + int64_t next_ticks = ticks; + + if (!list_empty(&sleep_list)){ + list_elem = list_begin(&sleep_list); + while (list_elem != list_end(&sleep_list)){ + thread = list_entry(list_elem, struct thread, elem); + if (thread->wakeup_tick <= ticks){ + list_elem = list_remove(list_elem); + thread_unblock(thread); + continue; + } + else{ + if (next_ticks == ticks) + next_ticks = thread->wakeup_tick; + else if(next_ticks > thread->wakeup_tick) + next_ticks = thread->wakeup_tick; + } + list_elem = list_next(list_elem); + } + update_next_tick_to_awake(next_ticks); + } +} + +void update_next_tick_to_awake(int64_t ticks){ + next_tick_to_awake = ticks; +} + +int64_t get_next_tick_to_awake(void){ + return next_tick_to_awake; +} From 664730e96de8b01f5ca46a62a5c54150de1f1715 Mon Sep 17 00:00:00 2001 From: ngngs Date: Sun, 13 Nov 2022 22:31:39 +0900 Subject: [PATCH 03/34] proj1.Alarm --- .vscode/launch.json | 14 + devices/timer.c | 18 +- include/threads/thread.h | 7 +- threads/build/Makefile | 64 +++ threads/build/devices/disk.d | 9 + threads/build/devices/disk.o | Bin 0 -> 33456 bytes threads/build/devices/input.d | 6 + threads/build/devices/input.o | Bin 0 -> 8616 bytes threads/build/devices/intq.d | 5 + threads/build/devices/intq.o | Bin 0 -> 15656 bytes threads/build/devices/kbd.d | 7 + threads/build/devices/kbd.o | Bin 0 -> 12680 bytes threads/build/devices/serial.d | 8 + threads/build/devices/serial.o | Bin 0 -> 17576 bytes threads/build/devices/timer.d | 8 + threads/build/devices/timer.o | Bin 0 -> 15088 bytes threads/build/devices/vga.d | 6 + threads/build/devices/vga.o | Bin 0 -> 10448 bytes threads/build/kernel.bin | Bin 0 -> 135168 bytes threads/build/kernel.o | Bin 0 -> 2413944 bytes threads/build/lib/arithmetic.d | 1 + threads/build/lib/arithmetic.o | Bin 0 -> 7352 bytes threads/build/lib/debug.d | 5 + threads/build/lib/debug.o | Bin 0 -> 4648 bytes threads/build/lib/kernel/bitmap.d | 7 + threads/build/lib/kernel/bitmap.o | Bin 0 -> 20344 bytes threads/build/lib/kernel/console.d | 8 + threads/build/lib/kernel/console.o | Bin 0 -> 12736 bytes threads/build/lib/kernel/debug.d | 7 + threads/build/lib/kernel/debug.o | Bin 0 -> 6888 bytes threads/build/lib/kernel/hash.d | 5 + threads/build/lib/kernel/hash.o | Bin 0 -> 21296 bytes threads/build/lib/kernel/list.d | 4 + threads/build/lib/kernel/list.o | Bin 0 -> 32536 bytes threads/build/lib/random.d | 3 + threads/build/lib/random.o | Bin 0 -> 6408 bytes threads/build/lib/stdio.d | 6 + threads/build/lib/stdio.o | Bin 0 -> 24648 bytes threads/build/lib/stdlib.d | 4 + threads/build/lib/stdlib.o | Bin 0 -> 11104 bytes threads/build/lib/string.d | 2 + threads/build/lib/string.o | Bin 0 -> 18240 bytes threads/build/loader.bin | Bin 0 -> 512 bytes threads/build/os.dsk | Bin 0 -> 135680 bytes threads/build/results | 27 + .../build/tests/threads/alarm-multiple.errors | 1 + .../build/tests/threads/alarm-multiple.output | 129 +++++ .../build/tests/threads/alarm-multiple.result | 1 + threads/build/tests/threads/alarm-negative.d | 9 + .../build/tests/threads/alarm-negative.errors | 1 + threads/build/tests/threads/alarm-negative.o | Bin 0 -> 3872 bytes .../build/tests/threads/alarm-negative.output | 18 + .../build/tests/threads/alarm-negative.result | 1 + threads/build/tests/threads/alarm-priority.d | 9 + .../build/tests/threads/alarm-priority.errors | 1 + threads/build/tests/threads/alarm-priority.o | Bin 0 -> 8648 bytes .../build/tests/threads/alarm-priority.output | 47 ++ .../build/tests/threads/alarm-priority.result | 54 ++ .../build/tests/threads/alarm-simultaneous.d | 10 + .../tests/threads/alarm-simultaneous.errors | 1 + .../build/tests/threads/alarm-simultaneous.o | Bin 0 -> 9624 bytes .../tests/threads/alarm-simultaneous.output | 73 +++ .../tests/threads/alarm-simultaneous.result | 85 +++ .../build/tests/threads/alarm-single.errors | 1 + .../build/tests/threads/alarm-single.output | 39 ++ .../build/tests/threads/alarm-single.result | 1 + threads/build/tests/threads/alarm-wait.d | 9 + threads/build/tests/threads/alarm-wait.o | Bin 0 -> 14352 bytes threads/build/tests/threads/alarm-zero.d | 9 + threads/build/tests/threads/alarm-zero.errors | 1 + threads/build/tests/threads/alarm-zero.o | Bin 0 -> 3848 bytes threads/build/tests/threads/alarm-zero.output | 18 + threads/build/tests/threads/alarm-zero.result | 1 + .../build/tests/threads/mlfqs/mlfqs-block.d | 10 + .../tests/threads/mlfqs/mlfqs-block.errors | 1 + .../build/tests/threads/mlfqs/mlfqs-block.o | Bin 0 -> 10368 bytes .../tests/threads/mlfqs/mlfqs-block.output | 26 + .../tests/threads/mlfqs/mlfqs-block.result | 27 + .../tests/threads/mlfqs/mlfqs-fair-2.errors | 1 + .../tests/threads/mlfqs/mlfqs-fair-2.output | 28 + .../tests/threads/mlfqs/mlfqs-fair-2.result | 1 + .../tests/threads/mlfqs/mlfqs-fair-20.errors | 1 + .../tests/threads/mlfqs/mlfqs-fair-20.output | 82 +++ .../tests/threads/mlfqs/mlfqs-fair-20.result | 1 + .../build/tests/threads/mlfqs/mlfqs-fair.d | 10 + .../build/tests/threads/mlfqs/mlfqs-fair.o | Bin 0 -> 10984 bytes .../build/tests/threads/mlfqs/mlfqs-load-1.d | 10 + .../tests/threads/mlfqs/mlfqs-load-1.errors | 1 + .../build/tests/threads/mlfqs/mlfqs-load-1.o | Bin 0 -> 8024 bytes .../tests/threads/mlfqs/mlfqs-load-1.output | 20 + .../tests/threads/mlfqs/mlfqs-load-1.result | 11 + .../build/tests/threads/mlfqs/mlfqs-load-60.d | 10 + .../tests/threads/mlfqs/mlfqs-load-60.errors | 1 + .../build/tests/threads/mlfqs/mlfqs-load-60.o | Bin 0 -> 8576 bytes .../tests/threads/mlfqs/mlfqs-load-60.output | 499 ++++++++++++++++++ .../tests/threads/mlfqs/mlfqs-load-60.result | 93 ++++ .../tests/threads/mlfqs/mlfqs-load-avg.d | 10 + .../tests/threads/mlfqs/mlfqs-load-avg.errors | 1 + .../tests/threads/mlfqs/mlfqs-load-avg.o | Bin 0 -> 8688 bytes .../tests/threads/mlfqs/mlfqs-load-avg.output | 499 ++++++++++++++++++ .../tests/threads/mlfqs/mlfqs-load-avg.result | 93 ++++ .../tests/threads/mlfqs/mlfqs-nice-10.errors | 1 + .../tests/threads/mlfqs/mlfqs-nice-10.output | 52 ++ .../tests/threads/mlfqs/mlfqs-nice-10.result | 14 + .../tests/threads/mlfqs/mlfqs-nice-2.errors | 1 + .../tests/threads/mlfqs/mlfqs-nice-2.output | 28 + .../tests/threads/mlfqs/mlfqs-nice-2.result | 6 + .../tests/threads/mlfqs/mlfqs-recent-1.d | 10 + .../tests/threads/mlfqs/mlfqs-recent-1.errors | 1 + .../tests/threads/mlfqs/mlfqs-recent-1.o | Bin 0 -> 7200 bytes .../tests/threads/mlfqs/mlfqs-recent-1.output | 110 ++++ .../tests/threads/mlfqs/mlfqs-recent-1.result | 93 ++++ threads/build/tests/threads/priority-change.d | 7 + .../tests/threads/priority-change.errors | 1 + threads/build/tests/threads/priority-change.o | Bin 0 -> 6248 bytes .../tests/threads/priority-change.output | 20 + .../tests/threads/priority-change.result | 19 + .../build/tests/threads/priority-condvar.d | 9 + .../tests/threads/priority-condvar.errors | 1 + .../build/tests/threads/priority-condvar.o | Bin 0 -> 10848 bytes .../tests/threads/priority-condvar.output | 27 + .../tests/threads/priority-condvar.result | 69 +++ .../tests/threads/priority-donate-chain.d | 8 + .../threads/priority-donate-chain.errors | 1 + .../tests/threads/priority-donate-chain.o | Bin 0 -> 12488 bytes .../threads/priority-donate-chain.output | 21 + .../threads/priority-donate-chain.result | 2 + .../tests/threads/priority-donate-lower.d | 8 + .../threads/priority-donate-lower.errors | 1 + .../tests/threads/priority-donate-lower.o | Bin 0 -> 10312 bytes .../threads/priority-donate-lower.output | 22 + .../threads/priority-donate-lower.result | 25 + .../tests/threads/priority-donate-multiple.d | 8 + .../threads/priority-donate-multiple.errors | 1 + .../tests/threads/priority-donate-multiple.o | Bin 0 -> 11456 bytes .../threads/priority-donate-multiple.output | 23 + .../threads/priority-donate-multiple.result | 32 ++ .../tests/threads/priority-donate-multiple2.d | 9 + .../threads/priority-donate-multiple2.errors | 1 + .../tests/threads/priority-donate-multiple2.o | Bin 0 -> 11848 bytes .../threads/priority-donate-multiple2.output | 22 + .../threads/priority-donate-multiple2.result | 32 ++ .../tests/threads/priority-donate-nest.d | 8 + .../tests/threads/priority-donate-nest.errors | 1 + .../tests/threads/priority-donate-nest.o | Bin 0 -> 12176 bytes .../tests/threads/priority-donate-nest.output | 25 + .../tests/threads/priority-donate-nest.result | 8 + .../build/tests/threads/priority-donate-one.d | 8 + .../tests/threads/priority-donate-one.errors | 1 + .../build/tests/threads/priority-donate-one.o | Bin 0 -> 10872 bytes .../tests/threads/priority-donate-one.output | 21 + .../tests/threads/priority-donate-one.result | 27 + .../tests/threads/priority-donate-sema.d | 8 + .../tests/threads/priority-donate-sema.errors | 1 + .../tests/threads/priority-donate-sema.o | Bin 0 -> 11432 bytes .../tests/threads/priority-donate-sema.output | 18 + .../tests/threads/priority-donate-sema.result | 23 + threads/build/tests/threads/priority-fifo.d | 9 + .../build/tests/threads/priority-fifo.errors | 1 + threads/build/tests/threads/priority-fifo.o | Bin 0 -> 12368 bytes .../build/tests/threads/priority-fifo.output | 14 + .../build/tests/threads/priority-fifo.result | 2 + .../build/tests/threads/priority-preempt.d | 8 + .../tests/threads/priority-preempt.errors | 1 + .../build/tests/threads/priority-preempt.o | Bin 0 -> 6672 bytes .../tests/threads/priority-preempt.output | 18 + .../tests/threads/priority-preempt.result | 23 + threads/build/tests/threads/priority-sema.d | 9 + .../build/tests/threads/priority-sema.errors | 1 + threads/build/tests/threads/priority-sema.o | Bin 0 -> 7704 bytes .../build/tests/threads/priority-sema.output | 27 + .../build/tests/threads/priority-sema.result | 49 ++ threads/build/tests/threads/tests.d | 6 + threads/build/tests/threads/tests.o | Bin 0 -> 11544 bytes threads/build/threads/init.d | 16 + threads/build/threads/init.o | Bin 0 -> 20336 bytes threads/build/threads/interrupt.d | 12 + threads/build/threads/interrupt.o | Bin 0 -> 26432 bytes threads/build/threads/intr-stubs.d | 2 + threads/build/threads/intr-stubs.o | Bin 0 -> 39176 bytes threads/build/threads/kernel.lds.s | 23 + threads/build/threads/loader.o | Bin 0 -> 5632 bytes threads/build/threads/malloc.d | 8 + threads/build/threads/malloc.o | Bin 0 -> 16784 bytes threads/build/threads/mmu.d | 9 + threads/build/threads/mmu.o | Bin 0 -> 24248 bytes threads/build/threads/palloc.d | 9 + threads/build/threads/palloc.o | Bin 0 -> 20480 bytes threads/build/threads/start.d | 1 + threads/build/threads/start.o | Bin 0 -> 30720 bytes threads/build/threads/synch.d | 7 + threads/build/threads/synch.o | Bin 0 -> 24536 bytes threads/build/threads/thread.d | 11 + threads/build/threads/thread.o | Bin 0 -> 36176 bytes threads/init.c | 3 +- threads/thread.c | 60 ++- userprog/process.c | 1 - 197 files changed, 3340 insertions(+), 10 deletions(-) create mode 100644 .vscode/launch.json create mode 100644 threads/build/Makefile create mode 100644 threads/build/devices/disk.d create mode 100644 threads/build/devices/disk.o create mode 100644 threads/build/devices/input.d create mode 100644 threads/build/devices/input.o create mode 100644 threads/build/devices/intq.d create mode 100644 threads/build/devices/intq.o create mode 100644 threads/build/devices/kbd.d create mode 100644 threads/build/devices/kbd.o create mode 100644 threads/build/devices/serial.d create mode 100644 threads/build/devices/serial.o create mode 100644 threads/build/devices/timer.d create mode 100644 threads/build/devices/timer.o create mode 100644 threads/build/devices/vga.d create mode 100644 threads/build/devices/vga.o create mode 100644 threads/build/kernel.bin create mode 100644 threads/build/kernel.o create mode 100644 threads/build/lib/arithmetic.d create mode 100644 threads/build/lib/arithmetic.o create mode 100644 threads/build/lib/debug.d create mode 100644 threads/build/lib/debug.o create mode 100644 threads/build/lib/kernel/bitmap.d create mode 100644 threads/build/lib/kernel/bitmap.o create mode 100644 threads/build/lib/kernel/console.d create mode 100644 threads/build/lib/kernel/console.o create mode 100644 threads/build/lib/kernel/debug.d create mode 100644 threads/build/lib/kernel/debug.o create mode 100644 threads/build/lib/kernel/hash.d create mode 100644 threads/build/lib/kernel/hash.o create mode 100644 threads/build/lib/kernel/list.d create mode 100644 threads/build/lib/kernel/list.o create mode 100644 threads/build/lib/random.d create mode 100644 threads/build/lib/random.o create mode 100644 threads/build/lib/stdio.d create mode 100644 threads/build/lib/stdio.o create mode 100644 threads/build/lib/stdlib.d create mode 100644 threads/build/lib/stdlib.o create mode 100644 threads/build/lib/string.d create mode 100644 threads/build/lib/string.o create mode 100644 threads/build/loader.bin create mode 100644 threads/build/os.dsk create mode 100644 threads/build/results create mode 100644 threads/build/tests/threads/alarm-multiple.errors create mode 100644 threads/build/tests/threads/alarm-multiple.output create mode 100644 threads/build/tests/threads/alarm-multiple.result create mode 100644 threads/build/tests/threads/alarm-negative.d create mode 100644 threads/build/tests/threads/alarm-negative.errors create mode 100644 threads/build/tests/threads/alarm-negative.o create mode 100644 threads/build/tests/threads/alarm-negative.output create mode 100644 threads/build/tests/threads/alarm-negative.result create mode 100644 threads/build/tests/threads/alarm-priority.d create mode 100644 threads/build/tests/threads/alarm-priority.errors create mode 100644 threads/build/tests/threads/alarm-priority.o create mode 100644 threads/build/tests/threads/alarm-priority.output create mode 100644 threads/build/tests/threads/alarm-priority.result create mode 100644 threads/build/tests/threads/alarm-simultaneous.d create mode 100644 threads/build/tests/threads/alarm-simultaneous.errors create mode 100644 threads/build/tests/threads/alarm-simultaneous.o create mode 100644 threads/build/tests/threads/alarm-simultaneous.output create mode 100644 threads/build/tests/threads/alarm-simultaneous.result create mode 100644 threads/build/tests/threads/alarm-single.errors create mode 100644 threads/build/tests/threads/alarm-single.output create mode 100644 threads/build/tests/threads/alarm-single.result create mode 100644 threads/build/tests/threads/alarm-wait.d create mode 100644 threads/build/tests/threads/alarm-wait.o create mode 100644 threads/build/tests/threads/alarm-zero.d create mode 100644 threads/build/tests/threads/alarm-zero.errors create mode 100644 threads/build/tests/threads/alarm-zero.o create mode 100644 threads/build/tests/threads/alarm-zero.output create mode 100644 threads/build/tests/threads/alarm-zero.result create mode 100644 threads/build/tests/threads/mlfqs/mlfqs-block.d create mode 100644 threads/build/tests/threads/mlfqs/mlfqs-block.errors create mode 100644 threads/build/tests/threads/mlfqs/mlfqs-block.o create mode 100644 threads/build/tests/threads/mlfqs/mlfqs-block.output create mode 100644 threads/build/tests/threads/mlfqs/mlfqs-block.result create mode 100644 threads/build/tests/threads/mlfqs/mlfqs-fair-2.errors create mode 100644 threads/build/tests/threads/mlfqs/mlfqs-fair-2.output create mode 100644 threads/build/tests/threads/mlfqs/mlfqs-fair-2.result create mode 100644 threads/build/tests/threads/mlfqs/mlfqs-fair-20.errors create mode 100644 threads/build/tests/threads/mlfqs/mlfqs-fair-20.output create mode 100644 threads/build/tests/threads/mlfqs/mlfqs-fair-20.result create mode 100644 threads/build/tests/threads/mlfqs/mlfqs-fair.d create mode 100644 threads/build/tests/threads/mlfqs/mlfqs-fair.o create mode 100644 threads/build/tests/threads/mlfqs/mlfqs-load-1.d create mode 100644 threads/build/tests/threads/mlfqs/mlfqs-load-1.errors create mode 100644 threads/build/tests/threads/mlfqs/mlfqs-load-1.o create mode 100644 threads/build/tests/threads/mlfqs/mlfqs-load-1.output create mode 100644 threads/build/tests/threads/mlfqs/mlfqs-load-1.result create mode 100644 threads/build/tests/threads/mlfqs/mlfqs-load-60.d create mode 100644 threads/build/tests/threads/mlfqs/mlfqs-load-60.errors create mode 100644 threads/build/tests/threads/mlfqs/mlfqs-load-60.o create mode 100644 threads/build/tests/threads/mlfqs/mlfqs-load-60.output create mode 100644 threads/build/tests/threads/mlfqs/mlfqs-load-60.result create mode 100644 threads/build/tests/threads/mlfqs/mlfqs-load-avg.d create mode 100644 threads/build/tests/threads/mlfqs/mlfqs-load-avg.errors create mode 100644 threads/build/tests/threads/mlfqs/mlfqs-load-avg.o create mode 100644 threads/build/tests/threads/mlfqs/mlfqs-load-avg.output create mode 100644 threads/build/tests/threads/mlfqs/mlfqs-load-avg.result create mode 100644 threads/build/tests/threads/mlfqs/mlfqs-nice-10.errors create mode 100644 threads/build/tests/threads/mlfqs/mlfqs-nice-10.output create mode 100644 threads/build/tests/threads/mlfqs/mlfqs-nice-10.result create mode 100644 threads/build/tests/threads/mlfqs/mlfqs-nice-2.errors create mode 100644 threads/build/tests/threads/mlfqs/mlfqs-nice-2.output create mode 100644 threads/build/tests/threads/mlfqs/mlfqs-nice-2.result create mode 100644 threads/build/tests/threads/mlfqs/mlfqs-recent-1.d create mode 100644 threads/build/tests/threads/mlfqs/mlfqs-recent-1.errors create mode 100644 threads/build/tests/threads/mlfqs/mlfqs-recent-1.o create mode 100644 threads/build/tests/threads/mlfqs/mlfqs-recent-1.output create mode 100644 threads/build/tests/threads/mlfqs/mlfqs-recent-1.result create mode 100644 threads/build/tests/threads/priority-change.d create mode 100644 threads/build/tests/threads/priority-change.errors create mode 100644 threads/build/tests/threads/priority-change.o create mode 100644 threads/build/tests/threads/priority-change.output create mode 100644 threads/build/tests/threads/priority-change.result create mode 100644 threads/build/tests/threads/priority-condvar.d create mode 100644 threads/build/tests/threads/priority-condvar.errors create mode 100644 threads/build/tests/threads/priority-condvar.o create mode 100644 threads/build/tests/threads/priority-condvar.output create mode 100644 threads/build/tests/threads/priority-condvar.result create mode 100644 threads/build/tests/threads/priority-donate-chain.d create mode 100644 threads/build/tests/threads/priority-donate-chain.errors create mode 100644 threads/build/tests/threads/priority-donate-chain.o create mode 100644 threads/build/tests/threads/priority-donate-chain.output create mode 100644 threads/build/tests/threads/priority-donate-chain.result create mode 100644 threads/build/tests/threads/priority-donate-lower.d create mode 100644 threads/build/tests/threads/priority-donate-lower.errors create mode 100644 threads/build/tests/threads/priority-donate-lower.o create mode 100644 threads/build/tests/threads/priority-donate-lower.output create mode 100644 threads/build/tests/threads/priority-donate-lower.result create mode 100644 threads/build/tests/threads/priority-donate-multiple.d create mode 100644 threads/build/tests/threads/priority-donate-multiple.errors create mode 100644 threads/build/tests/threads/priority-donate-multiple.o create mode 100644 threads/build/tests/threads/priority-donate-multiple.output create mode 100644 threads/build/tests/threads/priority-donate-multiple.result create mode 100644 threads/build/tests/threads/priority-donate-multiple2.d create mode 100644 threads/build/tests/threads/priority-donate-multiple2.errors create mode 100644 threads/build/tests/threads/priority-donate-multiple2.o create mode 100644 threads/build/tests/threads/priority-donate-multiple2.output create mode 100644 threads/build/tests/threads/priority-donate-multiple2.result create mode 100644 threads/build/tests/threads/priority-donate-nest.d create mode 100644 threads/build/tests/threads/priority-donate-nest.errors create mode 100644 threads/build/tests/threads/priority-donate-nest.o create mode 100644 threads/build/tests/threads/priority-donate-nest.output create mode 100644 threads/build/tests/threads/priority-donate-nest.result create mode 100644 threads/build/tests/threads/priority-donate-one.d create mode 100644 threads/build/tests/threads/priority-donate-one.errors create mode 100644 threads/build/tests/threads/priority-donate-one.o create mode 100644 threads/build/tests/threads/priority-donate-one.output create mode 100644 threads/build/tests/threads/priority-donate-one.result create mode 100644 threads/build/tests/threads/priority-donate-sema.d create mode 100644 threads/build/tests/threads/priority-donate-sema.errors create mode 100644 threads/build/tests/threads/priority-donate-sema.o create mode 100644 threads/build/tests/threads/priority-donate-sema.output create mode 100644 threads/build/tests/threads/priority-donate-sema.result create mode 100644 threads/build/tests/threads/priority-fifo.d create mode 100644 threads/build/tests/threads/priority-fifo.errors create mode 100644 threads/build/tests/threads/priority-fifo.o create mode 100644 threads/build/tests/threads/priority-fifo.output create mode 100644 threads/build/tests/threads/priority-fifo.result create mode 100644 threads/build/tests/threads/priority-preempt.d create mode 100644 threads/build/tests/threads/priority-preempt.errors create mode 100644 threads/build/tests/threads/priority-preempt.o create mode 100644 threads/build/tests/threads/priority-preempt.output create mode 100644 threads/build/tests/threads/priority-preempt.result create mode 100644 threads/build/tests/threads/priority-sema.d create mode 100644 threads/build/tests/threads/priority-sema.errors create mode 100644 threads/build/tests/threads/priority-sema.o create mode 100644 threads/build/tests/threads/priority-sema.output create mode 100644 threads/build/tests/threads/priority-sema.result create mode 100644 threads/build/tests/threads/tests.d create mode 100644 threads/build/tests/threads/tests.o create mode 100644 threads/build/threads/init.d create mode 100644 threads/build/threads/init.o create mode 100644 threads/build/threads/interrupt.d create mode 100644 threads/build/threads/interrupt.o create mode 100644 threads/build/threads/intr-stubs.d create mode 100644 threads/build/threads/intr-stubs.o create mode 100644 threads/build/threads/kernel.lds.s create mode 100644 threads/build/threads/loader.o create mode 100644 threads/build/threads/malloc.d create mode 100644 threads/build/threads/malloc.o create mode 100644 threads/build/threads/mmu.d create mode 100644 threads/build/threads/mmu.o create mode 100644 threads/build/threads/palloc.d create mode 100644 threads/build/threads/palloc.o create mode 100644 threads/build/threads/start.d create mode 100644 threads/build/threads/start.o create mode 100644 threads/build/threads/synch.d create mode 100644 threads/build/threads/synch.o create mode 100644 threads/build/threads/thread.d create mode 100644 threads/build/threads/thread.o diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..5fb8bd3 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,14 @@ +{ + "configurations": [ + { + "type": "gdb", + "request": "attach", + "name": "Attach to gdbserver", + "executable": "${fileDirname}/build/kernel.o", + "target": "localhost:1234", + "remote": true, + "cwd": "${workspaceRoot}", + "valuesFormatting": "parseText" + } + ] + } \ No newline at end of file diff --git a/devices/timer.c b/devices/timer.c index 796f5a8..565fc20 100644 --- a/devices/timer.c +++ b/devices/timer.c @@ -88,13 +88,20 @@ timer_elapsed (int64_t then) { } /* Suspends execution for approximately TICKS timer ticks. */ -void -timer_sleep (int64_t ticks) { +void timer_sleep (int64_t ticks) { int64_t start = timer_ticks (); - ASSERT (intr_get_level () == INTR_ON); - while (timer_elapsed (start) < ticks) - thread_yield (); + + /* Busy waiting을 일으키는 방식*/ + // while (timer_elapsed (start) < ticks) + // thread_yield (); + + if (ticks > 0) + thread_sleep(ticks + start); // 이미 지난 시간(start) + 깨워줄 시간(ticks) + else if (ticks == 0) + thread_yield(); + else + return; } /* Suspends execution for approximately MS milliseconds. */ @@ -126,6 +133,7 @@ static void timer_interrupt (struct intr_frame *args UNUSED) { ticks++; thread_tick (); + thread_awake(ticks); } /* Returns true if LOOPS iterations waits for more than one timer diff --git a/include/threads/thread.h b/include/threads/thread.h index 33b46e6..ca1c1cb 100644 --- a/include/threads/thread.h +++ b/include/threads/thread.h @@ -88,10 +88,11 @@ typedef int tid_t; struct thread { /* Owned by thread.c. */ tid_t tid; /* Thread identifier. */ - enum thread_status status; /* Thread state. */ + enum thread_status status; /* Thread state. 4가지 : ready, blocked, running, dying*/ char name[16]; /* Name (for debugging purposes). */ int priority; /* Priority. */ + int64_t wakeup_time; // 일어나야할 시간 /* Shared between thread.c and synch.c. */ struct list_elem elem; /* List element. */ @@ -143,4 +144,8 @@ int thread_get_load_avg (void); void do_iret (struct intr_frame *tf); +// Project1. Alarm Clock +void thread_sleep(int64_t ticks); +void thread_awake(int64_t ticks); + #endif /* threads/thread.h */ diff --git a/threads/build/Makefile b/threads/build/Makefile new file mode 100644 index 0000000..b8a8503 --- /dev/null +++ b/threads/build/Makefile @@ -0,0 +1,64 @@ +# -*- makefile -*- + +SRCDIR = ../.. + +all: os.dsk + +include ../../Make.config +include ../Make.vars +include ../../tests/Make.tests + +# Compiler and assembler options. +os.dsk: CPPFLAGS += -I$(SRCDIR)/lib/kernel + +# Core kernel. +include ../../threads/targets.mk +# User process code. +include ../../userprog/targets.mk +# Virtual memory code. +include ../../vm/targets.mk +# Filesystem code. +include ../../filesys/targets.mk +# Library code shared between kernel and user programs. +include ../../lib/targets.mk +# Kernel-specific library code. +include ../../lib/kernel/targets.mk +# Device driver code. +include ../../devices/targets.mk + +SOURCES = $(foreach dir,$(KERNEL_SUBDIRS),$($(dir)_SRC)) +OBJECTS = $(patsubst %.c,%.o,$(patsubst %.S,%.o,$(SOURCES))) +DEPENDS = $(patsubst %.o,%.d,$(OBJECTS)) + +threads/kernel.lds.s: CPPFLAGS += -P +threads/kernel.lds.s: threads/kernel.lds.S + +kernel.o: threads/kernel.lds.s $(OBJECTS) + $(LD) $(LDFLAGS) -T $< -o $@ $(OBJECTS) + +kernel.bin: kernel.o + $(OBJCOPY) -O binary -R .note -R .comment -S $< $@.tmp + dd if=$@.tmp of=$@ bs=4096 conv=sync + rm $@.tmp + +threads/loader.o: threads/loader.S kernel.bin + $(CC) -c $< -o $@ $(ASFLAGS) $(CPPFLAGS) $(DEFINES) -DKERNEL_LOAD_PAGES=`perl -e 'print +(-s "kernel.bin") / 4096;'` + +loader.bin: threads/loader.o + $(LD) $(LDFLAGS) -N -e start -Ttext 0x7c00 --oformat binary -o $@ $< + +os.dsk: loader.bin kernel.bin + cat $^ > $@ + +clean:: + rm -f $(OBJECTS) $(DEPENDS) + rm -f threads/loader.o threads/kernel.lds.s threads/loader.d + rm -f kernel.o kernel.lds.s + rm -f kernel.bin loader.bin os.dsk + rm -f bochsout.txt bochsrc.txt + rm -f results grade + +Makefile: $(SRCDIR)/Makefile.build + cp $< $@ + +-include $(DEPENDS) diff --git a/threads/build/devices/disk.d b/threads/build/devices/disk.d new file mode 100644 index 0000000..b8115be --- /dev/null +++ b/threads/build/devices/disk.d @@ -0,0 +1,9 @@ +devices/disk.o: ../../devices/disk.c ../../include/devices/disk.h \ + ../../include/lib/inttypes.h ../../include/lib/stdint.h \ + ../../include/lib/ctype.h ../../include/lib/debug.h \ + ../../include/lib/stdbool.h ../../include/lib/stdio.h \ + ../../include/lib/stdarg.h ../../include/lib/stddef.h \ + ../../include/lib/kernel/stdio.h ../../include/devices/timer.h \ + ../../include/lib/round.h ../../include/threads/io.h \ + ../../include/threads/interrupt.h ../../include/threads/synch.h \ + ../../include/lib/kernel/list.h diff --git a/threads/build/devices/disk.o b/threads/build/devices/disk.o new file mode 100644 index 0000000000000000000000000000000000000000..e82dd172ff8fb2cf44dc35bcd72e7ce5b78248bf GIT binary patch literal 33456 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 literal 0 HcmV?d00001 diff --git a/threads/build/devices/input.d b/threads/build/devices/input.d new file mode 100644 index 0000000..c214522 --- /dev/null +++ b/threads/build/devices/input.d @@ -0,0 +1,6 @@ +devices/input.o: ../../devices/input.c ../../include/devices/input.h \ + ../../include/lib/stdbool.h ../../include/lib/stdint.h \ + ../../include/lib/debug.h ../../include/devices/intq.h \ + ../../include/threads/interrupt.h ../../include/threads/synch.h \ + ../../include/lib/kernel/list.h ../../include/lib/stddef.h \ + ../../include/devices/serial.h diff --git a/threads/build/devices/input.o b/threads/build/devices/input.o new file mode 100644 index 0000000000000000000000000000000000000000..2695ca7cef46826c8bd1a7aa1b9c63eb5992c9e2 GIT binary patch literal 8616 zcmbW6eT-Dq6~OPCncbcJWWPXGP=}UJEv^1@4qqf$hltN>%q*&UR(8m60)5aQ2YFeyKY=V}abMHBC?p$_4 zy=l;&Q=bn4tefQq?_Ta$1YXg=gI9Xz)D3_QDF+Q^__e-%~OckAC>)`SC27kr6 z!Luw~zj9*NMX5aeVe9e#92@vl*B!m!^$q#9gTLTfgXdU!y#u7OV`)3&+pW6(hq6w0 zeE6z$i9TxcG4j^HgHY1dkR{4QwPxQHFD_> z&h;z*$6&>7(xJ)2*>zEfjO!H=W44!Y?7g-VnZF>iVnt+V;{%%$o7S!s$zstic$u6V z8J<&|7a2`v96KEou~;1b()Qj=$}Yw;ZocHjQeqbP+LIV9IpAjQNNIG`E-V25piICo zrS7aMqmj5A6e1*PSkAa6Wl_Gqu1&;%Rf~#1pa!#Gs0JDnfv_w|C*jTqP;Z4%9|+XR zETpoq%%p8yXaqDh;jh6}dQ?}7eFc=Qtk4?R_6C?KkK0isd56OF;ZuO5X(X`gLtp(M zVlqvj+zN38kV)J5!SHnGnRFYh$8bn)cvFhfs5{uX!Z(__8bmUh_OTQj;413FXd~^9 zg{Hs2_MuzRzp@X_z`EVCvCvGEdmG{2h|nEq-miFM8JHhZ@+_2(h^8UPUICNlXF=!_ zEpQc9-5`*9xNj;=!OV(c&pAzyV4b=hdfbYo7zpJ$ZETqVH-5p>3kR`*rln8~tI7Zx zL_7MUSJ2}u7rvtx zUc!)Y*$`GcUNOC^GGU!s3EHXBf4lPUeEyF6kyQ-I89f+`jDl&T7{qOUFcsta2AWP| zqnc)4tZnth&|F`v(day%*46uBO^Yvv=9k6U!fLbTv~)BETV}MhS?zVLx48dh`JkT({i^E#U1KBjaI;^p7qsP9hx`sM1>i+4^ zt?t4)t!O&bv9Jpb+m1hGi8iYTc>7%NB}50PsVOw*)IC-BnOaj}I4vgnx|VmjEvi|# zEqB2WrYa=)^hpUX`qJk^5N5&i7Z7iQWLei*n&B$kUcBk>8l z;M$I%@Wu;vGF>z%t?UK`C%9jz#U5I8GDR;oj^P*gyQy&yVY1;K01_<8AlZdNDUUXw zNZTW&F%V%DhCL;dbd*)mOM{`}a97n>K=* zU-kHV;lt;{of{TzD4T?L1OhN57?^N#p4^LsYwz9p@P~A->5@3-{=ErjdTlo88$t`BaTss{}jVB9K2{zG`h-Y0do{DdUE*9h2 zY&QO7yEx(H^6@R(c9+~S$BsW_+Y{ZriTk0~o3_OBkmZVTx()G>QpQOOC+Chu{3gHx zgDz0~MTo?!)T-LD$96XFaWCYiTQMvAty*~!?uoNGfVmCdDXXN8k2jA0R!aBu*@E4lWHG24Y3o`Pbs zkQ!gHuXk~D@xn-SEE3%WZb!j5m(76ZLNaSd^Ev3NT~IvlKvQUt$Lc5)y<}=4nlI!$ zJLTmHYE~ukNjH;H!*=7?mB3+dLXP1cJn5v=Xr?p8*Ikn&9&PvfrZj7S8BDfu|Du;X@GTil70*3zJ8;x|0?MxD)ghO0n(Wn zga(VnN7qe`<=~`mBFJ%9yD2|mx$I}ER z<|qg0B#E+~g2tlGx}dL{!$f= zFQn*y3;CCG8yGyUY9pkTfOm^n&ypo~`+EnJdV7?q+Ej2gVF~K1jR>Ij4pyhj$_ce{{_nl+I z_h$L-OdV^Y92u^%>!?1zhB0p<&M`3O`3El`GNGA&hy{6p!m>?n3sJYmvE8Ss60W5ze}U{?Fzlmb|09E6BK|Xj^A7l1gHutyTA|GCE}}U9LI%utlmCAj z`~vZR8+;R$<%0_{`=h2LFWoA2m3S=ShR}c>dVnDT?PDam@7R{i0!iCzapQ?9m19-+wdgd4Kwc zW{+zHuS-1NQH_35WEY~in7>H8&EUTzzL+@QuP3P7Z*XpRz2S%FP13N3uMsjGFzh?2 z-6stmCH|bjmlOYm+Z;ZGSnLiW#8;omU$G_wC@6@J>_Q5vA{SK%)kJV*Xtt-^n9aGr1H ztMFeN{0#ZORE6W5#Dw=j9+~5}9+>G9kQk&Jy2MZ#MX{?&{e$wqU*+>O`ov_`-wtfD_*-#eKV(%JeoF{@$1v z+&<^Wz#3(<{dq?ZWtNlKo;^b4S)NqceQfHP9%Pm@LQB&0v z)fOK7Re1mVmEpnL&xMb)o(m723O~-O=TB>Ns-+o;mXB;{HfmcM@OoB4veulGJcSBC^s`EcFE$&4vY+HM> z?74}5HuMLzI`cwW-HWZ}M{4l7(Yy#kY|q$1JvcP+z-wS&jQ(FXmM6LJoj<+*tna{3 zcC3ibAIsvA)-xj~z?tx!deEWh^+KijaeydD8wZ9a9^8EX{CO-g!xTQ!b|!r9#K+e8 zTMoBcJl~WK>6t;EROkmzx&nSoe600+{-_V0J>2@ymk9cmV}HJX%4`$EWgK}Zhb}Ksnc{c)UOfKNQa@|*fy3UR=>h}T+W6EEA99V4}rOXi|}4R zFrs7mUUl&O`igU@+-?Ul#J%ag~mD zC!-0qaJ*7Qy4=y5j|p0~KHe@F&iH*g=R>_<{$k&Es|;#g$PH-Konf@(hq0RbU3nL693%pc>^`$6KZXH7GVXUb70!M6ucN z(s31-g>sAIb%J~m%3;Ur=u?4P8zDN zMD@pw$|{t9WaQOY^+}!;G^l#4DvNHo2Rf_OingIh@^+LRRqFJ^RjUSzZhkhW`p1Y# zHG*;_%rHbox3<{%fOU(<<76?q#ihpqJ4UIYc*^7e7fihaL{ggel2$6iYRXr#4U3#i zyi=9jSd9}{dt36g{{&oQ96(NUNbnsmg%O<8mr9d@|5!pz z!$RM3*7b5hcms7I2+Q+=upDQW|5&FUzJCXmFEo6khi3|OC^weH(2rbZwq24pqZ3e3N=9*rn{-1i8H_J!%(sZZ> z7aylXB>0Zcg=vBvszCu(-IwbEHVR7z?@Xq(D!a9vxz-L*YgKk@_W-<*X<>#7we@h7 zstIV$Oh|J(hIZO>ZQ%;So|Vyr%*~JmxEQKQPX)?zqEnd@OZMi(KsYCs>>C#E$ce=@ z!{V%Av0C{i`Q}zsl?5thR!s6u9#;vW@y}6ZWvc+elbS?uvuK(MR4gyMvTOr{zqrU3 zs90521{p*?Kqa+MJ`4Idt_sS^%9uOlu+K5|nxS+&WXTL>OD95GXt7M!D&|@f<|(A* zKHr8av|e!ulPd+v(OP;vIrydOSA@ zyDn49(yQO$dPz4S3g{qWHs5d(fdrcA1L*mbn2Z){Fhd>oP>?FujIc<{Hv>+{R^#}e}2{C zr*xsS0!pVCF{BmiotK>j&YwG3|C}o4cOau;x+JJn3xzD}Mln4Is9L_TiZ5m+OTOo8_gy=uxUP9!Qn^In=5im`tiCmFRRm?O`)G2s0w(MPjK=SED{qM)#mI>o>Ip*ETi=mxdOH8iIAb z=~P#yt}Bs>W+0PH)p>4b-EFC)3%OV?)K9ETM7?gzLLr=&LC9p2?#gaA>3Z=PWTRfJ zXXQZilDZ{L!Mg5X-DWV`1{~lyi~@G zWl|o5KG_}AA111J#8$DMsK+siWj)V@fYUfY{Y*BkcDk`hGNrovBA(j~%fR*0dK6jB z#I?RRnW>M}x53drUEkZ=Tffdt@5rS3>aV-umTa;+;nv^kx;q-0BU_;H&DYiU!6lWh zr$t-ek&P!hX@!bc1W7%k;3a|?9eP)wvPnE9yPZMZ1M|WlZRVUlN!z8vJRUj>O}M>g4tpR*)2_)xWBu7U%)Q8(R4Sn&k*;hq7KzXt z&a+8DHT{OlFeG4Ie!Xh>!Lre6qnd`Si#1D*w?_>ZX_Kd!2% zJmg&!@W;#Gl0-E+js$t_2zGY!PN);#5uHYcAw$S0CnqVG7Xs+T?~m z1Mo7UPzsnM|A?Z1;;7^o1yp%Hpj^P5%SV(2%u%-hhi$7!y^x;_J>%3)!mV)C2WBpy z>(}9m`t6kGv%xnZUr7JHQTSf~M?0^R9X`?gHSwFsCB3$QorM2F_Fo!>o1~qN*3$QAE%DY0cO?4#dH%CVTj!^guArZb z^l%r?dh-ycGTtkh_Y@FI99G!u=Ted+RB(>Z zIC>Oge^Gx6#buh{9G|%sx8t+W;%pntsaA{IXA`$LmRp2hnj#KeqTRhHxE6`vMFX+TrnP6r9H^V{z^)n)?%r+wnOjIM=yPaNbw^ zKyZ%F6Bf7Q^PUd^;&z-pi=zue*chbUg0r881ZO|*7M%V3p2clH zPg#79X;Oa@R=BUX_e=Z@G;(;is6N%&@M@B-%-7O=aH`;+VE`d`2iF2%_ghX(v|sRl;0vaKQG$^e~a=Rf~Tn6Zoz*_9L~Wyal2J? zU)v=(KW`2R{sP%KBKR`O-z)fir2lQfe@pp?1%ICMPYC`9<)0D!0Qvu-;BV779;7Sx zm(9F2S3K_X>VLaZm7fD8EPW4@v(Uf}bP)ZNb+Q|GwZqrhfgM;5SqLdBKaw z&dY-DAv>=L{xtDl2!1=|e=GR=G=Bdp_&<@I5^A5vk=x~U#=MU7t`Pe3DBmpjHfnF3 z;C$cNBKUUl=O)4LqkLNM0n$Gt_*>NOU4nBQz9aZEl>dR?D=Gh+;5@$nC^(PrS;1eS z`1@#I!SUqt8}G-M{~OgW7y2&|uM+%G;x&Tv8u(Y z{xB=_e@OQC3tmco-f7vv=Q2NM@3A=A|2gd&9uz!C57HBYUq$>W!Q;eV5&Vb5-w^yK z#7n4s9+z|A6Q&8oIS#xJuNV3phn0eJ9M)TQP~?5x7K>vX_K<%!3;sOuTLeE%{8quM zD1SikCd%9UMr?OGaeLp0{5bKy6m}k_{NsW@P5HOznu{mRhhGVOK97{qII#XfY#h=g z;v9c|f7K-P-yr*I1n2l~wCtb@d|qp_I5zofYPUo12C|kkhILDdyogWK*eh*ngFML^_<6J8^$9W-f z950MBzsI=J;uxO{-8aI5pCsNU_$lHYf|t{Hr34QW-!1qm;)8-;OZ*psUj@!>@yj~Le{2ur}gg(dfzb$=?X9LCIGmB%Byk9MI&?|G!Lf%OFGX&p2 z{0idiC!cMW2>o_63TeC0XFp?>KKdCX`w5GqKl~iuCHP4+4(YhC|0u=tyF%Y+EA@il z{0`++Vdt9^|2IbA|0;Nb8hCdU{%gU%Mfx9%!aowcgZg!D6n8#rk`VLhV0E8;iZ7P-NB3U`H}Ey#im3LE`hH$&J+A1_g!uZ&+e#aDDV2Lm~a| z2Ue*41hvoaRgATfy7-(Z)P6g)&vC-`@r)+hza1F1&whfa(_(t@_o?>angLa|% z3#*Nt1?H0bFK H9P0l7=raiJ literal 0 HcmV?d00001 diff --git a/threads/build/devices/kbd.d b/threads/build/devices/kbd.d new file mode 100644 index 0000000..3aa6ae7 --- /dev/null +++ b/threads/build/devices/kbd.d @@ -0,0 +1,7 @@ +devices/kbd.o: ../../devices/kbd.c ../../include/devices/kbd.h \ + ../../include/lib/stdint.h ../../include/lib/ctype.h \ + ../../include/lib/debug.h ../../include/lib/stdio.h \ + ../../include/lib/stdarg.h ../../include/lib/stdbool.h \ + ../../include/lib/stddef.h ../../include/lib/kernel/stdio.h \ + ../../include/lib/string.h ../../include/devices/input.h \ + ../../include/threads/interrupt.h ../../include/threads/io.h diff --git a/threads/build/devices/kbd.o b/threads/build/devices/kbd.o new file mode 100644 index 0000000000000000000000000000000000000000..088ad01a5aae0794df122d1448d9b0139ddd6168 GIT binary patch literal 12680 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 literal 0 HcmV?d00001 diff --git a/threads/build/devices/serial.d b/threads/build/devices/serial.d new file mode 100644 index 0000000..c094a3f --- /dev/null +++ b/threads/build/devices/serial.d @@ -0,0 +1,8 @@ +devices/serial.o: ../../devices/serial.c ../../include/devices/serial.h \ + ../../include/lib/stdint.h ../../include/lib/debug.h \ + ../../include/devices/input.h ../../include/lib/stdbool.h \ + ../../include/devices/intq.h ../../include/threads/interrupt.h \ + ../../include/threads/synch.h ../../include/lib/kernel/list.h \ + ../../include/lib/stddef.h ../../include/devices/timer.h \ + ../../include/lib/round.h ../../include/threads/io.h \ + ../../include/threads/thread.h diff --git a/threads/build/devices/serial.o b/threads/build/devices/serial.o new file mode 100644 index 0000000000000000000000000000000000000000..b7f93308d149fc2fc7d66bc1e5d7a08ca38484ce GIT binary patch literal 17576 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 literal 0 HcmV?d00001 diff --git a/threads/build/devices/timer.d b/threads/build/devices/timer.d new file mode 100644 index 0000000..ca70799 --- /dev/null +++ b/threads/build/devices/timer.d @@ -0,0 +1,8 @@ +devices/timer.o: ../../devices/timer.c ../../include/devices/timer.h \ + ../../include/lib/round.h ../../include/lib/stdint.h \ + ../../include/lib/debug.h ../../include/lib/inttypes.h \ + ../../include/lib/stdio.h ../../include/lib/stdarg.h \ + ../../include/lib/stdbool.h ../../include/lib/stddef.h \ + ../../include/lib/kernel/stdio.h ../../include/threads/interrupt.h \ + ../../include/threads/io.h ../../include/threads/synch.h \ + ../../include/lib/kernel/list.h ../../include/threads/thread.h diff --git a/threads/build/devices/timer.o b/threads/build/devices/timer.o new file mode 100644 index 0000000000000000000000000000000000000000..264d0fdcdc368ff94ef7a98133c1826e0c5cd81e GIT binary patch literal 15088 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 literal 0 HcmV?d00001 diff --git a/threads/build/devices/vga.d b/threads/build/devices/vga.d new file mode 100644 index 0000000..ece73b2 --- /dev/null +++ b/threads/build/devices/vga.d @@ -0,0 +1,6 @@ +devices/vga.o: ../../devices/vga.c ../../include/devices/vga.h \ + ../../include/lib/round.h ../../include/lib/stdint.h \ + ../../include/lib/stddef.h ../../include/lib/string.h \ + ../../include/threads/io.h ../../include/threads/interrupt.h \ + ../../include/lib/stdbool.h ../../include/threads/vaddr.h \ + ../../include/lib/debug.h ../../include/threads/loader.h diff --git a/threads/build/devices/vga.o b/threads/build/devices/vga.o new file mode 100644 index 0000000000000000000000000000000000000000..e0d8a5e7ae9127dc516dd71c846d14eb40e7b888 GIT binary patch literal 10448 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 E7q@SN7XSbN literal 0 HcmV?d00001 diff --git a/threads/build/kernel.bin b/threads/build/kernel.bin new file mode 100644 index 0000000000000000000000000000000000000000..e5ba2fbb9480f28a025c6847249593749333958a GIT binary patch literal 135168 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 literal 0 HcmV?d00001 diff --git a/threads/build/results b/threads/build/results new file mode 100644 index 0000000..4629286 --- /dev/null +++ b/threads/build/results @@ -0,0 +1,27 @@ +pass tests/threads/alarm-single +pass tests/threads/alarm-multiple +FAIL tests/threads/alarm-simultaneous +FAIL tests/threads/alarm-priority +pass tests/threads/alarm-zero +pass tests/threads/alarm-negative +FAIL tests/threads/priority-change +FAIL tests/threads/priority-donate-one +FAIL tests/threads/priority-donate-multiple +FAIL tests/threads/priority-donate-multiple2 +FAIL tests/threads/priority-donate-nest +FAIL tests/threads/priority-donate-sema +FAIL tests/threads/priority-donate-lower +FAIL tests/threads/priority-fifo +FAIL tests/threads/priority-preempt +FAIL tests/threads/priority-sema +FAIL tests/threads/priority-condvar +FAIL tests/threads/priority-donate-chain +FAIL tests/threads/mlfqs/mlfqs-load-1 +FAIL tests/threads/mlfqs/mlfqs-load-60 +FAIL tests/threads/mlfqs/mlfqs-load-avg +FAIL tests/threads/mlfqs/mlfqs-recent-1 +pass tests/threads/mlfqs/mlfqs-fair-2 +pass tests/threads/mlfqs/mlfqs-fair-20 +FAIL tests/threads/mlfqs/mlfqs-nice-2 +FAIL tests/threads/mlfqs/mlfqs-nice-10 +FAIL tests/threads/mlfqs/mlfqs-block diff --git a/threads/build/tests/threads/alarm-multiple.errors b/threads/build/tests/threads/alarm-multiple.errors new file mode 100644 index 0000000..a2f7a82 --- /dev/null +++ b/threads/build/tests/threads/alarm-multiple.errors @@ -0,0 +1 @@ +qemu-system-x86_64: warning: TCG doesn't support requested feature: CPUID.01H:ECX.vmx [bit 5] diff --git a/threads/build/tests/threads/alarm-multiple.output b/threads/build/tests/threads/alarm-multiple.output new file mode 100644 index 0000000..724afe4 --- /dev/null +++ b/threads/build/tests/threads/alarm-multiple.output @@ -0,0 +1,129 @@ +Kernel command line: -q run alarm-multiple +0 ~ 9fc00 1 +100000 ~ 13e0000 1 +Pintos booting with: + base_mem: 0x0 ~ 0x9fc00 (Usable: 639 kB) + ext_mem: 0x100000 ~ 0x13e0000 (Usable: 19,328 kB) +Calibrating timer... 212,172,800 loops/s. +Boot complete. +Executing 'alarm-multiple': +(alarm-multiple) begin +(alarm-multiple) Creating 5 threads to sleep 7 times each. +(alarm-multiple) Thread 0 sleeps 10 ticks each time, +(alarm-multiple) thread 1 sleeps 20 ticks each time, and so on. +(alarm-multiple) If successful, product of iteration count and +(alarm-multiple) sleep duration will appear in nondescending order. +1번째 쓰레드가 일어날 시간은 587입니다 +3번째 쓰레드가 일어날 시간은 147입니다 +4번째 쓰레드가 일어날 시간은 157입니다 +5번째 쓰레드가 일어날 시간은 167입니다 +6번째 쓰레드가 일어날 시간은 177입니다 +7번째 쓰레드가 일어날 시간은 187입니다 +3번째 쓰레드를 깨웠다! +3번째 쓰레드가 일어날 시간은 157입니다 +4번째 쓰레드를 깨웠다! +3번째 쓰레드를 깨웠다! +4번째 쓰레드가 일어날 시간은 177입니다 +3번째 쓰레드가 일어날 시간은 167입니다 +5번째 쓰레드를 깨웠다! +3번째 쓰레드를 깨웠다! +5번째 쓰레드가 일어날 시간은 197입니다 +3번째 쓰레드가 일어날 시간은 177입니다 +6번째 쓰레드를 깨웠다! +4번째 쓰레드를 깨웠다! +3번째 쓰레드를 깨웠다! +6번째 쓰레드가 일어날 시간은 217입니다 +4번째 쓰레드가 일어날 시간은 197입니다 +3번째 쓰레드가 일어날 시간은 187입니다 +7번째 쓰레드를 깨웠다! +3번째 쓰레드를 깨웠다! +7번째 쓰레드가 일어날 시간은 237입니다 +3번째 쓰레드가 일어날 시간은 197입니다 +5번째 쓰레드를 깨웠다! +4번째 쓰레드를 깨웠다! +3번째 쓰레드를 깨웠다! +5번째 쓰레드가 일어날 시간은 227입니다 +4번째 쓰레드가 일어날 시간은 217입니다 +3번째 쓰레드가 일어날 시간은 207입니다 +3번째 쓰레드를 깨웠다! +6번째 쓰레드를 깨웠다! +4번째 쓰레드를 깨웠다! +6번째 쓰레드가 일어날 시간은 257입니다 +4번째 쓰레드가 일어날 시간은 237입니다 +5번째 쓰레드를 깨웠다! +5번째 쓰레드가 일어날 시간은 257입니다 +7번째 쓰레드를 깨웠다! +4번째 쓰레드를 깨웠다! +7번째 쓰레드가 일어날 시간은 287입니다 +4번째 쓰레드가 일어날 시간은 257입니다 +6번째 쓰레드를 깨웠다! +5번째 쓰레드를 깨웠다! +4번째 쓰레드를 깨웠다! +6번째 쓰레드가 일어날 시간은 297입니다 +5번째 쓰레드가 일어날 시간은 287입니다 +4번째 쓰레드가 일어날 시간은 277입니다 +4번째 쓰레드를 깨웠다! +7번째 쓰레드를 깨웠다! +5번째 쓰레드를 깨웠다! +7번째 쓰레드가 일어날 시간은 337입니다 +5번째 쓰레드가 일어날 시간은 317입니다 +6번째 쓰레드를 깨웠다! +6번째 쓰레드가 일어날 시간은 337입니다 +5번째 쓰레드를 깨웠다! +5번째 쓰레드가 일어날 시간은 347입니다 +7번째 쓰레드를 깨웠다! +6번째 쓰레드를 깨웠다! +7번째 쓰레드가 일어날 시간은 387입니다 +6번째 쓰레드가 일어날 시간은 377입니다 +5번째 쓰레드를 깨웠다! +6번째 쓰레드를 깨웠다! +6번째 쓰레드가 일어날 시간은 417입니다 +7번째 쓰레드를 깨웠다! +7번째 쓰레드가 일어날 시간은 437입니다 +6번째 쓰레드를 깨웠다! +7번째 쓰레드를 깨웠다! +7번째 쓰레드가 일어날 시간은 487입니다 +7번째 쓰레드를 깨웠다! +1번째 쓰레드를 깨웠다! +(alarm-multiple) thread 0: duration=10, iteration=1, product=10 +(alarm-multiple) thread 1: duration=20, iteration=1, product=20 +(alarm-multiple) thread 0: duration=10, iteration=2, product=20 +(alarm-multiple) thread 2: duration=30, iteration=1, product=30 +(alarm-multiple) thread 0: duration=10, iteration=3, product=30 +(alarm-multiple) thread 3: duration=40, iteration=1, product=40 +(alarm-multiple) thread 1: duration=20, iteration=2, product=40 +(alarm-multiple) thread 0: duration=10, iteration=4, product=40 +(alarm-multiple) thread 4: duration=50, iteration=1, product=50 +(alarm-multiple) thread 0: duration=10, iteration=5, product=50 +(alarm-multiple) thread 2: duration=30, iteration=2, product=60 +(alarm-multiple) thread 1: duration=20, iteration=3, product=60 +(alarm-multiple) thread 0: duration=10, iteration=6, product=60 +(alarm-multiple) thread 0: duration=10, iteration=7, product=70 +(alarm-multiple) thread 3: duration=40, iteration=2, product=80 +(alarm-multiple) thread 1: duration=20, iteration=4, product=80 +(alarm-multiple) thread 2: duration=30, iteration=3, product=90 +(alarm-multiple) thread 4: duration=50, iteration=2, product=100 +(alarm-multiple) thread 1: duration=20, iteration=5, product=100 +(alarm-multiple) thread 3: duration=40, iteration=3, product=120 +(alarm-multiple) thread 2: duration=30, iteration=4, product=120 +(alarm-multiple) thread 1: duration=20, iteration=6, product=120 +(alarm-multiple) thread 1: duration=20, iteration=7, product=140 +(alarm-multiple) thread 4: duration=50, iteration=3, product=150 +(alarm-multiple) thread 2: duration=30, iteration=5, product=150 +(alarm-multiple) thread 3: duration=40, iteration=4, product=160 +(alarm-multiple) thread 2: duration=30, iteration=6, product=180 +(alarm-multiple) thread 4: duration=50, iteration=4, product=200 +(alarm-multiple) thread 3: duration=40, iteration=5, product=200 +(alarm-multiple) thread 2: duration=30, iteration=7, product=210 +(alarm-multiple) thread 3: duration=40, iteration=6, product=240 +(alarm-multiple) thread 4: duration=50, iteration=5, product=250 +(alarm-multiple) thread 3: duration=40, iteration=7, product=280 +(alarm-multiple) thread 4: duration=50, iteration=6, product=300 +(alarm-multiple) thread 4: duration=50, iteration=7, product=350 +(alarm-multiple) end +Execution of 'alarm-multiple' complete. +Timer: 637 ticks +Thread: 534 idle ticks, 103 kernel ticks, 0 user ticks +Console: 6092 characters output +Keyboard: 0 keys pressed +Powering off... diff --git a/threads/build/tests/threads/alarm-multiple.result b/threads/build/tests/threads/alarm-multiple.result new file mode 100644 index 0000000..7ef22e9 --- /dev/null +++ b/threads/build/tests/threads/alarm-multiple.result @@ -0,0 +1 @@ +PASS diff --git a/threads/build/tests/threads/alarm-negative.d b/threads/build/tests/threads/alarm-negative.d new file mode 100644 index 0000000..6447dce --- /dev/null +++ b/threads/build/tests/threads/alarm-negative.d @@ -0,0 +1,9 @@ +tests/threads/alarm-negative.o: ../../tests/threads/alarm-negative.c \ + ../../include/lib/stdio.h ../../include/lib/debug.h \ + ../../include/lib/stdarg.h ../../include/lib/stdbool.h \ + ../../include/lib/stddef.h ../../include/lib/stdint.h \ + ../../include/lib/kernel/stdio.h ../../tests/threads/tests.h \ + ../../include/threads/malloc.h ../../include/threads/synch.h \ + ../../include/lib/kernel/list.h ../../include/threads/thread.h \ + ../../include/threads/interrupt.h ../../include/devices/timer.h \ + ../../include/lib/round.h diff --git a/threads/build/tests/threads/alarm-negative.errors b/threads/build/tests/threads/alarm-negative.errors new file mode 100644 index 0000000..a2f7a82 --- /dev/null +++ b/threads/build/tests/threads/alarm-negative.errors @@ -0,0 +1 @@ +qemu-system-x86_64: warning: TCG doesn't support requested feature: CPUID.01H:ECX.vmx [bit 5] diff --git a/threads/build/tests/threads/alarm-negative.o b/threads/build/tests/threads/alarm-negative.o new file mode 100644 index 0000000000000000000000000000000000000000..61fb13d2dd31b6b77138915a9c932bb0079fc73f GIT binary patch literal 3872 zcmbW3-D@0G6u|H7q{-H8)_hb2#RcHckk|wnUC$v zY>XAPRulsY1w|2x_#~x|z9{%2_)&an9|RwK6Z`{w_932g=iJHU?&PJHWbQe?^KsAp zm^=I4+4biNn#N?)*fQJGBxTIFZ%?iXvBr+FNw%@J^UvDt+c$Q1ch`Q9F1vTL^7Yq$ z{u3-i!deu`k4R71&q@LMLU9DO!cfu`4+%{h7F|JT`p_ZAkHM2{#l%JdNv9PuabobH zI07U>v=SPz$&s}izkntNLA+17gG6LSp)i(;`YhANwMWa7CA~aT9@i#D#vTNRM_8$} z42UtEL@01*p6TUNrKd~JPoAEBW*Q1HwbRoHIyQ~5wW%*xrnO0^V&|I1#VJ3ke@`A}Ju@Tj&dH2cDYtUwIUsV!L4de8;wq^w5Yaa&1c^~mMC$9i@YF)`M@an8NCVXRiG#!2%jbIz!E zQP7SnZ8xxEQ2d}0@>bo3US}(OC9d>&}o8dht2NN_ToZi zVcw{8jLLaP+Xm;rb0BkQd%V&MpjsX#yywDD=+MJ(6r$K}ZdQ6>5c6gngh|zdrKj^~ zcI}Xf2d;lz>``6rQ4)h&cU$;&H_8P zx_ZiZY@^Zl<9@QDl_&c`tG-)ZH0S1zClpV_QG7ttuDr~&?J;fU$Vl-zoSTP$;XgKU z!q1e)J}Rt^4%@$hN5b=-5DGWWzq@%hIBR(rj;1)A12&!RF4dqXcZrH2OL{@D_7{{SJh@uU+gi~JUC`2z}{Aw4^8dO3mZ zc*Z|_+~zVI^Is%^}q+$a92!e1i(8F5sz>wHV$@EH~Ddxbwt`mfZ>eZNHd?+5U^3U^8W;{Yzt z80Hth7|2h)8*2SukX_{lahz**zRZl?@?yIIeHW<$Iz$Rq7(Fpn0KC>O#eg{9=nGo0UxeS4EnAr?GkK_bE73~vR_dCjfQkDHx@J3mUe+`R*_IT2zPZ=ls9k56_bpqi- ziqA5XRo}0PQMsx6#}vPql0=a6m-s6X^49NC&idi^TE@$D#d_4SG51e2{#7a%e~;j= k6g3`)QQtj4tVZWwes7UsQ|FKSnis!K_1_dxdk;1KfBso}Jpcdz literal 0 HcmV?d00001 diff --git a/threads/build/tests/threads/alarm-negative.output b/threads/build/tests/threads/alarm-negative.output new file mode 100644 index 0000000..5e5a576 --- /dev/null +++ b/threads/build/tests/threads/alarm-negative.output @@ -0,0 +1,18 @@ +Kernel command line: -q run alarm-negative +0 ~ 9fc00 1 +100000 ~ 13e0000 1 +Pintos booting with: + base_mem: 0x0 ~ 0x9fc00 (Usable: 639 kB) + ext_mem: 0x100000 ~ 0x13e0000 (Usable: 19,328 kB) +Calibrating timer... 212,172,800 loops/s. +Boot complete. +Executing 'alarm-negative': +(alarm-negative) begin +(alarm-negative) PASS +(alarm-negative) end +Execution of 'alarm-negative' complete. +Timer: 32 ticks +Thread: 0 idle ticks, 32 kernel ticks, 0 user ticks +Console: 449 characters output +Keyboard: 0 keys pressed +Powering off... diff --git a/threads/build/tests/threads/alarm-negative.result b/threads/build/tests/threads/alarm-negative.result new file mode 100644 index 0000000..7ef22e9 --- /dev/null +++ b/threads/build/tests/threads/alarm-negative.result @@ -0,0 +1 @@ +PASS diff --git a/threads/build/tests/threads/alarm-priority.d b/threads/build/tests/threads/alarm-priority.d new file mode 100644 index 0000000..37f081a --- /dev/null +++ b/threads/build/tests/threads/alarm-priority.d @@ -0,0 +1,9 @@ +tests/threads/alarm-priority.o: ../../tests/threads/alarm-priority.c \ + ../../include/lib/stdio.h ../../include/lib/debug.h \ + ../../include/lib/stdarg.h ../../include/lib/stdbool.h \ + ../../include/lib/stddef.h ../../include/lib/stdint.h \ + ../../include/lib/kernel/stdio.h ../../tests/threads/tests.h \ + ../../include/threads/init.h ../../include/threads/malloc.h \ + ../../include/threads/synch.h ../../include/lib/kernel/list.h \ + ../../include/threads/thread.h ../../include/threads/interrupt.h \ + ../../include/devices/timer.h ../../include/lib/round.h diff --git a/threads/build/tests/threads/alarm-priority.errors b/threads/build/tests/threads/alarm-priority.errors new file mode 100644 index 0000000..a2f7a82 --- /dev/null +++ b/threads/build/tests/threads/alarm-priority.errors @@ -0,0 +1 @@ +qemu-system-x86_64: warning: TCG doesn't support requested feature: CPUID.01H:ECX.vmx [bit 5] diff --git a/threads/build/tests/threads/alarm-priority.o b/threads/build/tests/threads/alarm-priority.o new file mode 100644 index 0000000000000000000000000000000000000000..4db3f72578c5875a52692801f174510c5639f6d8 GIT binary patch literal 8648 zcmbVReT-aH6~Aw$yF0tvo&7Fdu=Ekz(pG1ti%Th`v|Gx;Y(-irg(AXqcIM6QV`tt> z=e_B+)k0+pcC6J_ji@0Cl^`a@j~EFO#g-ypCb~5-_77A@M2nD!0Yla5dd|J)ym@;& z6BBQC-aY4cKJK~a-Oso8jofrY$S?#KL#!7yj!_{Fy{|?OOLAEBi$1YES$#b@{g#=0 zishY8is`qFgC{B*Mtv;#W0oeLX6l&*KqY_1tkfO#^)}9)uDP6@Ngg@+E`(KslGUzf z(6r{DCYzmkVdOjt-*^xnheysINj5z_p3CK`FTVGelm84=Up#qk@rq}wGbdjS88gO- z6(_4NKXoanu9&HgoIAYzT=K}s+3M*)s9hjTR$ovt`n}pXJ9D@qm1Wp9eNYWXGd*(N znBITBwexeO+1Xjye_ePQc+Up@NLDNOe^$oKMOb^n>5lVo+|?3>2XPwD;ozj5sxR}&$C?5O(+vLkfg;=R< z7t6M{H=YqpnoG0dR_WJV>Y7u-=E*7?2}PQam-eBy7>bN$L_#4cXqwk#JD!qJen;H0mvrrX~Ds1<&qX$O)--+^=ljGvP=Jj|xM`k=E) z^=^cTP9fa|%21X!N3Le2=GGyEq(O7rUxAE>wo#DcuO0i{$vvNskc_#-!w@^*Cyb6P zJX;~vswgljgYdy9%8ZqyBECz6@$h2kWM{gv2ZYxE7&?|z_AzuCI<^BRpe+9ZMW4ae zd}fZMFDO|YWL5^5D}fQ+=-7}?q>9ivEXKocKwCYwFnaF-HgqiCi|{`Hto5=FAuRW+ zN_-2%D)dFlYC>_BVxof`84kv=1>^90^0A<3PPeR}q!eU6fgaknLL(TUd|$m{KK7uW zA`_908X2vTT|U`za6!Qx7x-&i;-k%77qN$SN%)eM{XW@R^U_>vrsXrfLUR;SY%GoT zwuhsaM7xci7IYh0BHG*610+Pa6G)h63q&}&w*8v+QOI@^iD9rd5Bd0pfpr5gQBWV1 zBE3d9+TM;f2C%IizTz72*Jc=_y@x1F(EAud?UApqCQX02R&0{a6rETf9H z9UCba(RtfNY97errHo*=2(6y1qp*)wqyaqWE;O0iQZ zE1xd8R#x>ZRZ2T{Mz~fXT>^EB()>U6OKxs=I$yE4(G2Xzo+Tz=R~9$kyxrV1IA~rK zzcRkcj1}Bs&Wq*p#k2>EQ;e0ZY;0fAv4G1IididvEo{l-$bt~|av;2lV_iFLIab-u z0GlpnCa&GHW_4`!kQo~{V_U#&4wQ=p8$6dG9kEgo;rR4Ac260VodOv0{T z^sJ0mEQ_i1BqRk=0+j8gFa;uCbjD5jz_j^9z0E&SaJ)n&u^kQ`ZlX{qB(AsINv~K+ zY`guQiZhu8nxoS;nE4bRSEm4B1SUZE@@X3m?v}>hGh5V3k9XM7vUQWn2>%jqr zUYDDDVH3L=$~BiVLR zeh8^luHs};DSorA<<$;7YE;c}CSyX6B6VG{n1?x+E_*7qGKF)LWt^3gnz+8(lp49B zRGfk#TFm8AQxld0{c$WgI8!)xDI=bpnRH?BTe}6kcNoFrun;)b9#4oHH*H#LF5f;@ zalDEee6bHzBsX~P;F|cVp%n^+^^(>yW8W>p*wbZPGQTBq6y`NvNBBx2ckGSPt_MS# zI-0}x7|(;w5|FPWTY1c2`N(uQ^vzQnQHR8JD`*0ioxjc26Nc;FkYGi@C96&etJC2e zNe^&F0Ow$^Pl%hOy_{;S!nn+7Wf|}W;3dL2Uqir$K*FaPK5C&_SRLNTqE>~qErlgv zbt+`mufswe2z-EuusQ+hFtpow0fs=hcJ!Ge4-4Gz=9bOC_CUY5aR2TGz&}8-5bDVW z_*4UYx&eNq0siF%_+t%lyg}8A^VtUYOauIt2Kdn*P|@xiMHuV}C& z)LVS#>~nI1rj1N(acYH-D~((?{FRODXsaS_?(*g@qjPsl#i_-Z?Bq&~hgx3JAQhqw zA5d^4!CA~N_!$5T;_{j%Ik+lO%{Y(DD>R(v;YJN-`>g?-=PE*YS-^t+{X;X*><@7` z2KnWFq8K-c|7-xq4=h}MM+E9)zdl0zy8+xk=L6P(icqk^BNNZFivu_uXZ?cL8!TAC z>D(_j2XKtvB*~5dezC7D#JvGLn1`cWcaZGw0i4GSiqvggol+?;t;% zSC0P!q-SaR4-jA0@Vlwqy&C==;RiJQQ`9c|<92zhd_mKHKj}ZD;ZfT1k8AiZsofuH z_#ep62@U@`;Xl{#8wo$H;rt1L=QYQ_km7k;)Bh^@Ij`Z560g3D)y5l-`+n*N`@fC! zFVk?`AF;$VyouVqNyEQH_-z`_b1ALin~5(_ja6{I@7DBhB_6Kpvar6XSaDd>e~IEb z7SKnC*F9cOI1i7J{&SlCA>vPK_;KQYui+<%e^bMML;N`ne~oy~E3z2MEa5#A7vufJ zn^bfB71Cd(=~H^dsHUGKep^5v*F)Z)J|4i4JWh^w5zg)Mx^|z2bH9!d&hhgB{A(J% zgyMff!|$Yaf285#gg>j{cz(n3D-GX7{$J7XF~VmF=YIX0_%O{s9dFa{b*fpx>j&#I z-mmHN_!ww_n;K5;#gYd2Y7IY0@vm)wZ`ANJl!p-w|0wzSu!gh#Rt^6m1$t`({7wzu zO!}z?cuvFLp?L0TfbY`q0_j&8;Gfj+0n$Iv01xi(_>Q@B5rJtW7ZT~Fyz00~`luV! zAJ%YQuSDG4Tkz8G`Ofvqs-9q~44;O{(=ZYG=TS;Cs|h?);(jvhBZ@djFX|8_y$4{ljgTInftL|Z!+@l4t`EK} zA5}gAto*EtK6U$@WS)bx4$F}$AandkbC$qU-JeS-tpo(q)6~ zF@F3XnI8Wxz;vGgiPxz8DNU%cA`iOt+CNI|^Ekuy@t&Z!zaKF4$#DWH%MSSuJ^1%P zgZIaA90Kin_7&Q&SCT)j*pBOCWY2Q0zrh^@OR+TPk3D?PR^WwWrMrRs8H)e=Y)G}9 GzyAVLNX1Y9 literal 0 HcmV?d00001 diff --git a/threads/build/tests/threads/alarm-priority.output b/threads/build/tests/threads/alarm-priority.output new file mode 100644 index 0000000..0521b34 --- /dev/null +++ b/threads/build/tests/threads/alarm-priority.output @@ -0,0 +1,47 @@ +Kernel command line: -q run alarm-priority +0 ~ 9fc00 1 +100000 ~ 13e0000 1 +Pintos booting with: + base_mem: 0x0 ~ 0x9fc00 (Usable: 639 kB) + ext_mem: 0x100000 ~ 0x13e0000 (Usable: 19,328 kB) +Calibrating timer... 209,510,400 loops/s. +Boot complete. +Executing 'alarm-priority': +(alarm-priority) begin +3번째 쓰레드가 일어날 시간은 523입니다 +4번째 쓰레드가 일어날 시간은 523입니다 +5번째 쓰레드가 일어날 시간은 523입니다 +6번째 쓰레드가 일어날 시간은 523입니다 +7번째 쓰레드가 일어날 시간은 523입니다 +8번째 쓰레드가 일어날 시간은 523입니다 +9번째 쓰레드가 일어날 시간은 523입니다 +10번째 쓰레드가 일어날 시간은 523입니다 +11번째 쓰레드가 일어날 시간은 523입니다 +12번째 쓰레드가 일어날 시간은 523입니다 +3번째 쓰레드를 깨웠다! +4번째 쓰레드를 깨웠다! +5번째 쓰레드를 깨웠다! +6번째 쓰레드를 깨웠다! +7번째 쓰레드를 깨웠다! +8번째 쓰레드를 깨웠다! +9번째 쓰레드를 깨웠다! +10번째 쓰레드를 깨웠다! +11번째 쓰레드를 깨웠다! +12번째 쓰레드를 깨웠다! +(alarm-priority) Thread priority 25 woke up. +(alarm-priority) Thread priority 24 woke up. +(alarm-priority) Thread priority 23 woke up. +(alarm-priority) Thread priority 22 woke up. +(alarm-priority) Thread priority 21 woke up. +(alarm-priority) Thread priority 30 woke up. +(alarm-priority) Thread priority 29 woke up. +(alarm-priority) Thread priority 28 woke up. +(alarm-priority) Thread priority 27 woke up. +(alarm-priority) Thread priority 26 woke up. +(alarm-priority) end +Execution of 'alarm-priority' complete. +Timer: 534 ticks +Thread: 485 idle ticks, 50 kernel ticks, 0 user ticks +Console: 1746 characters output +Keyboard: 0 keys pressed +Powering off... diff --git a/threads/build/tests/threads/alarm-priority.result b/threads/build/tests/threads/alarm-priority.result new file mode 100644 index 0000000..781ff04 --- /dev/null +++ b/threads/build/tests/threads/alarm-priority.result @@ -0,0 +1,54 @@ +FAIL +Test output failed to match any acceptable form. + +Acceptable output: + (alarm-priority) begin + (alarm-priority) Thread priority 30 woke up. + (alarm-priority) Thread priority 29 woke up. + (alarm-priority) Thread priority 28 woke up. + (alarm-priority) Thread priority 27 woke up. + (alarm-priority) Thread priority 26 woke up. + (alarm-priority) Thread priority 25 woke up. + (alarm-priority) Thread priority 24 woke up. + (alarm-priority) Thread priority 23 woke up. + (alarm-priority) Thread priority 22 woke up. + (alarm-priority) Thread priority 21 woke up. + (alarm-priority) end +Differences in `diff -u' format: + (alarm-priority) begin +- (alarm-priority) Thread priority 30 woke up. +- (alarm-priority) Thread priority 29 woke up. +- (alarm-priority) Thread priority 28 woke up. +- (alarm-priority) Thread priority 27 woke up. +- (alarm-priority) Thread priority 26 woke up. ++ 3번째 쓰레드가 일어날 시간은 523입니다 ++ 4번째 쓰레드가 일어날 시간은 523입니다 ++ 5번째 쓰레드가 일어날 시간은 523입니다 ++ 6번째 쓰레드가 일어날 시간은 523입니다 ++ 7번째 쓰레드가 일어날 시간은 523입니다 ++ 8번째 쓰레드가 일어날 시간은 523입니다 ++ 9번째 쓰레드가 일어날 시간은 523입니다 ++ 10번째 쓰레드가 일어날 시간은 523입니다 ++ 11번째 쓰레드가 일어날 시간은 523입니다 ++ 12번째 쓰레드가 일어날 시간은 523입니다 ++ 3번째 쓰레드를 깨웠다! ++ 4번째 쓰레드를 깨웠다! ++ 5번째 쓰레드를 깨웠다! ++ 6번째 쓰레드를 깨웠다! ++ 7번째 쓰레드를 깨웠다! ++ 8번째 쓰레드를 깨웠다! ++ 9번째 쓰레드를 깨웠다! ++ 10번째 쓰레드를 깨웠다! ++ 11번째 쓰레드를 깨웠다! ++ 12번째 쓰레드를 깨웠다! + (alarm-priority) Thread priority 25 woke up. + (alarm-priority) Thread priority 24 woke up. + (alarm-priority) Thread priority 23 woke up. + (alarm-priority) Thread priority 22 woke up. + (alarm-priority) Thread priority 21 woke up. ++ (alarm-priority) Thread priority 30 woke up. ++ (alarm-priority) Thread priority 29 woke up. ++ (alarm-priority) Thread priority 28 woke up. ++ (alarm-priority) Thread priority 27 woke up. ++ (alarm-priority) Thread priority 26 woke up. + (alarm-priority) end diff --git a/threads/build/tests/threads/alarm-simultaneous.d b/threads/build/tests/threads/alarm-simultaneous.d new file mode 100644 index 0000000..be3dee4 --- /dev/null +++ b/threads/build/tests/threads/alarm-simultaneous.d @@ -0,0 +1,10 @@ +tests/threads/alarm-simultaneous.o: \ + ../../tests/threads/alarm-simultaneous.c ../../include/lib/stdio.h \ + ../../include/lib/debug.h ../../include/lib/stdarg.h \ + ../../include/lib/stdbool.h ../../include/lib/stddef.h \ + ../../include/lib/stdint.h ../../include/lib/kernel/stdio.h \ + ../../tests/threads/tests.h ../../include/threads/init.h \ + ../../include/threads/malloc.h ../../include/threads/synch.h \ + ../../include/lib/kernel/list.h ../../include/threads/thread.h \ + ../../include/threads/interrupt.h ../../include/devices/timer.h \ + ../../include/lib/round.h diff --git a/threads/build/tests/threads/alarm-simultaneous.errors b/threads/build/tests/threads/alarm-simultaneous.errors new file mode 100644 index 0000000..a2f7a82 --- /dev/null +++ b/threads/build/tests/threads/alarm-simultaneous.errors @@ -0,0 +1 @@ +qemu-system-x86_64: warning: TCG doesn't support requested feature: CPUID.01H:ECX.vmx [bit 5] diff --git a/threads/build/tests/threads/alarm-simultaneous.o b/threads/build/tests/threads/alarm-simultaneous.o new file mode 100644 index 0000000000000000000000000000000000000000..d65b39b9a5c224b334a842024972d0484e1d9b34 GIT binary patch literal 9624 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 literal 0 HcmV?d00001 diff --git a/threads/build/tests/threads/alarm-simultaneous.output b/threads/build/tests/threads/alarm-simultaneous.output new file mode 100644 index 0000000..b8e867e --- /dev/null +++ b/threads/build/tests/threads/alarm-simultaneous.output @@ -0,0 +1,73 @@ +Kernel command line: -q run alarm-simultaneous +0 ~ 9fc00 1 +100000 ~ 13e0000 1 +Pintos booting with: + base_mem: 0x0 ~ 0x9fc00 (Usable: 639 kB) + ext_mem: 0x100000 ~ 0x13e0000 (Usable: 19,328 kB) +Calibrating timer... 212,582,400 loops/s. +Boot complete. +Executing 'alarm-simultaneous': +(alarm-simultaneous) begin +(alarm-simultaneous) Creating 3 threads to sleep 5 times each. +(alarm-simultaneous) Each thread sleeps 10 ticks each time. +(alarm-simultaneous) Within an iteration, all threads should wake up on the same tick. +1번째 쓰레드가 일어날 시간은 284입니다 +3번째 쓰레드가 일어날 시간은 35입니다 +3번째 쓰레드를 깨웠다! +4번째 쓰레드가 일어날 시간은 37입니다 +4번째 쓰레드를 깨웠다! +5번째 쓰레드가 일어날 시간은 39입니다 +5번째 쓰레드를 깨웠다! +3번째 쓰레드가 일어날 시간은 144입니다 +4번째 쓰레드가 일어날 시간은 144입니다 +5번째 쓰레드가 일어날 시간은 144입니다 +3번째 쓰레드를 깨웠다! +4번째 쓰레드를 깨웠다! +5번째 쓰레드를 깨웠다! +3번째 쓰레드가 일어날 시간은 154입니다 +4번째 쓰레드가 일어날 시간은 154입니다 +5번째 쓰레드가 일어날 시간은 154입니다 +3번째 쓰레드를 깨웠다! +4번째 쓰레드를 깨웠다! +5번째 쓰레드를 깨웠다! +3번째 쓰레드가 일어날 시간은 164입니다 +4번째 쓰레드가 일어날 시간은 164입니다 +5번째 쓰레드가 일어날 시간은 164입니다 +3번째 쓰레드를 깨웠다! +4번째 쓰레드를 깨웠다! +5번째 쓰레드를 깨웠다! +3번째 쓰레드가 일어날 시간은 174입니다 +4번째 쓰레드가 일어날 시간은 174입니다 +5번째 쓰레드가 일어날 시간은 174입니다 +3번째 쓰레드를 깨웠다! +4번째 쓰레드를 깨웠다! +5번째 쓰레드를 깨웠다! +3번째 쓰레드가 일어날 시간은 184입니다 +4번째 쓰레드가 일어날 시간은 184입니다 +5번째 쓰레드가 일어날 시간은 184입니다 +3번째 쓰레드를 깨웠다! +4번째 쓰레드를 깨웠다! +5번째 쓰레드를 깨웠다! +1번째 쓰레드를 깨웠다! +(alarm-simultaneous) iteration 0, thread 0: woke up after 12 ticks +(alarm-simultaneous) iteration 0, thread 1: woke up 0 ticks later +(alarm-simultaneous) iteration 0, thread 2: woke up 0 ticks later +(alarm-simultaneous) iteration 1, thread 0: woke up 10 ticks later +(alarm-simultaneous) iteration 1, thread 1: woke up 0 ticks later +(alarm-simultaneous) iteration 1, thread 2: woke up 0 ticks later +(alarm-simultaneous) iteration 2, thread 0: woke up 9 ticks later +(alarm-simultaneous) iteration 2, thread 1: woke up 0 ticks later +(alarm-simultaneous) iteration 2, thread 2: woke up 0 ticks later +(alarm-simultaneous) iteration 3, thread 0: woke up 10 ticks later +(alarm-simultaneous) iteration 3, thread 1: woke up 0 ticks later +(alarm-simultaneous) iteration 3, thread 2: woke up 0 ticks later +(alarm-simultaneous) iteration 4, thread 0: woke up 10 ticks later +(alarm-simultaneous) iteration 4, thread 1: woke up 0 ticks later +(alarm-simultaneous) iteration 4, thread 2: woke up 0 ticks later +(alarm-simultaneous) end +Execution of 'alarm-simultaneous' complete. +Timer: 307 ticks +Thread: 237 idle ticks, 70 kernel ticks, 0 user ticks +Console: 3285 characters output +Keyboard: 0 keys pressed +Powering off... diff --git a/threads/build/tests/threads/alarm-simultaneous.result b/threads/build/tests/threads/alarm-simultaneous.result new file mode 100644 index 0000000..5e2236e --- /dev/null +++ b/threads/build/tests/threads/alarm-simultaneous.result @@ -0,0 +1,85 @@ +FAIL +Test output failed to match any acceptable form. + +Acceptable output: + (alarm-simultaneous) begin + (alarm-simultaneous) Creating 3 threads to sleep 5 times each. + (alarm-simultaneous) Each thread sleeps 10 ticks each time. + (alarm-simultaneous) Within an iteration, all threads should wake up on the same tick. + (alarm-simultaneous) iteration 0, thread 0: woke up after 10 ticks + (alarm-simultaneous) iteration 0, thread 1: woke up 0 ticks later + (alarm-simultaneous) iteration 0, thread 2: woke up 0 ticks later + (alarm-simultaneous) iteration 1, thread 0: woke up 10 ticks later + (alarm-simultaneous) iteration 1, thread 1: woke up 0 ticks later + (alarm-simultaneous) iteration 1, thread 2: woke up 0 ticks later + (alarm-simultaneous) iteration 2, thread 0: woke up 10 ticks later + (alarm-simultaneous) iteration 2, thread 1: woke up 0 ticks later + (alarm-simultaneous) iteration 2, thread 2: woke up 0 ticks later + (alarm-simultaneous) iteration 3, thread 0: woke up 10 ticks later + (alarm-simultaneous) iteration 3, thread 1: woke up 0 ticks later + (alarm-simultaneous) iteration 3, thread 2: woke up 0 ticks later + (alarm-simultaneous) iteration 4, thread 0: woke up 10 ticks later + (alarm-simultaneous) iteration 4, thread 1: woke up 0 ticks later + (alarm-simultaneous) iteration 4, thread 2: woke up 0 ticks later + (alarm-simultaneous) end +Differences in `diff -u' format: + (alarm-simultaneous) begin + (alarm-simultaneous) Creating 3 threads to sleep 5 times each. + (alarm-simultaneous) Each thread sleeps 10 ticks each time. + (alarm-simultaneous) Within an iteration, all threads should wake up on the same tick. +- (alarm-simultaneous) iteration 0, thread 0: woke up after 10 ticks ++ 1번째 쓰레드가 일어날 시간은 284입니다 ++ 3번째 쓰레드가 일어날 시간은 35입니다 ++ 3번째 쓰레드를 깨웠다! ++ 4번째 쓰레드가 일어날 시간은 37입니다 ++ 4번째 쓰레드를 깨웠다! ++ 5번째 쓰레드가 일어날 시간은 39입니다 ++ 5번째 쓰레드를 깨웠다! ++ 3번째 쓰레드가 일어날 시간은 144입니다 ++ 4번째 쓰레드가 일어날 시간은 144입니다 ++ 5번째 쓰레드가 일어날 시간은 144입니다 ++ 3번째 쓰레드를 깨웠다! ++ 4번째 쓰레드를 깨웠다! ++ 5번째 쓰레드를 깨웠다! ++ 3번째 쓰레드가 일어날 시간은 154입니다 ++ 4번째 쓰레드가 일어날 시간은 154입니다 ++ 5번째 쓰레드가 일어날 시간은 154입니다 ++ 3번째 쓰레드를 깨웠다! ++ 4번째 쓰레드를 깨웠다! ++ 5번째 쓰레드를 깨웠다! ++ 3번째 쓰레드가 일어날 시간은 164입니다 ++ 4번째 쓰레드가 일어날 시간은 164입니다 ++ 5번째 쓰레드가 일어날 시간은 164입니다 ++ 3번째 쓰레드를 깨웠다! ++ 4번째 쓰레드를 깨웠다! ++ 5번째 쓰레드를 깨웠다! ++ 3번째 쓰레드가 일어날 시간은 174입니다 ++ 4번째 쓰레드가 일어날 시간은 174입니다 ++ 5번째 쓰레드가 일어날 시간은 174입니다 ++ 3번째 쓰레드를 깨웠다! ++ 4번째 쓰레드를 깨웠다! ++ 5번째 쓰레드를 깨웠다! ++ 3번째 쓰레드가 일어날 시간은 184입니다 ++ 4번째 쓰레드가 일어날 시간은 184입니다 ++ 5번째 쓰레드가 일어날 시간은 184입니다 ++ 3번째 쓰레드를 깨웠다! ++ 4번째 쓰레드를 깨웠다! ++ 5번째 쓰레드를 깨웠다! ++ 1번째 쓰레드를 깨웠다! ++ (alarm-simultaneous) iteration 0, thread 0: woke up after 12 ticks + (alarm-simultaneous) iteration 0, thread 1: woke up 0 ticks later + (alarm-simultaneous) iteration 0, thread 2: woke up 0 ticks later + (alarm-simultaneous) iteration 1, thread 0: woke up 10 ticks later + (alarm-simultaneous) iteration 1, thread 1: woke up 0 ticks later + (alarm-simultaneous) iteration 1, thread 2: woke up 0 ticks later +- (alarm-simultaneous) iteration 2, thread 0: woke up 10 ticks later ++ (alarm-simultaneous) iteration 2, thread 0: woke up 9 ticks later + (alarm-simultaneous) iteration 2, thread 1: woke up 0 ticks later + (alarm-simultaneous) iteration 2, thread 2: woke up 0 ticks later + (alarm-simultaneous) iteration 3, thread 0: woke up 10 ticks later + (alarm-simultaneous) iteration 3, thread 1: woke up 0 ticks later + (alarm-simultaneous) iteration 3, thread 2: woke up 0 ticks later + (alarm-simultaneous) iteration 4, thread 0: woke up 10 ticks later + (alarm-simultaneous) iteration 4, thread 1: woke up 0 ticks later + (alarm-simultaneous) iteration 4, thread 2: woke up 0 ticks later + (alarm-simultaneous) end diff --git a/threads/build/tests/threads/alarm-single.errors b/threads/build/tests/threads/alarm-single.errors new file mode 100644 index 0000000..a2f7a82 --- /dev/null +++ b/threads/build/tests/threads/alarm-single.errors @@ -0,0 +1 @@ +qemu-system-x86_64: warning: TCG doesn't support requested feature: CPUID.01H:ECX.vmx [bit 5] diff --git a/threads/build/tests/threads/alarm-single.output b/threads/build/tests/threads/alarm-single.output new file mode 100644 index 0000000..822b5ca --- /dev/null +++ b/threads/build/tests/threads/alarm-single.output @@ -0,0 +1,39 @@ +Kernel command line: -q run alarm-single +0 ~ 9fc00 1 +100000 ~ 13e0000 1 +Pintos booting with: + base_mem: 0x0 ~ 0x9fc00 (Usable: 639 kB) + ext_mem: 0x100000 ~ 0x13e0000 (Usable: 19,328 kB) +Calibrating timer... 222,412,800 loops/s. +Boot complete. +Executing 'alarm-single': +(alarm-single) begin +(alarm-single) Creating 5 threads to sleep 1 times each. +(alarm-single) Thread 0 sleeps 10 ticks each time, +(alarm-single) thread 1 sleeps 20 ticks each time, and so on. +(alarm-single) If successful, product of iteration count and +(alarm-single) sleep duration will appear in nondescending order. +1번째 쓰레드가 일어날 시간은 284입니다 +3번째 쓰레드가 일어날 시간은 144입니다 +4번째 쓰레드가 일어날 시간은 154입니다 +5번째 쓰레드가 일어날 시간은 164입니다 +6번째 쓰레드가 일어날 시간은 174입니다 +7번째 쓰레드가 일어날 시간은 184입니다 +3번째 쓰레드를 깨웠다! +4번째 쓰레드를 깨웠다! +5번째 쓰레드를 깨웠다! +6번째 쓰레드를 깨웠다! +7번째 쓰레드를 깨웠다! +1번째 쓰레드를 깨웠다! +(alarm-single) thread 0: duration=10, iteration=1, product=10 +(alarm-single) thread 1: duration=20, iteration=1, product=20 +(alarm-single) thread 2: duration=30, iteration=1, product=30 +(alarm-single) thread 3: duration=40, iteration=1, product=40 +(alarm-single) thread 4: duration=50, iteration=1, product=50 +(alarm-single) end +Execution of 'alarm-single' complete. +Timer: 291 ticks +Thread: 246 idle ticks, 45 kernel ticks, 0 user ticks +Console: 1543 characters output +Keyboard: 0 keys pressed +Powering off... diff --git a/threads/build/tests/threads/alarm-single.result b/threads/build/tests/threads/alarm-single.result new file mode 100644 index 0000000..7ef22e9 --- /dev/null +++ b/threads/build/tests/threads/alarm-single.result @@ -0,0 +1 @@ +PASS diff --git a/threads/build/tests/threads/alarm-wait.d b/threads/build/tests/threads/alarm-wait.d new file mode 100644 index 0000000..3dff7e7 --- /dev/null +++ b/threads/build/tests/threads/alarm-wait.d @@ -0,0 +1,9 @@ +tests/threads/alarm-wait.o: ../../tests/threads/alarm-wait.c \ + ../../include/lib/stdio.h ../../include/lib/debug.h \ + ../../include/lib/stdarg.h ../../include/lib/stdbool.h \ + ../../include/lib/stddef.h ../../include/lib/stdint.h \ + ../../include/lib/kernel/stdio.h ../../tests/threads/tests.h \ + ../../include/threads/init.h ../../include/threads/malloc.h \ + ../../include/threads/synch.h ../../include/lib/kernel/list.h \ + ../../include/threads/thread.h ../../include/threads/interrupt.h \ + ../../include/devices/timer.h ../../include/lib/round.h diff --git a/threads/build/tests/threads/alarm-wait.o b/threads/build/tests/threads/alarm-wait.o new file mode 100644 index 0000000000000000000000000000000000000000..37219075709b9fc4826bd17720d6e87b824bfe1f GIT binary patch literal 14352 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 literal 0 HcmV?d00001 diff --git a/threads/build/tests/threads/alarm-zero.d b/threads/build/tests/threads/alarm-zero.d new file mode 100644 index 0000000..905d620 --- /dev/null +++ b/threads/build/tests/threads/alarm-zero.d @@ -0,0 +1,9 @@ +tests/threads/alarm-zero.o: ../../tests/threads/alarm-zero.c \ + ../../include/lib/stdio.h ../../include/lib/debug.h \ + ../../include/lib/stdarg.h ../../include/lib/stdbool.h \ + ../../include/lib/stddef.h ../../include/lib/stdint.h \ + ../../include/lib/kernel/stdio.h ../../tests/threads/tests.h \ + ../../include/threads/malloc.h ../../include/threads/synch.h \ + ../../include/lib/kernel/list.h ../../include/threads/thread.h \ + ../../include/threads/interrupt.h ../../include/devices/timer.h \ + ../../include/lib/round.h diff --git a/threads/build/tests/threads/alarm-zero.errors b/threads/build/tests/threads/alarm-zero.errors new file mode 100644 index 0000000..a2f7a82 --- /dev/null +++ b/threads/build/tests/threads/alarm-zero.errors @@ -0,0 +1 @@ +qemu-system-x86_64: warning: TCG doesn't support requested feature: CPUID.01H:ECX.vmx [bit 5] diff --git a/threads/build/tests/threads/alarm-zero.o b/threads/build/tests/threads/alarm-zero.o new file mode 100644 index 0000000000000000000000000000000000000000..eaa2208137a16d0a7064cecbc2452745b3a2fb27 GIT binary patch literal 3848 zcmbW3&2Jl35WwGh)5gV($p?r=LC8p@(1Leu5t68o4-!g)D72!AKuE}4+b_1sez?2q zG(;3iB`QS-se%I_p&oibh*LR%gb)Y5#EBk|IB?;@AHbPInRz?2S-&`!J|+8Res5;p zypNsryQj`PpEC@>%@7M>S7Rzf{+?ZVNr_A1J~1KIR(JmS0rk~y6@|y0+gbVg8$bRD za7c~jRp`TP$^B6lpwH!pQOgY_UH*X5jDxDnDa{-@(D7riq_KQ5Mh;15rd>Bk)v*4d-B3mJNTgjN-_S+o5!tkw{p_ zZ@9gtw3~9X(~vr4Tj97)=#{r+7+4LwG;zn1q1DFxR8$a=s?Z>tn9`vnd63M4@nU}B zyPOF*xq;s*sRtfx&yPASUp7mqV5FLwsfIHN+w)_)VXs9pjBL;I?B`^(5eHrS{Ht&F z{FW>2OHyuB=4$7_`|NqU3tf;d(60A7ZZpZW7P(S(Mc0WUq2}(J_w>tarIl*6G;2L& zRZ3+q3fANDx*Iq#D1J~5WwX2;_!6{+7c`|i54+Jq6$YaSg}CR-`Ihu$*lB?3gpKz6 z*4#{aX1Y{vmC9!!>^c|+UI!wFjwj3A0J4=~!n-a^g$7-8M6Mj} zrN`FlJwNUxJ6C?Pr?l!j)j6v&eLSH8YDdzH?N@}cHEK*99?oBf+wve_{Kuy5^s~j$ zYq^z?gSB74BH@Fc;0iV7-#dfG;D!yta3R%|+%slUwbBR7q-V}Q(qZ%~@)RF7 zTxszHva5hXsT%U^D!2sW4zY}eyferT!T-kyp^YV-+EL`Qbkz52{BhEu@~VbrX(@}-oIL3dE^jVGb+7>hprChaB8vmO38I6BW{B@0!DjbamWZ%~K4dQ{uUn9P$ z@lT0g*7#-OS2g|t@eegVMLM4knq~L-D;j6c=k$%nA13{0>iOKer2n=Lzpe4NN&jOX z&UXystKSA>$L|E^NmzVDg3e3Cajn_)3M+cci=8_3ahUXNmO|+|RxGz-VKtrD5mp_( zM3$mWS?{%K9e+K5F(o_odMG#hhMmyyTljg-xVRl(vJ1>3tVZB@5^A&M!&k$CuUhgI zAt%|csV@&@fA?JpTyal$KRMD830!ZOqiwd~y%~c4r7Q&b0tMvv5Z`z7<#+T5*&idW zSM(;0>zzJ7{;tB9ck4d`zIsfYljr{nl}yuZt1vcb{nu&zUAk1be!Qpp`j>&}F#(B1 zf)`QAG~IR$#&m|}w+Qn7a|qq`91IM~UlnT@V}HyabJz3l0Mlav5`Po?0+meDZE>Fm z&0oQy4UO*!&X4c9K7S7w#^gLfRP7q=`>)!Bta5(^tOxnOgh@d=k#y;k{kY$O5tdUU z5H68_mZ7ZM-XKQlrsiAZKbMk3;Po^941_`Zw>n_|@O#bvyswy#J~zg`Me|>wgvWv5 kuM^!Lr_tX%K%zqT-$o_V^!4Mp4)VW1`G1-5MN#+vA7PtrNdN!< literal 0 HcmV?d00001 diff --git a/threads/build/tests/threads/alarm-zero.output b/threads/build/tests/threads/alarm-zero.output new file mode 100644 index 0000000..36ba6dd --- /dev/null +++ b/threads/build/tests/threads/alarm-zero.output @@ -0,0 +1,18 @@ +Kernel command line: -q run alarm-zero +0 ~ 9fc00 1 +100000 ~ 13e0000 1 +Pintos booting with: + base_mem: 0x0 ~ 0x9fc00 (Usable: 639 kB) + ext_mem: 0x100000 ~ 0x13e0000 (Usable: 19,328 kB) +Calibrating timer... 209,510,400 loops/s. +Boot complete. +Executing 'alarm-zero': +(alarm-zero) begin +(alarm-zero) PASS +(alarm-zero) end +Execution of 'alarm-zero' complete. +Timer: 24 ticks +Thread: 0 idle ticks, 24 kernel ticks, 0 user ticks +Console: 425 characters output +Keyboard: 0 keys pressed +Powering off... diff --git a/threads/build/tests/threads/alarm-zero.result b/threads/build/tests/threads/alarm-zero.result new file mode 100644 index 0000000..7ef22e9 --- /dev/null +++ b/threads/build/tests/threads/alarm-zero.result @@ -0,0 +1 @@ +PASS diff --git a/threads/build/tests/threads/mlfqs/mlfqs-block.d b/threads/build/tests/threads/mlfqs/mlfqs-block.d new file mode 100644 index 0000000..50951f4 --- /dev/null +++ b/threads/build/tests/threads/mlfqs/mlfqs-block.d @@ -0,0 +1,10 @@ +tests/threads/mlfqs/mlfqs-block.o: \ + ../../tests/threads/mlfqs/mlfqs-block.c ../../include/lib/stdio.h \ + ../../include/lib/debug.h ../../include/lib/stdarg.h \ + ../../include/lib/stdbool.h ../../include/lib/stddef.h \ + ../../include/lib/stdint.h ../../include/lib/kernel/stdio.h \ + ../../tests/threads/tests.h ../../include/threads/init.h \ + ../../include/threads/malloc.h ../../include/threads/synch.h \ + ../../include/lib/kernel/list.h ../../include/threads/thread.h \ + ../../include/threads/interrupt.h ../../include/devices/timer.h \ + ../../include/lib/round.h diff --git a/threads/build/tests/threads/mlfqs/mlfqs-block.errors b/threads/build/tests/threads/mlfqs/mlfqs-block.errors new file mode 100644 index 0000000..a2f7a82 --- /dev/null +++ b/threads/build/tests/threads/mlfqs/mlfqs-block.errors @@ -0,0 +1 @@ +qemu-system-x86_64: warning: TCG doesn't support requested feature: CPUID.01H:ECX.vmx [bit 5] diff --git a/threads/build/tests/threads/mlfqs/mlfqs-block.o b/threads/build/tests/threads/mlfqs/mlfqs-block.o new file mode 100644 index 0000000000000000000000000000000000000000..2bb6252b4de705c75c712c942a37c3febf7c8cb7 GIT binary patch literal 10368 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 literal 0 HcmV?d00001 diff --git a/threads/build/tests/threads/mlfqs/mlfqs-load-1.output b/threads/build/tests/threads/mlfqs/mlfqs-load-1.output new file mode 100644 index 0000000..73b1742 --- /dev/null +++ b/threads/build/tests/threads/mlfqs/mlfqs-load-1.output @@ -0,0 +1,20 @@ +Kernel command line: -q -mlfqs run mlfqs-load-1 +0 ~ 9fc00 1 +100000 ~ 13e0000 1 +Pintos booting with: + base_mem: 0x0 ~ 0x9fc00 (Usable: 639 kB) + ext_mem: 0x100000 ~ 0x13e0000 (Usable: 19,328 kB) +Calibrating timer... 215,859,200 loops/s. +Boot complete. +Executing 'mlfqs-load-1': +(mlfqs-load-1) begin +(mlfqs-load-1) spinning for up to 45 seconds, please wait... +(mlfqs-load-1) FAIL: load average stayed below 0.5 for more than 45 seconds +Kernel PANIC at ../../tests/threads/tests.c:93 in fail(): test failed +Call stack: 0x800421344e 0x8004216a50 0x8004219a8c 0x800421688a 0x8004206636 0x8004206783 0x8004206120. +The `backtrace' program can make call stacks useful. +Read "Backtraces" in the "Debugging Tools" chapter +of the Pintos documentation for more information. +Timer: 4631 ticks +Thread: 0 idle ticks, 4631 kernel ticks, 0 user ticks +Console: \ No newline at end of file diff --git a/threads/build/tests/threads/mlfqs/mlfqs-load-1.result b/threads/build/tests/threads/mlfqs/mlfqs-load-1.result new file mode 100644 index 0000000..72b2fcd --- /dev/null +++ b/threads/build/tests/threads/mlfqs/mlfqs-load-1.result @@ -0,0 +1,11 @@ +FAIL +Kernel panic in run: PANIC at ../../tests/threads/tests.c:93 in fail(): test failed +Call stack: 0x800421344e 0x8004216a50 0x8004219a8c 0x800421688a 0x8004206636 0x8004206783 0x8004206120 +Translation of call stack: +0x000000800421344e: debug_panic (lib/kernel/debug.c:32) +0x0000008004216a50: pass (tests/threads/tests.c:99) +0x0000008004219a8c: test_mlfqs_load_1 (tests/threads/mlfqs/mlfqs-load-1.c:31) +0x000000800421688a: run_test (tests/threads/tests.c:57) +0x0000008004206636: run_task (threads/init.c:251) +0x0000008004206783: run_actions (threads/init.c:296) +0x0000008004206120: main (threads/init.c:125) diff --git a/threads/build/tests/threads/mlfqs/mlfqs-load-60.d b/threads/build/tests/threads/mlfqs/mlfqs-load-60.d new file mode 100644 index 0000000..9fe145d --- /dev/null +++ b/threads/build/tests/threads/mlfqs/mlfqs-load-60.d @@ -0,0 +1,10 @@ +tests/threads/mlfqs/mlfqs-load-60.o: \ + ../../tests/threads/mlfqs/mlfqs-load-60.c ../../include/lib/stdio.h \ + ../../include/lib/debug.h ../../include/lib/stdarg.h \ + ../../include/lib/stdbool.h ../../include/lib/stddef.h \ + ../../include/lib/stdint.h ../../include/lib/kernel/stdio.h \ + ../../tests/threads/tests.h ../../include/threads/init.h \ + ../../include/threads/malloc.h ../../include/threads/synch.h \ + ../../include/lib/kernel/list.h ../../include/threads/thread.h \ + ../../include/threads/interrupt.h ../../include/devices/timer.h \ + ../../include/lib/round.h diff --git a/threads/build/tests/threads/mlfqs/mlfqs-load-60.errors b/threads/build/tests/threads/mlfqs/mlfqs-load-60.errors new file mode 100644 index 0000000..a2f7a82 --- /dev/null +++ b/threads/build/tests/threads/mlfqs/mlfqs-load-60.errors @@ -0,0 +1 @@ +qemu-system-x86_64: warning: TCG doesn't support requested feature: CPUID.01H:ECX.vmx [bit 5] diff --git a/threads/build/tests/threads/mlfqs/mlfqs-load-60.o b/threads/build/tests/threads/mlfqs/mlfqs-load-60.o new file mode 100644 index 0000000000000000000000000000000000000000..f83f7ba9647d4b875543b5916228ecc3f5d05225 GIT binary patch literal 8576 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 dXJ_mT$}v&-zxwzwW;Oof87rx0}i{{bdz0RI30 literal 0 HcmV?d00001 diff --git a/threads/build/tests/threads/mlfqs/mlfqs-load-60.output b/threads/build/tests/threads/mlfqs/mlfqs-load-60.output new file mode 100644 index 0000000..a2163ed --- /dev/null +++ b/threads/build/tests/threads/mlfqs/mlfqs-load-60.output @@ -0,0 +1,499 @@ +Kernel command line: -q -mlfqs run mlfqs-load-60 +0 ~ 9fc00 1 +100000 ~ 13e0000 1 +Pintos booting with: + base_mem: 0x0 ~ 0x9fc00 (Usable: 639 kB) + ext_mem: 0x100000 ~ 0x13e0000 (Usable: 19,328 kB) +Calibrating timer... 222,412,800 loops/s. +Boot complete. +Executing 'mlfqs-load-60': +(mlfqs-load-60) begin +(mlfqs-load-60) Starting 60 niced load threads... +(mlfqs-load-60) Starting threads took 0 seconds. +1번째 쓰레드가 일어날 시간은 1028입니다 +3번째 쓰레드가 일어날 시간은 1028입니다 +4번째 쓰레드가 일어날 시간은 1028입니다 +5번째 쓰레드가 일어날 시간은 1028입니다 +6번째 쓰레드가 일어날 시간은 1028입니다 +7번째 쓰레드가 일어날 시간은 1028입니다 +8번째 쓰레드가 일어날 시간은 1028입니다 +9번째 쓰레드가 일어날 시간은 1028입니다 +10번째 쓰레드가 일어날 시간은 1028입니다 +11번째 쓰레드가 일어날 시간은 1028입니다 +12번째 쓰레드가 일어날 시간은 1028입니다 +13번째 쓰레드가 일어날 시간은 1028입니다 +14번째 쓰레드가 일어날 시간은 1028입니다 +15번째 쓰레드가 일어날 시간은 1028입니다 +16번째 쓰레드가 일어날 시간은 1028입니다 +17번째 쓰레드가 일어날 시간은 1028입니다 +18번째 쓰레드가 일어날 시간은 1028입니다 +19번째 쓰레드가 일어날 시간은 1028입니다 +20번째 쓰레드가 일어날 시간은 1028입니다 +21번째 쓰레드가 일어날 시간은 1028입니다 +22번째 쓰레드가 일어날 시간은 1028입니다 +23번째 쓰레드가 일어날 시간은 1028입니다 +24번째 쓰레드가 일어날 시간은 1028입니다 +25번째 쓰레드가 일어날 시간은 1028입니다 +26번째 쓰레드가 일어날 시간은 1028입니다 +27번째 쓰레드가 일어날 시간은 1028입니다 +28번째 쓰레드가 일어날 시간은 1028입니다 +29번째 쓰레드가 일어날 시간은 1028입니다 +30번째 쓰레드가 일어날 시간은 1028입니다 +31번째 쓰레드가 일어날 시간은 1028입니다 +32번째 쓰레드가 일어날 시간은 1028입니다 +33번째 쓰레드가 일어날 시간은 1028입니다 +34번째 쓰레드가 일어날 시간은 1028입니다 +35번째 쓰레드가 일어날 시간은 1028입니다 +36번째 쓰레드가 일어날 시간은 1028입니다 +37번째 쓰레드가 일어날 시간은 1028입니다 +38번째 쓰레드가 일어날 시간은 1028입니다 +39번째 쓰레드가 일어날 시간은 1028입니다 +40번째 쓰레드가 일어날 시간은 1028입니다 +41번째 쓰레드가 일어날 시간은 1028입니다 +42번째 쓰레드가 일어날 시간은 1028입니다 +43번째 쓰레드가 일어날 시간은 1028입니다 +44번째 쓰레드가 일어날 시간은 1028입니다 +45번째 쓰레드가 일어날 시간은 1028입니다 +46번째 쓰레드가 일어날 시간은 1028입니다 +47번째 쓰레드가 일어날 시간은 1028입니다 +48번째 쓰레드가 일어날 시간은 1028입니다 +49번째 쓰레드가 일어날 시간은 1028입니다 +50번째 쓰레드가 일어날 시간은 1028입니다 +51번째 쓰레드가 일어날 시간은 1028입니다 +52번째 쓰레드가 일어날 시간은 1028입니다 +53번째 쓰레드가 일어날 시간은 1028입니다 +54번째 쓰레드가 일어날 시간은 1028입니다 +55번째 쓰레드가 일어날 시간은 1028입니다 +56번째 쓰레드가 일어날 시간은 1028입니다 +57번째 쓰레드가 일어날 시간은 1028입니다 +58번째 쓰레드가 일어날 시간은 1028입니다 +59번째 쓰레드가 일어날 시간은 1028입니다 +60번째 쓰레드가 일어날 시간은 1028입니다 +61번째 쓰레드가 일어날 시간은 1028입니다 +62번째 쓰레드가 일어날 시간은 1028입니다 +1번째 쓰레드를 깨웠다! +3번째 쓰레드를 깨웠다! +4번째 쓰레드를 깨웠다! +5번째 쓰레드를 깨웠다! +6번째 쓰레드를 깨웠다! +7번째 쓰레드를 깨웠다! +8번째 쓰레드를 깨웠다! +9번째 쓰레드를 깨웠다! +10번째 쓰레드를 깨웠다! +11번째 쓰레드를 깨웠다! +12번째 쓰레드를 깨웠다! +13번째 쓰레드를 깨웠다! +14번째 쓰레드를 깨웠다! +15번째 쓰레드를 깨웠다! +16번째 쓰레드를 깨웠다! +17번째 쓰레드를 깨웠다! +18번째 쓰레드를 깨웠다! +19번째 쓰레드를 깨웠다! +20번째 쓰레드를 깨웠다! +21번째 쓰레드를 깨웠다! +22번째 쓰레드를 깨웠다! +23번째 쓰레드를 깨웠다! +24번째 쓰레드를 깨웠다! +25번째 쓰레드를 깨웠다! +26번째 쓰레드를 깨웠다! +27번째 쓰레드를 깨웠다! +28번째 쓰레드를 깨웠다! +29번째 쓰레드를 깨웠다! +30번째 쓰레드를 깨웠다! +31번째 쓰레드를 깨웠다! +32번째 쓰레드를 깨웠다! +33번째 쓰레드를 깨웠다! +34번째 쓰레드를 깨웠다! +35번째 쓰레드를 깨웠다! +36번째 쓰레드를 깨웠다! +37번째 쓰레드를 깨웠다! +38번째 쓰레드를 깨웠다! +39번째 쓰레드를 깨웠다! +40번째 쓰레드를 깨웠다! +41번째 쓰레드를 깨웠다! +42번째 쓰레드를 깨웠다! +43번째 쓰레드를 깨웠다! +44번째 쓰레드를 깨웠다! +45번째 쓰레드를 깨웠다! +46번째 쓰레드를 깨웠다! +47번째 쓰레드를 깨웠다! +48번째 쓰레드를 깨웠다! +49번째 쓰레드를 깨웠다! +50번째 쓰레드를 깨웠다! +51번째 쓰레드를 깨웠다! +52번째 쓰레드를 깨웠다! +53번째 쓰레드를 깨웠다! +54번째 쓰레드를 깨웠다! +55번째 쓰레드를 깨웠다! +56번째 쓰레드를 깨웠다! +57번째 쓰레드를 깨웠다! +58번째 쓰레드를 깨웠다! +59번째 쓰레드를 깨웠다! +60번째 쓰레드를 깨웠다! +61번째 쓰레드를 깨웠다! +62번째 쓰레드를 깨웠다! +(mlfqs-load-60) After 0 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 1228입니다 +1번째 쓰레드를 깨웠다! +(mlfqs-load-60) After 2 seconds, load average=0.00. +(mlfqs-load-60) After 4 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 1628입니다 +1번째 쓰레드를 깨웠다! +(mlfqs-load-60) After 6 seconds, load average=0.00. +(mlfqs-load-60) After 8 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 2028입니다 +1번째 쓰레드를 깨웠다! +(mlfqs-load-60) After 10 seconds, load average=0.00. +(mlfqs-load-60) After 12 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 2428입니다 +1번째 쓰레드를 깨웠다! +(mlfqs-load-60) After 14 seconds, load average=0.00. +(mlfqs-load-60) After 16 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 2828입니다 +1번째 쓰레드를 깨웠다! +(mlfqs-load-60) After 18 seconds, load average=0.00. +(mlfqs-load-60) After 20 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 3228입니다 +1번째 쓰레드를 깨웠다! +(mlfqs-load-60) After 22 seconds, load average=0.00. +(mlfqs-load-60) After 24 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 3628입니다 +1번째 쓰레드를 깨웠다! +(mlfqs-load-60) After 26 seconds, load average=0.00. +(mlfqs-load-60) After 28 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 4028입니다 +1번째 쓰레드를 깨웠다! +(mlfqs-load-60) After 30 seconds, load average=0.00. +(mlfqs-load-60) After 32 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 4428입니다 +1번째 쓰레드를 깨웠다! +(mlfqs-load-60) After 34 seconds, load average=0.00. +(mlfqs-load-60) After 36 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 4828입니다 +1번째 쓰레드를 깨웠다! +(mlfqs-load-60) After 38 seconds, load average=0.00. +(mlfqs-load-60) After 40 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 5228입니다 +1번째 쓰레드를 깨웠다! +(mlfqs-load-60) After 42 seconds, load average=0.00. +(mlfqs-load-60) After 44 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 5628입니다 +1번째 쓰레드를 깨웠다! +(mlfqs-load-60) After 46 seconds, load average=0.00. +(mlfqs-load-60) After 48 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 6028입니다 +1번째 쓰레드를 깨웠다! +(mlfqs-load-60) After 50 seconds, load average=0.00. +(mlfqs-load-60) After 52 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 6428입니다 +1번째 쓰레드를 깨웠다! +(mlfqs-load-60) After 54 seconds, load average=0.00. +(mlfqs-load-60) After 56 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 6828입니다 +1번째 쓰레드를 깨웠다! +56번째 쓰레드가 일어날 시간은 13028입니다 +57번째 쓰레드가 일어날 시간은 13028입니다 +58번째 쓰레드가 일어날 시간은 13028입니다 +59번째 쓰레드가 일어날 시간은 13028입니다 +60번째 쓰레드가 일어날 시간은 13028입니다 +61번째 쓰레드가 일어날 시간은 13028입니다 +62번째 쓰레드가 일어날 시간은 13028입니다 +3번째 쓰레드가 일어날 시간은 13028입니다 +4번째 쓰레드가 일어날 시간은 13028입니다 +5번째 쓰레드가 일어날 시간은 13028입니다 +(mlfqs-load-60) After 58 seconds, load average=0.00. +(mlfqs-load-60) After 60 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 7228입니다 +6번째 쓰레드가 일어날 시간은 13028입니다 +7번째 쓰레드가 일어날 시간은 13028입니다 +8번째 쓰레드가 일어날 시간은 13028입니다 +9번째 쓰레드가 일어날 시간은 13028입니다 +10번째 쓰레드가 일어날 시간은 13028입니다 +11번째 쓰레드가 일어날 시간은 13028입니다 +12번째 쓰레드가 일어날 시간은 13028입니다 +13번째 쓰레드가 일어날 시간은 13028입니다 +14번째 쓰레드가 일어날 시간은 13028입니다 +15번째 쓰레드가 일어날 시간은 13028입니다 +16번째 쓰레드가 일어날 시간은 13028입니다 +17번째 쓰레드가 일어날 시간은 13028입니다 +18번째 쓰레드가 일어날 시간은 13028입니다 +19번째 쓰레드가 일어날 시간은 13028입니다 +20번째 쓰레드가 일어날 시간은 13028입니다 +21번째 쓰레드가 일어날 시간은 13028입니다 +22번째 쓰레드가 일어날 시간은 13028입니다 +23번째 쓰레드가 일어날 시간은 13028입니다 +24번째 쓰레드가 일어날 시간은 13028입니다 +25번째 쓰레드가 일어날 시간은 13028입니다 +26번째 쓰레드가 일어날 시간은 13028입니다 +27번째 쓰레드가 일어날 시간은 13028입니다 +28번째 쓰레드가 일어날 시간은 13028입니다 +29번째 쓰레드가 일어날 시간은 13028입니다 +30번째 쓰레드가 일어날 시간은 13028입니다 +31번째 쓰레드가 일어날 시간은 13028입니다 +32번째 쓰레드가 일어날 시간은 13028입니다 +33번째 쓰레드가 일어날 시간은 13028입니다 +34번째 쓰레드가 일어날 시간은 13028입니다 +35번째 쓰레드가 일어날 시간은 13028입니다 +36번째 쓰레드가 일어날 시간은 13028입니다 +37번째 쓰레드가 일어날 시간은 13028입니다 +38번째 쓰레드가 일어날 시간은 13028입니다 +39번째 쓰레드가 일어날 시간은 13028입니다 +40번째 쓰레드가 일어날 시간은 13028입니다 +41번째 쓰레드가 일어날 시간은 13028입니다 +42번째 쓰레드가 일어날 시간은 13028입니다 +43번째 쓰레드가 일어날 시간은 13028입니다 +44번째 쓰레드가 일어날 시간은 13028입니다 +45번째 쓰레드가 일어날 시간은 13028입니다 +46번째 쓰레드가 일어날 시간은 13028입니다 +47번째 쓰레드가 일어날 시간은 13028입니다 +48번째 쓰레드가 일어날 시간은 13028입니다 +49번째 쓰레드가 일어날 시간은 13028입니다 +50번째 쓰레드가 일어날 시간은 13028입니다 +51번째 쓰레드가 일어날 시간은 13028입니다 +52번째 쓰레드가 일어날 시간은 13028입니다 +53번째 쓰레드가 일어날 시간은 13028입니다 +54번째 쓰레드가 일어날 시간은 13028입니다 +55번째 쓰레드가 일어날 시간은 13028입니다 +1번째 쓰레드를 깨웠다! +(mlfqs-load-60) After 62 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 7428입니다 +1번째 쓰레드를 깨웠다! +(mlfqs-load-60) After 64 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 7628입니다 +1번째 쓰레드를 깨웠다! +(mlfqs-load-60) After 66 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 7828입니다 +1번째 쓰레드를 깨웠다! +(mlfqs-load-60) After 68 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 8028입니다 +1번째 쓰레드를 깨웠다! +(mlfqs-load-60) After 70 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 8228입니다 +1번째 쓰레드를 깨웠다! +(mlfqs-load-60) After 72 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 8428입니다 +1번째 쓰레드를 깨웠다! +(mlfqs-load-60) After 74 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 8628입니다 +1번째 쓰레드를 깨웠다! +(mlfqs-load-60) After 76 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 8828입니다 +1번째 쓰레드를 깨웠다! +(mlfqs-load-60) After 78 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 9028입니다 +1번째 쓰레드를 깨웠다! +(mlfqs-load-60) After 80 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 9228입니다 +1번째 쓰레드를 깨웠다! +(mlfqs-load-60) After 82 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 9428입니다 +1번째 쓰레드를 깨웠다! +(mlfqs-load-60) After 84 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 9628입니다 +1번째 쓰레드를 깨웠다! +(mlfqs-load-60) After 86 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 9828입니다 +1번째 쓰레드를 깨웠다! +(mlfqs-load-60) After 88 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 10028입니다 +1번째 쓰레드를 깨웠다! +(mlfqs-load-60) After 90 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 10228입니다 +1번째 쓰레드를 깨웠다! +(mlfqs-load-60) After 92 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 10428입니다 +1번째 쓰레드를 깨웠다! +(mlfqs-load-60) After 94 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 10628입니다 +1번째 쓰레드를 깨웠다! +(mlfqs-load-60) After 96 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 10828입니다 +1번째 쓰레드를 깨웠다! +(mlfqs-load-60) After 98 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 11028입니다 +1번째 쓰레드를 깨웠다! +(mlfqs-load-60) After 100 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 11228입니다 +1번째 쓰레드를 깨웠다! +(mlfqs-load-60) After 102 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 11428입니다 +1번째 쓰레드를 깨웠다! +(mlfqs-load-60) After 104 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 11628입니다 +1번째 쓰레드를 깨웠다! +(mlfqs-load-60) After 106 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 11828입니다 +1번째 쓰레드를 깨웠다! +(mlfqs-load-60) After 108 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 12028입니다 +1번째 쓰레드를 깨웠다! +(mlfqs-load-60) After 110 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 12228입니다 +1번째 쓰레드를 깨웠다! +(mlfqs-load-60) After 112 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 12428입니다 +1번째 쓰레드를 깨웠다! +(mlfqs-load-60) After 114 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 12628입니다 +1번째 쓰레드를 깨웠다! +(mlfqs-load-60) After 116 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 12828입니다 +1번째 쓰레드를 깨웠다! +(mlfqs-load-60) After 118 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 13028입니다 +56번째 쓰레드를 깨웠다! +57번째 쓰레드를 깨웠다! +58번째 쓰레드를 깨웠다! +59번째 쓰레드를 깨웠다! +60번째 쓰레드를 깨웠다! +61번째 쓰레드를 깨웠다! +62번째 쓰레드를 깨웠다! +3번째 쓰레드를 깨웠다! +4번째 쓰레드를 깨웠다! +5번째 쓰레드를 깨웠다! +6번째 쓰레드를 깨웠다! +7번째 쓰레드를 깨웠다! +8번째 쓰레드를 깨웠다! +9번째 쓰레드를 깨웠다! +10번째 쓰레드를 깨웠다! +11번째 쓰레드를 깨웠다! +12번째 쓰레드를 깨웠다! +13번째 쓰레드를 깨웠다! +14번째 쓰레드를 깨웠다! +15번째 쓰레드를 깨웠다! +16번째 쓰레드를 깨웠다! +17번째 쓰레드를 깨웠다! +18번째 쓰레드를 깨웠다! +19번째 쓰레드를 깨웠다! +20번째 쓰레드를 깨웠다! +21번째 쓰레드를 깨웠다! +22번째 쓰레드를 깨웠다! +23번째 쓰레드를 깨웠다! +24번째 쓰레드를 깨웠다! +25번째 쓰레드를 깨웠다! +26번째 쓰레드를 깨웠다! +27번째 쓰레드를 깨웠다! +28번째 쓰레드를 깨웠다! +29번째 쓰레드를 깨웠다! +30번째 쓰레드를 깨웠다! +31번째 쓰레드를 깨웠다! +32번째 쓰레드를 깨웠다! +33번째 쓰레드를 깨웠다! +34번째 쓰레드를 깨웠다! +35번째 쓰레드를 깨웠다! +36번째 쓰레드를 깨웠다! +37번째 쓰레드를 깨웠다! +38번째 쓰레드를 깨웠다! +39번째 쓰레드를 깨웠다! +40번째 쓰레드를 깨웠다! +41번째 쓰레드를 깨웠다! +42번째 쓰레드를 깨웠다! +43번째 쓰레드를 깨웠다! +44번째 쓰레드를 깨웠다! +45번째 쓰레드를 깨웠다! +46번째 쓰레드를 깨웠다! +47번째 쓰레드를 깨웠다! +48번째 쓰레드를 깨웠다! +49번째 쓰레드를 깨웠다! +50번째 쓰레드를 깨웠다! +51번째 쓰레드를 깨웠다! +52번째 쓰레드를 깨웠다! +53번째 쓰레드를 깨웠다! +54번째 쓰레드를 깨웠다! +55번째 쓰레드를 깨웠다! +1번째 쓰레드를 깨웠다! +(mlfqs-load-60) After 120 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 13228입니다 +1번째 쓰레드를 깨웠다! +(mlfqs-load-60) After 122 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 13428입니다 +1번째 쓰레드를 깨웠다! +(mlfqs-load-60) After 124 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 13628입니다 +1번째 쓰레드를 깨웠다! +(mlfqs-load-60) After 126 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 13828입니다 +1번째 쓰레드를 깨웠다! +(mlfqs-load-60) After 128 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 14028입니다 +1번째 쓰레드를 깨웠다! +(mlfqs-load-60) After 130 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 14228입니다 +1번째 쓰레드를 깨웠다! +(mlfqs-load-60) After 132 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 14428입니다 +1번째 쓰레드를 깨웠다! +(mlfqs-load-60) After 134 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 14628입니다 +1번째 쓰레드를 깨웠다! +(mlfqs-load-60) After 136 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 14828입니다 +1번째 쓰레드를 깨웠다! +(mlfqs-load-60) After 138 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 15028입니다 +1번째 쓰레드를 깨웠다! +(mlfqs-load-60) After 140 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 15228입니다 +1번째 쓰레드를 깨웠다! +(mlfqs-load-60) After 142 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 15428입니다 +1번째 쓰레드를 깨웠다! +(mlfqs-load-60) After 144 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 15628입니다 +1번째 쓰레드를 깨웠다! +(mlfqs-load-60) After 146 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 15828입니다 +1번째 쓰레드를 깨웠다! +(mlfqs-load-60) After 148 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 16028입니다 +1번째 쓰레드를 깨웠다! +(mlfqs-load-60) After 150 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 16228입니다 +1번째 쓰레드를 깨웠다! +(mlfqs-load-60) After 152 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 16428입니다 +1번째 쓰레드를 깨웠다! +(mlfqs-load-60) After 154 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 16628입니다 +1번째 쓰레드를 깨웠다! +(mlfqs-load-60) After 156 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 16828입니다 +1번째 쓰레드를 깨웠다! +(mlfqs-load-60) After 158 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 17028입니다 +1번째 쓰레드를 깨웠다! +(mlfqs-load-60) After 160 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 17228입니다 +1번째 쓰레드를 깨웠다! +(mlfqs-load-60) After 162 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 17428입니다 +1번째 쓰레드를 깨웠다! +(mlfqs-load-60) After 164 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 17628입니다 +1번째 쓰레드를 깨웠다! +(mlfqs-load-60) After 166 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 17828입니다 +1번째 쓰레드를 깨웠다! +(mlfqs-load-60) After 168 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 18028입니다 +1번째 쓰레드를 깨웠다! +(mlfqs-load-60) After 170 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 18228입니다 +1번째 쓰레드를 깨웠다! +(mlfqs-load-60) After 172 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 18428입니다 +1번째 쓰레드를 깨웠다! +(mlfqs-load-60) After 174 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 18628입니다 +1번째 쓰레드를 깨웠다! +(mlfqs-load-60) After 176 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 18828입니다 +1번째 쓰레드를 깨웠다! +(mlfqs-load-60) After 178 seconds, load average=0.00. +(mlfqs-load-60) end +Execution of 'mlfqs-load-60' complete. +Timer: 18833 ticks +Thread: 12617 idle ticks, 6216 kernel ticks, 0 user ticks +Console: 22624 characters output +Keyboard: 0 keys pressed +Powering off... diff --git a/threads/build/tests/threads/mlfqs/mlfqs-load-60.result b/threads/build/tests/threads/mlfqs/mlfqs-load-60.result new file mode 100644 index 0000000..2a04b01 --- /dev/null +++ b/threads/build/tests/threads/mlfqs/mlfqs-load-60.result @@ -0,0 +1,93 @@ +FAIL +Some load average values were missing or differed from those expected by more than 3.5. + time actual <-> expected explanation +------ -------- --- -------- ---------------------------------------- + 2 0.00 = 2.95 + 4 0.00 <<< 4.84 Too small, by 1.34. + 6 0.00 <<< 6.66 Too small, by 3.16. + 8 0.00 <<< 8.42 Too small, by 4.92. + 10 0.00 <<< 10.13 Too small, by 6.63. + 12 0.00 <<< 11.78 Too small, by 8.28. + 14 0.00 <<< 13.37 Too small, by 9.87. + 16 0.00 <<< 14.91 Too small, by 11.41. + 18 0.00 <<< 16.40 Too small, by 12.90. + 20 0.00 <<< 17.84 Too small, by 14.34. + 22 0.00 <<< 19.24 Too small, by 15.74. + 24 0.00 <<< 20.58 Too small, by 17.08. + 26 0.00 <<< 21.89 Too small, by 18.39. + 28 0.00 <<< 23.15 Too small, by 19.65. + 30 0.00 <<< 24.37 Too small, by 20.87. + 32 0.00 <<< 25.54 Too small, by 22.04. + 34 0.00 <<< 26.68 Too small, by 23.18. + 36 0.00 <<< 27.78 Too small, by 24.28. + 38 0.00 <<< 28.85 Too small, by 25.35. + 40 0.00 <<< 29.88 Too small, by 26.38. + 42 0.00 <<< 30.87 Too small, by 27.37. + 44 0.00 <<< 31.84 Too small, by 28.34. + 46 0.00 <<< 32.77 Too small, by 29.27. + 48 0.00 <<< 33.67 Too small, by 30.17. + 50 0.00 <<< 34.54 Too small, by 31.04. + 52 0.00 <<< 35.38 Too small, by 31.88. + 54 0.00 <<< 36.19 Too small, by 32.69. + 56 0.00 <<< 36.98 Too small, by 33.48. + 58 0.00 <<< 37.74 Too small, by 34.24. + 60 0.00 <<< 37.48 Too small, by 33.98. + 62 0.00 <<< 36.24 Too small, by 32.74. + 64 0.00 <<< 35.04 Too small, by 31.54. + 66 0.00 <<< 33.88 Too small, by 30.38. + 68 0.00 <<< 32.76 Too small, by 29.26. + 70 0.00 <<< 31.68 Too small, by 28.18. + 72 0.00 <<< 30.63 Too small, by 27.13. + 74 0.00 <<< 29.62 Too small, by 26.12. + 76 0.00 <<< 28.64 Too small, by 25.14. + 78 0.00 <<< 27.69 Too small, by 24.19. + 80 0.00 <<< 26.78 Too small, by 23.28. + 82 0.00 <<< 25.89 Too small, by 22.39. + 84 0.00 <<< 25.04 Too small, by 21.54. + 86 0.00 <<< 24.21 Too small, by 20.71. + 88 0.00 <<< 23.41 Too small, by 19.91. + 90 0.00 <<< 22.64 Too small, by 19.14. + 92 0.00 <<< 21.89 Too small, by 18.39. + 94 0.00 <<< 21.16 Too small, by 17.66. + 96 0.00 <<< 20.46 Too small, by 16.96. + 98 0.00 <<< 19.79 Too small, by 16.29. + 100 0.00 <<< 19.13 Too small, by 15.63. + 102 0.00 <<< 18.50 Too small, by 15.00. + 104 0.00 <<< 17.89 Too small, by 14.39. + 106 0.00 <<< 17.30 Too small, by 13.80. + 108 0.00 <<< 16.73 Too small, by 13.23. + 110 0.00 <<< 16.17 Too small, by 12.67. + 112 0.00 <<< 15.64 Too small, by 12.14. + 114 0.00 <<< 15.12 Too small, by 11.62. + 116 0.00 <<< 14.62 Too small, by 11.12. + 118 0.00 <<< 14.14 Too small, by 10.64. + 120 0.00 <<< 13.67 Too small, by 10.17. + 122 0.00 <<< 13.22 Too small, by 9.72. + 124 0.00 <<< 12.78 Too small, by 9.28. + 126 0.00 <<< 12.36 Too small, by 8.86. + 128 0.00 <<< 11.95 Too small, by 8.45. + 130 0.00 <<< 11.56 Too small, by 8.06. + 132 0.00 <<< 11.17 Too small, by 7.67. + 134 0.00 <<< 10.80 Too small, by 7.30. + 136 0.00 <<< 10.45 Too small, by 6.95. + 138 0.00 <<< 10.10 Too small, by 6.60. + 140 0.00 <<< 9.77 Too small, by 6.27. + 142 0.00 <<< 9.45 Too small, by 5.95. + 144 0.00 <<< 9.13 Too small, by 5.63. + 146 0.00 <<< 8.83 Too small, by 5.33. + 148 0.00 <<< 8.54 Too small, by 5.04. + 150 0.00 <<< 8.26 Too small, by 4.76. + 152 0.00 <<< 7.98 Too small, by 4.48. + 154 0.00 <<< 7.72 Too small, by 4.22. + 156 0.00 <<< 7.47 Too small, by 3.97. + 158 0.00 <<< 7.22 Too small, by 3.72. + 160 0.00 <<< 6.98 Too small, by 3.48. + 162 0.00 <<< 6.75 Too small, by 3.25. + 164 0.00 <<< 6.53 Too small, by 3.03. + 166 0.00 <<< 6.31 Too small, by 2.81. + 168 0.00 <<< 6.10 Too small, by 2.60. + 170 0.00 <<< 5.90 Too small, by 2.40. + 172 0.00 <<< 5.70 Too small, by 2.20. + 174 0.00 <<< 5.52 Too small, by 2.02. + 176 0.00 <<< 5.33 Too small, by 1.83. + 178 0.00 <<< 5.16 Too small, by 1.66. diff --git a/threads/build/tests/threads/mlfqs/mlfqs-load-avg.d b/threads/build/tests/threads/mlfqs/mlfqs-load-avg.d new file mode 100644 index 0000000..37e6eba --- /dev/null +++ b/threads/build/tests/threads/mlfqs/mlfqs-load-avg.d @@ -0,0 +1,10 @@ +tests/threads/mlfqs/mlfqs-load-avg.o: \ + ../../tests/threads/mlfqs/mlfqs-load-avg.c ../../include/lib/stdio.h \ + ../../include/lib/debug.h ../../include/lib/stdarg.h \ + ../../include/lib/stdbool.h ../../include/lib/stddef.h \ + ../../include/lib/stdint.h ../../include/lib/kernel/stdio.h \ + ../../tests/threads/tests.h ../../include/threads/init.h \ + ../../include/threads/malloc.h ../../include/threads/synch.h \ + ../../include/lib/kernel/list.h ../../include/threads/thread.h \ + ../../include/threads/interrupt.h ../../include/devices/timer.h \ + ../../include/lib/round.h diff --git a/threads/build/tests/threads/mlfqs/mlfqs-load-avg.errors b/threads/build/tests/threads/mlfqs/mlfqs-load-avg.errors new file mode 100644 index 0000000..a2f7a82 --- /dev/null +++ b/threads/build/tests/threads/mlfqs/mlfqs-load-avg.errors @@ -0,0 +1 @@ +qemu-system-x86_64: warning: TCG doesn't support requested feature: CPUID.01H:ECX.vmx [bit 5] diff --git a/threads/build/tests/threads/mlfqs/mlfqs-load-avg.o b/threads/build/tests/threads/mlfqs/mlfqs-load-avg.o new file mode 100644 index 0000000000000000000000000000000000000000..12badca7ebe3f9b89f6429343990f73b230c3395 GIT binary patch literal 8688 zcmbW5e{5UD9l-BB$BC2BG)+=yU|l_}q0NTvgoR)InNkccgYlzul#Sv#_H*LJes=wy z+fZn!2t{~NM+;0aiLnA3ViIU~yUBTBRB*x4*LD zY~zaS*>?^_&!FQIcT8+J6WbI0Yx(Vp^p$qBEgupsdNHn?>Mu3=i?O`n?T2vItD%!JJ5RM>B7pEBTvW5Z^ll29NW{-5}P{Rhz$Xl zI=wp93nfr}LmQ4t%(L&jIx{;vt9qs`e)J-Q27!-H`ZJSnVwlP4iW&xFfamDR3KOF_ z0jL)w)zNyRF*{w3&PP+Qy))#<}aU|I=!g;cJI{aRI2xl@~5@Ly{|zm z#^hODsmui!XBxWO=6-K2bZYP6gE)oO!yH-~EAKcOn}{C8#-lUilP#l@sdDtgiRg#^ z!g-99qsI?Lj~xqRk3Wnhk5)QWW8`}e#>z*v4xTXf{$HCignu07z!k6E{oX|M*ym|t zZ*2VarQhCk5N?G??nu!}q~f`3dW*vnj$;+wOx_M|?s1j`(}_&hN`8@t`YxszF;0w7^d^pN#UUhiy^pa56tVzcI?mx` z<#HY<$YchZuxK{$%oi{NeynqQvn7NgqY;T|a)H0WpRrvb_qFFyAS_HHAk?@cZtq+8 zAeVE(oiwyu1w<6*JO{<5z02UWi$E*_ zeBgCJ=DzE^m}WubRoZZjJnNs4^={AlAsk3^-)7TA28ZJyE5)DDZExtO)Kt^&lEZ!Q$!i8+_~+LpC0 zZ(RqbeiB0njRPKE-Myk4rabDSQou0QbsA7;{t{c)837+H7eWDUWyQo?z}PuqLwH`& zjm-}(c=XC{G@Il1Jfm7$`Cfy~Gx|X?H*Bo#u4&T_t^*=Uw3&x3t?L}<#!5#kbhM)h zU3Z2V25YwoCyaGf0~`81pHM(Jgi*f;{%~6$iJ|93xTx!mWSEb^^Jub@P%?~vx6Oeo zKluPP>aM@EGH2{$wv@6W+02keXo1ye%G#PqT28HXoiVq!E6|1Xw_NmPUN(EUBDeHyH#Zuj z?`wWy@Nnrj&u=v^>x?Wid%GYv12EE#wIy!nSqVCJ=|J42-q6PAjO2@M5Z8Gpv)w`| z_AhQ_69vagi7v(q2|JTyP9bB*QOqGZR}u}znUl4wg0Q&e8ykXa`}>2J zg)a&B1w%O}pLRoO*vDL`*!fV=N`_HHP+CEHp#Y}r;Z zlZ0xbm>gL-cKM~DO9z6X;b7;Y$rTrP5z<&3)d zLS+4|-znL{Su3*5vPSzZkKYJpH>{7q0K56hDFo+KiVYCclKW%?i=V86xKO>QXv`J zZ)V0=yK%ueO@Y0z9N_B~{xR{rdQDsV{pQ*^jlNap8=$io_zEti1BaAH$9?AEgKJQS z#5FT$0v3-?XKM+4HQxYX<-k>_M)HZ%S(OAgeM8}DFg~#)Rp~F}`hGS|RF2D6p>BdF zd0vr+D^&A|lNni5GM}~`NQsX%%VJgT6K9z!h83SUyw%|RFja%&%jMb0S2=Zf!por4 zp^UTa-`9cH^0KiG#{*O?{X!k?*5Nzq@QFJ72X**Q>+oOJ;b-rK%F`;J?{NPW{TEj) z9<^RWXgL(GT6|ZeEkk`s@!aLDA7nv0hftGyj=s36iyFzQ)&%GurWTR$JL?^MfnA_* z{ystV9*y(Y1z-`4Pg9-m>`=z%7yT?Hem&*L;XLIfd16N{pD7e(NJFdxRDtX+g`@xV zRR6BR=TjN8XBCe6d8*4#JLvyhVwmBv8WVCnlE``g2|`H7;kfH19|B02!C}WsoeGDe zq?fK&IL0$ZlG_!o#-CF-oRz)wh{Dx&pH;Xzo>K}x-}A!Q9~3U<0E!pTc?`uE=YIHO zTB2|@&K(L@2pn8H>4lL}Y${j^13ztncIkC^cJkk1I# z<+lQ4IQQ>E2#LRiLN57I8b>)Ml5Zz2?;TbtG<3sy`BnIlZ6WGYIJSE~8R5E&N%|ik zKFDc>Z=rUh8ec;7n>9X<{M@E--1jh9BJC689QPaPL{Qp_e$7fvbQ|~JrRewm19_g zg7klw^c!g2NxnwfYh3Efc`EhgIi^$7m;8KCTR{zt2^AAIz80%2n}K(0 zl0$neoXqEP7QFL^ZTJ!rhA%bZ%Lo}+BXRyUg?jP%vmlt_n91>$o(8F)e>$YwCe`>k z9`_lkF9kQ!fn@>R-wqIItEI!Ff-96!8AGJZLJ*8@iY#%=GpVj^jVCYlE2}PbVxX?nH(I$p$U*->hPA&Tlc!-Ad6_I&Y zX(#i2AdzKH2@3a+y~?nx>pnwF3zO|4`^{*iBsu;PJqd+c<2PO7{^8u0_HtY?9=&b! veT>@QPeObL$0b3x$2p-rB0w11g^fWvEHdw^_aA-MvX>tVU+^qNLAU=OqFE$j literal 0 HcmV?d00001 diff --git a/threads/build/tests/threads/mlfqs/mlfqs-load-avg.output b/threads/build/tests/threads/mlfqs/mlfqs-load-avg.output new file mode 100644 index 0000000..afc6233 --- /dev/null +++ b/threads/build/tests/threads/mlfqs/mlfqs-load-avg.output @@ -0,0 +1,499 @@ +Kernel command line: -q -mlfqs run mlfqs-load-avg +0 ~ 9fc00 1 +100000 ~ 13e0000 1 +Pintos booting with: + base_mem: 0x0 ~ 0x9fc00 (Usable: 639 kB) + ext_mem: 0x100000 ~ 0x13e0000 (Usable: 19,328 kB) +Calibrating timer... 222,003,200 loops/s. +Boot complete. +Executing 'mlfqs-load-avg': +(mlfqs-load-avg) begin +(mlfqs-load-avg) Starting 60 load threads... +(mlfqs-load-avg) Starting threads took 0 seconds. +1번째 쓰레드가 일어날 시간은 1028입니다 +3번째 쓰레드가 일어날 시간은 1028입니다 +4번째 쓰레드가 일어날 시간은 1128입니다 +5번째 쓰레드가 일어날 시간은 1228입니다 +6번째 쓰레드가 일어날 시간은 1328입니다 +7번째 쓰레드가 일어날 시간은 1428입니다 +8번째 쓰레드가 일어날 시간은 1528입니다 +9번째 쓰레드가 일어날 시간은 1628입니다 +10번째 쓰레드가 일어날 시간은 1728입니다 +11번째 쓰레드가 일어날 시간은 1828입니다 +12번째 쓰레드가 일어날 시간은 1928입니다 +13번째 쓰레드가 일어날 시간은 2028입니다 +14번째 쓰레드가 일어날 시간은 2128입니다 +15번째 쓰레드가 일어날 시간은 2228입니다 +16번째 쓰레드가 일어날 시간은 2328입니다 +17번째 쓰레드가 일어날 시간은 2428입니다 +18번째 쓰레드가 일어날 시간은 2528입니다 +19번째 쓰레드가 일어날 시간은 2628입니다 +20번째 쓰레드가 일어날 시간은 2728입니다 +21번째 쓰레드가 일어날 시간은 2828입니다 +22번째 쓰레드가 일어날 시간은 2928입니다 +23번째 쓰레드가 일어날 시간은 3028입니다 +24번째 쓰레드가 일어날 시간은 3128입니다 +25번째 쓰레드가 일어날 시간은 3228입니다 +26번째 쓰레드가 일어날 시간은 3328입니다 +27번째 쓰레드가 일어날 시간은 3428입니다 +28번째 쓰레드가 일어날 시간은 3528입니다 +29번째 쓰레드가 일어날 시간은 3628입니다 +30번째 쓰레드가 일어날 시간은 3728입니다 +31번째 쓰레드가 일어날 시간은 3828입니다 +32번째 쓰레드가 일어날 시간은 3928입니다 +33번째 쓰레드가 일어날 시간은 4028입니다 +34번째 쓰레드가 일어날 시간은 4128입니다 +35번째 쓰레드가 일어날 시간은 4228입니다 +36번째 쓰레드가 일어날 시간은 4328입니다 +37번째 쓰레드가 일어날 시간은 4428입니다 +38번째 쓰레드가 일어날 시간은 4528입니다 +39번째 쓰레드가 일어날 시간은 4628입니다 +40번째 쓰레드가 일어날 시간은 4728입니다 +41번째 쓰레드가 일어날 시간은 4828입니다 +42번째 쓰레드가 일어날 시간은 4928입니다 +43번째 쓰레드가 일어날 시간은 5028입니다 +44번째 쓰레드가 일어날 시간은 5128입니다 +45번째 쓰레드가 일어날 시간은 5228입니다 +46번째 쓰레드가 일어날 시간은 5328입니다 +47번째 쓰레드가 일어날 시간은 5428입니다 +48번째 쓰레드가 일어날 시간은 5528입니다 +49번째 쓰레드가 일어날 시간은 5628입니다 +50번째 쓰레드가 일어날 시간은 5728입니다 +51번째 쓰레드가 일어날 시간은 5828입니다 +52번째 쓰레드가 일어날 시간은 5928입니다 +53번째 쓰레드가 일어날 시간은 6028입니다 +54번째 쓰레드가 일어날 시간은 6128입니다 +55번째 쓰레드가 일어날 시간은 6228입니다 +56번째 쓰레드가 일어날 시간은 6328입니다 +57번째 쓰레드가 일어날 시간은 6428입니다 +58번째 쓰레드가 일어날 시간은 6528입니다 +59번째 쓰레드가 일어날 시간은 6628입니다 +60번째 쓰레드가 일어날 시간은 6728입니다 +61번째 쓰레드가 일어날 시간은 6828입니다 +62번째 쓰레드가 일어날 시간은 6928입니다 +1번째 쓰레드를 깨웠다! +3번째 쓰레드를 깨웠다! +(mlfqs-load-avg) After 0 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 1228입니다 +4번째 쓰레드를 깨웠다! +5번째 쓰레드를 깨웠다! +1번째 쓰레드를 깨웠다! +(mlfqs-load-avg) After 2 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 1428입니다 +6번째 쓰레드를 깨웠다! +7번째 쓰레드를 깨웠다! +1번째 쓰레드를 깨웠다! +(mlfqs-load-avg) After 4 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 1628입니다 +8번째 쓰레드를 깨웠다! +9번째 쓰레드를 깨웠다! +1번째 쓰레드를 깨웠다! +(mlfqs-load-avg) After 6 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 1828입니다 +10번째 쓰레드를 깨웠다! +11번째 쓰레드를 깨웠다! +1번째 쓰레드를 깨웠다! +(mlfqs-load-avg) After 8 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 2028입니다 +12번째 쓰레드를 깨웠다! +13번째 쓰레드를 깨웠다! +1번째 쓰레드를 깨웠다! +(mlfqs-load-avg) After 10 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 2228입니다 +14번째 쓰레드를 깨웠다! +15번째 쓰레드를 깨웠다! +1번째 쓰레드를 깨웠다! +(mlfqs-load-avg) After 12 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 2428입니다 +16번째 쓰레드를 깨웠다! +17번째 쓰레드를 깨웠다! +1번째 쓰레드를 깨웠다! +(mlfqs-load-avg) After 14 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 2628입니다 +18번째 쓰레드를 깨웠다! +19번째 쓰레드를 깨웠다! +1번째 쓰레드를 깨웠다! +(mlfqs-load-avg) After 16 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 2828입니다 +20번째 쓰레드를 깨웠다! +21번째 쓰레드를 깨웠다! +1번째 쓰레드를 깨웠다! +(mlfqs-load-avg) After 18 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 3028입니다 +22번째 쓰레드를 깨웠다! +23번째 쓰레드를 깨웠다! +1번째 쓰레드를 깨웠다! +(mlfqs-load-avg) After 20 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 3228입니다 +24번째 쓰레드를 깨웠다! +25번째 쓰레드를 깨웠다! +1번째 쓰레드를 깨웠다! +(mlfqs-load-avg) After 22 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 3428입니다 +26번째 쓰레드를 깨웠다! +27번째 쓰레드를 깨웠다! +1번째 쓰레드를 깨웠다! +(mlfqs-load-avg) After 24 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 3628입니다 +28번째 쓰레드를 깨웠다! +29번째 쓰레드를 깨웠다! +1번째 쓰레드를 깨웠다! +30번째 쓰레드를 깨웠다! +(mlfqs-load-avg) After 26 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 3828입니다 +31번째 쓰레드를 깨웠다! +1번째 쓰레드를 깨웠다! +32번째 쓰레드를 깨웠다! +(mlfqs-load-avg) After 28 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 4028입니다 +33번째 쓰레드를 깨웠다! +1번째 쓰레드를 깨웠다! +34번째 쓰레드를 깨웠다! +(mlfqs-load-avg) After 30 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 4228입니다 +35번째 쓰레드를 깨웠다! +1번째 쓰레드를 깨웠다! +36번째 쓰레드를 깨웠다! +(mlfqs-load-avg) After 32 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 4428입니다 +37번째 쓰레드를 깨웠다! +1번째 쓰레드를 깨웠다! +38번째 쓰레드를 깨웠다! +(mlfqs-load-avg) After 34 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 4628입니다 +39번째 쓰레드를 깨웠다! +1번째 쓰레드를 깨웠다! +40번째 쓰레드를 깨웠다! +(mlfqs-load-avg) After 36 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 4828입니다 +41번째 쓰레드를 깨웠다! +1번째 쓰레드를 깨웠다! +42번째 쓰레드를 깨웠다! +(mlfqs-load-avg) After 38 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 5028입니다 +43번째 쓰레드를 깨웠다! +1번째 쓰레드를 깨웠다! +44번째 쓰레드를 깨웠다! +(mlfqs-load-avg) After 40 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 5228입니다 +45번째 쓰레드를 깨웠다! +1번째 쓰레드를 깨웠다! +46번째 쓰레드를 깨웠다! +(mlfqs-load-avg) After 42 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 5428입니다 +47번째 쓰레드를 깨웠다! +1번째 쓰레드를 깨웠다! +48번째 쓰레드를 깨웠다! +(mlfqs-load-avg) After 44 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 5628입니다 +49번째 쓰레드를 깨웠다! +1번째 쓰레드를 깨웠다! +50번째 쓰레드를 깨웠다! +(mlfqs-load-avg) After 46 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 5828입니다 +51번째 쓰레드를 깨웠다! +1번째 쓰레드를 깨웠다! +52번째 쓰레드를 깨웠다! +(mlfqs-load-avg) After 48 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 6028입니다 +53번째 쓰레드를 깨웠다! +1번째 쓰레드를 깨웠다! +54번째 쓰레드를 깨웠다! +55번째 쓰레드를 깨웠다! +(mlfqs-load-avg) After 50 seconds, load average=0.00. +(mlfqs-load-avg) After 52 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 6428입니다 +56번째 쓰레드를 깨웠다! +57번째 쓰레드를 깨웠다! +1번째 쓰레드를 깨웠다! +58번째 쓰레드를 깨웠다! +59번째 쓰레드를 깨웠다! +(mlfqs-load-avg) After 54 seconds, load average=0.00. +(mlfqs-load-avg) After 56 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 6828입니다 +60번째 쓰레드를 깨웠다! +61번째 쓰레드를 깨웠다! +1번째 쓰레드를 깨웠다! +62번째 쓰레드를 깨웠다! +(mlfqs-load-avg) After 58 seconds, load average=0.00. +(mlfqs-load-avg) After 60 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 7228입니다 +4번째 쓰레드가 일어날 시간은 12028입니다 +3번째 쓰레드가 일어날 시간은 12028입니다 +1번째 쓰레드를 깨웠다! +5번째 쓰레드가 일어날 시간은 12028입니다 +6번째 쓰레드가 일어날 시간은 12028입니다 +(mlfqs-load-avg) After 62 seconds, load average=0.00. +(mlfqs-load-avg) After 64 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 7628입니다 +8번째 쓰레드가 일어날 시간은 12028입니다 +7번째 쓰레드가 일어날 시간은 12028입니다 +1번째 쓰레드를 깨웠다! +9번째 쓰레드가 일어날 시간은 12028입니다 +(mlfqs-load-avg) After 66 seconds, load average=0.00. +(mlfqs-load-avg) After 68 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 8028입니다 +10번째 쓰레드가 일어날 시간은 12028입니다 +12번째 쓰레드가 일어날 시간은 12028입니다 +11번째 쓰레드가 일어날 시간은 12028입니다 +1번째 쓰레드를 깨웠다! +13번째 쓰레드가 일어날 시간은 12028입니다 +(mlfqs-load-avg) After 70 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 8228입니다 +1번째 쓰레드를 깨웠다! +14번째 쓰레드가 일어날 시간은 12028입니다 +15번째 쓰레드가 일어날 시간은 12028입니다 +(mlfqs-load-avg) After 72 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 8428입니다 +1번째 쓰레드를 깨웠다! +17번째 쓰레드가 일어날 시간은 12028입니다 +16번째 쓰레드가 일어날 시간은 12028입니다 +18번째 쓰레드가 일어날 시간은 12028입니다 +(mlfqs-load-avg) After 74 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 8628입니다 +1번째 쓰레드를 깨웠다! +19번째 쓰레드가 일어날 시간은 12028입니다 +20번째 쓰레드가 일어날 시간은 12028입니다 +(mlfqs-load-avg) After 76 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 8828입니다 +1번째 쓰레드를 깨웠다! +21번째 쓰레드가 일어날 시간은 12028입니다 +(mlfqs-load-avg) After 78 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 9028입니다 +1번째 쓰레드를 깨웠다! +22번째 쓰레드가 일어날 시간은 12028입니다 +23번째 쓰레드가 일어날 시간은 12028입니다 +(mlfqs-load-avg) After 80 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 9228입니다 +1번째 쓰레드를 깨웠다! +24번째 쓰레드가 일어날 시간은 12028입니다 +25번째 쓰레드가 일어날 시간은 12028입니다 +(mlfqs-load-avg) After 82 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 9428입니다 +1번째 쓰레드를 깨웠다! +26번째 쓰레드가 일어날 시간은 12028입니다 +27번째 쓰레드가 일어날 시간은 12028입니다 +(mlfqs-load-avg) After 84 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 9628입니다 +28번째 쓰레드가 일어날 시간은 12028입니다 +1번째 쓰레드를 깨웠다! +30번째 쓰레드가 일어날 시간은 12028입니다 +29번째 쓰레드가 일어날 시간은 12028입니다 +(mlfqs-load-avg) After 86 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 9828입니다 +1번째 쓰레드를 깨웠다! +31번째 쓰레드가 일어날 시간은 12028입니다 +32번째 쓰레드가 일어날 시간은 12028입니다 +(mlfqs-load-avg) After 88 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 10028입니다 +1번째 쓰레드를 깨웠다! +33번째 쓰레드가 일어날 시간은 12028입니다 +(mlfqs-load-avg) After 90 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 10228입니다 +34번째 쓰레드가 일어날 시간은 12028입니다 +1번째 쓰레드를 깨웠다! +35번째 쓰레드가 일어날 시간은 12028입니다 +(mlfqs-load-avg) After 92 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 10428입니다 +36번째 쓰레드가 일어날 시간은 12028입니다 +1번째 쓰레드를 깨웠다! +37번째 쓰레드가 일어날 시간은 12028입니다 +(mlfqs-load-avg) After 94 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 10628입니다 +38번째 쓰레드가 일어날 시간은 12028입니다 +1번째 쓰레드를 깨웠다! +39번째 쓰레드가 일어날 시간은 12028입니다 +(mlfqs-load-avg) After 96 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 10828입니다 +40번째 쓰레드가 일어날 시간은 12028입니다 +1번째 쓰레드를 깨웠다! +41번째 쓰레드가 일어날 시간은 12028입니다 +(mlfqs-load-avg) After 98 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 11028입니다 +42번째 쓰레드가 일어날 시간은 12028입니다 +1번째 쓰레드를 깨웠다! +43번째 쓰레드가 일어날 시간은 12028입니다 +(mlfqs-load-avg) After 100 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 11228입니다 +44번째 쓰레드가 일어날 시간은 12028입니다 +1번째 쓰레드를 깨웠다! +45번째 쓰레드가 일어날 시간은 12028입니다 +(mlfqs-load-avg) After 102 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 11428입니다 +46번째 쓰레드가 일어날 시간은 12028입니다 +1번째 쓰레드를 깨웠다! +47번째 쓰레드가 일어날 시간은 12028입니다 +(mlfqs-load-avg) After 104 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 11628입니다 +48번째 쓰레드가 일어날 시간은 12028입니다 +1번째 쓰레드를 깨웠다! +49번째 쓰레드가 일어날 시간은 12028입니다 +(mlfqs-load-avg) After 106 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 11828입니다 +50번째 쓰레드가 일어날 시간은 12028입니다 +1번째 쓰레드를 깨웠다! +51번째 쓰레드가 일어날 시간은 12028입니다 +(mlfqs-load-avg) After 108 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 12028입니다 +52번째 쓰레드가 일어날 시간은 12028입니다 +4번째 쓰레드를 깨웠다! +3번째 쓰레드를 깨웠다! +5번째 쓰레드를 깨웠다! +6번째 쓰레드를 깨웠다! +8번째 쓰레드를 깨웠다! +7번째 쓰레드를 깨웠다! +9번째 쓰레드를 깨웠다! +10번째 쓰레드를 깨웠다! +12번째 쓰레드를 깨웠다! +11번째 쓰레드를 깨웠다! +13번째 쓰레드를 깨웠다! +14번째 쓰레드를 깨웠다! +15번째 쓰레드를 깨웠다! +17번째 쓰레드를 깨웠다! +16번째 쓰레드를 깨웠다! +18번째 쓰레드를 깨웠다! +19번째 쓰레드를 깨웠다! +20번째 쓰레드를 깨웠다! +21번째 쓰레드를 깨웠다! +22번째 쓰레드를 깨웠다! +23번째 쓰레드를 깨웠다! +24번째 쓰레드를 깨웠다! +25번째 쓰레드를 깨웠다! +26번째 쓰레드를 깨웠다! +27번째 쓰레드를 깨웠다! +28번째 쓰레드를 깨웠다! +30번째 쓰레드를 깨웠다! +29번째 쓰레드를 깨웠다! +31번째 쓰레드를 깨웠다! +32번째 쓰레드를 깨웠다! +33번째 쓰레드를 깨웠다! +34번째 쓰레드를 깨웠다! +35번째 쓰레드를 깨웠다! +36번째 쓰레드를 깨웠다! +37번째 쓰레드를 깨웠다! +38번째 쓰레드를 깨웠다! +39번째 쓰레드를 깨웠다! +40번째 쓰레드를 깨웠다! +41번째 쓰레드를 깨웠다! +42번째 쓰레드를 깨웠다! +43번째 쓰레드를 깨웠다! +44번째 쓰레드를 깨웠다! +45번째 쓰레드를 깨웠다! +46번째 쓰레드를 깨웠다! +47번째 쓰레드를 깨웠다! +48번째 쓰레드를 깨웠다! +49번째 쓰레드를 깨웠다! +50번째 쓰레드를 깨웠다! +51번째 쓰레드를 깨웠다! +1번째 쓰레드를 깨웠다! +52번째 쓰레드를 깨웠다! +(mlfqs-load-avg) After 110 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 12228입니다 +1번째 쓰레드를 깨웠다! +(mlfqs-load-avg) After 112 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 12428입니다 +1번째 쓰레드를 깨웠다! +(mlfqs-load-avg) After 114 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 12628입니다 +1번째 쓰레드를 깨웠다! +(mlfqs-load-avg) After 116 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 12828입니다 +1번째 쓰레드를 깨웠다! +(mlfqs-load-avg) After 118 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 13028입니다 +1번째 쓰레드를 깨웠다! +(mlfqs-load-avg) After 120 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 13228입니다 +1번째 쓰레드를 깨웠다! +(mlfqs-load-avg) After 122 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 13428입니다 +1번째 쓰레드를 깨웠다! +(mlfqs-load-avg) After 124 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 13628입니다 +1번째 쓰레드를 깨웠다! +(mlfqs-load-avg) After 126 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 13828입니다 +1번째 쓰레드를 깨웠다! +(mlfqs-load-avg) After 128 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 14028입니다 +1번째 쓰레드를 깨웠다! +(mlfqs-load-avg) After 130 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 14228입니다 +1번째 쓰레드를 깨웠다! +(mlfqs-load-avg) After 132 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 14428입니다 +1번째 쓰레드를 깨웠다! +(mlfqs-load-avg) After 134 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 14628입니다 +1번째 쓰레드를 깨웠다! +(mlfqs-load-avg) After 136 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 14828입니다 +1번째 쓰레드를 깨웠다! +(mlfqs-load-avg) After 138 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 15028입니다 +1번째 쓰레드를 깨웠다! +(mlfqs-load-avg) After 140 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 15228입니다 +1번째 쓰레드를 깨웠다! +(mlfqs-load-avg) After 142 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 15428입니다 +1번째 쓰레드를 깨웠다! +(mlfqs-load-avg) After 144 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 15628입니다 +1번째 쓰레드를 깨웠다! +(mlfqs-load-avg) After 146 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 15828입니다 +1번째 쓰레드를 깨웠다! +(mlfqs-load-avg) After 148 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 16028입니다 +1번째 쓰레드를 깨웠다! +(mlfqs-load-avg) After 150 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 16228입니다 +1번째 쓰레드를 깨웠다! +(mlfqs-load-avg) After 152 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 16428입니다 +1번째 쓰레드를 깨웠다! +(mlfqs-load-avg) After 154 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 16628입니다 +1번째 쓰레드를 깨웠다! +(mlfqs-load-avg) After 156 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 16828입니다 +1번째 쓰레드를 깨웠다! +(mlfqs-load-avg) After 158 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 17028입니다 +1번째 쓰레드를 깨웠다! +(mlfqs-load-avg) After 160 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 17228입니다 +1번째 쓰레드를 깨웠다! +(mlfqs-load-avg) After 162 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 17428입니다 +1번째 쓰레드를 깨웠다! +(mlfqs-load-avg) After 164 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 17628입니다 +1번째 쓰레드를 깨웠다! +(mlfqs-load-avg) After 166 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 17828입니다 +1번째 쓰레드를 깨웠다! +(mlfqs-load-avg) After 168 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 18028입니다 +1번째 쓰레드를 깨웠다! +(mlfqs-load-avg) After 170 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 18228입니다 +1번째 쓰레드를 깨웠다! +(mlfqs-load-avg) After 172 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 18428입니다 +1번째 쓰레드를 깨웠다! +(mlfqs-load-avg) After 174 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 18628입니다 +1번째 쓰레드를 깨웠다! +(mlfqs-load-avg) After 176 seconds, load average=0.00. +1번째 쓰레드가 일어날 시간은 18828입니다 +1번째 쓰레드를 깨웠다! +(mlfqs-load-avg) After 178 seconds, load average=0.00. +(mlfqs-load-avg) end +Execution of 'mlfqs-load-avg' complete. +Timer: 18831 ticks +Thread: 6814 idle ticks, 12017 kernel ticks, 0 user ticks +Console: 22685 characters output +Keyboard: 0 keys pressed +Powering off... diff --git a/threads/build/tests/threads/mlfqs/mlfqs-load-avg.result b/threads/build/tests/threads/mlfqs/mlfqs-load-avg.result new file mode 100644 index 0000000..74730bc --- /dev/null +++ b/threads/build/tests/threads/mlfqs/mlfqs-load-avg.result @@ -0,0 +1,93 @@ +FAIL +Some load average values were missing or differed from those expected by more than 2.5. + time actual <-> expected explanation +------ -------- --- -------- ---------------------------------------- + 2 0.00 = 0.05 + 4 0.00 = 0.16 + 6 0.00 = 0.34 + 8 0.00 = 0.58 + 10 0.00 = 0.87 + 12 0.00 = 1.22 + 14 0.00 = 1.63 + 16 0.00 = 2.09 + 18 0.00 <<< 2.60 Too small, by 0.10. + 20 0.00 <<< 3.16 Too small, by 0.66. + 22 0.00 <<< 3.76 Too small, by 1.26. + 24 0.00 <<< 4.42 Too small, by 1.92. + 26 0.00 <<< 5.11 Too small, by 2.61. + 28 0.00 <<< 5.85 Too small, by 3.35. + 30 0.00 <<< 6.63 Too small, by 4.13. + 32 0.00 <<< 7.46 Too small, by 4.96. + 34 0.00 <<< 8.32 Too small, by 5.82. + 36 0.00 <<< 9.22 Too small, by 6.72. + 38 0.00 <<< 10.15 Too small, by 7.65. + 40 0.00 <<< 11.12 Too small, by 8.62. + 42 0.00 <<< 12.13 Too small, by 9.63. + 44 0.00 <<< 13.16 Too small, by 10.66. + 46 0.00 <<< 14.23 Too small, by 11.73. + 48 0.00 <<< 15.33 Too small, by 12.83. + 50 0.00 <<< 16.46 Too small, by 13.96. + 52 0.00 <<< 17.62 Too small, by 15.12. + 54 0.00 <<< 18.81 Too small, by 16.31. + 56 0.00 <<< 20.02 Too small, by 17.52. + 58 0.00 <<< 21.26 Too small, by 18.76. + 60 0.00 <<< 22.52 Too small, by 20.02. + 62 0.00 <<< 23.71 Too small, by 21.21. + 64 0.00 <<< 24.80 Too small, by 22.30. + 66 0.00 <<< 25.78 Too small, by 23.28. + 68 0.00 <<< 26.66 Too small, by 24.16. + 70 0.00 <<< 27.45 Too small, by 24.95. + 72 0.00 <<< 28.14 Too small, by 25.64. + 74 0.00 <<< 28.75 Too small, by 26.25. + 76 0.00 <<< 29.27 Too small, by 26.77. + 78 0.00 <<< 29.71 Too small, by 27.21. + 80 0.00 <<< 30.06 Too small, by 27.56. + 82 0.00 <<< 30.34 Too small, by 27.84. + 84 0.00 <<< 30.55 Too small, by 28.05. + 86 0.00 <<< 30.68 Too small, by 28.18. + 88 0.00 <<< 30.74 Too small, by 28.24. + 90 0.00 <<< 30.73 Too small, by 28.23. + 92 0.00 <<< 30.66 Too small, by 28.16. + 94 0.00 <<< 30.52 Too small, by 28.02. + 96 0.00 <<< 30.32 Too small, by 27.82. + 98 0.00 <<< 30.06 Too small, by 27.56. + 100 0.00 <<< 29.74 Too small, by 27.24. + 102 0.00 <<< 29.37 Too small, by 26.87. + 104 0.00 <<< 28.95 Too small, by 26.45. + 106 0.00 <<< 28.47 Too small, by 25.97. + 108 0.00 <<< 27.94 Too small, by 25.44. + 110 0.00 <<< 27.36 Too small, by 24.86. + 112 0.00 <<< 26.74 Too small, by 24.24. + 114 0.00 <<< 26.07 Too small, by 23.57. + 116 0.00 <<< 25.36 Too small, by 22.86. + 118 0.00 <<< 24.60 Too small, by 22.10. + 120 0.00 <<< 23.81 Too small, by 21.31. + 122 0.00 <<< 23.02 Too small, by 20.52. + 124 0.00 <<< 22.26 Too small, by 19.76. + 126 0.00 <<< 21.52 Too small, by 19.02. + 128 0.00 <<< 20.81 Too small, by 18.31. + 130 0.00 <<< 20.12 Too small, by 17.62. + 132 0.00 <<< 19.46 Too small, by 16.96. + 134 0.00 <<< 18.81 Too small, by 16.31. + 136 0.00 <<< 18.19 Too small, by 15.69. + 138 0.00 <<< 17.59 Too small, by 15.09. + 140 0.00 <<< 17.01 Too small, by 14.51. + 142 0.00 <<< 16.45 Too small, by 13.95. + 144 0.00 <<< 15.90 Too small, by 13.40. + 146 0.00 <<< 15.38 Too small, by 12.88. + 148 0.00 <<< 14.87 Too small, by 12.37. + 150 0.00 <<< 14.38 Too small, by 11.88. + 152 0.00 <<< 13.90 Too small, by 11.40. + 154 0.00 <<< 13.44 Too small, by 10.94. + 156 0.00 <<< 13.00 Too small, by 10.50. + 158 0.00 <<< 12.57 Too small, by 10.07. + 160 0.00 <<< 12.15 Too small, by 9.65. + 162 0.00 <<< 11.75 Too small, by 9.25. + 164 0.00 <<< 11.36 Too small, by 8.86. + 166 0.00 <<< 10.99 Too small, by 8.49. + 168 0.00 <<< 10.62 Too small, by 8.12. + 170 0.00 <<< 10.27 Too small, by 7.77. + 172 0.00 <<< 9.93 Too small, by 7.43. + 174 0.00 <<< 9.61 Too small, by 7.11. + 176 0.00 <<< 9.29 Too small, by 6.79. + 178 0.00 <<< 8.98 Too small, by 6.48. diff --git a/threads/build/tests/threads/mlfqs/mlfqs-nice-10.errors b/threads/build/tests/threads/mlfqs/mlfqs-nice-10.errors new file mode 100644 index 0000000..a2f7a82 --- /dev/null +++ b/threads/build/tests/threads/mlfqs/mlfqs-nice-10.errors @@ -0,0 +1 @@ +qemu-system-x86_64: warning: TCG doesn't support requested feature: CPUID.01H:ECX.vmx [bit 5] diff --git a/threads/build/tests/threads/mlfqs/mlfqs-nice-10.output b/threads/build/tests/threads/mlfqs/mlfqs-nice-10.output new file mode 100644 index 0000000..b7255f4 --- /dev/null +++ b/threads/build/tests/threads/mlfqs/mlfqs-nice-10.output @@ -0,0 +1,52 @@ +Kernel command line: -q -mlfqs run mlfqs-nice-10 +0 ~ 9fc00 1 +100000 ~ 13e0000 1 +Pintos booting with: + base_mem: 0x0 ~ 0x9fc00 (Usable: 639 kB) + ext_mem: 0x100000 ~ 0x13e0000 (Usable: 19,328 kB) +Calibrating timer... 215,859,200 loops/s. +Boot complete. +Executing 'mlfqs-nice-10': +(mlfqs-nice-10) begin +(mlfqs-nice-10) Starting 10 threads... +(mlfqs-nice-10) Starting threads took 1 ticks. +(mlfqs-nice-10) Sleeping 40 seconds to let threads run, please wait... +1번째 쓰레드가 일어날 시간은 4032입니다 +3번째 쓰레드가 일어날 시간은 529입니다 +4번째 쓰레드가 일어날 시간은 529입니다 +5번째 쓰레드가 일어날 시간은 529입니다 +6번째 쓰레드가 일어날 시간은 529입니다 +7번째 쓰레드가 일어날 시간은 529입니다 +8번째 쓰레드가 일어날 시간은 529입니다 +9번째 쓰레드가 일어날 시간은 529입니다 +10번째 쓰레드가 일어날 시간은 529입니다 +11번째 쓰레드가 일어날 시간은 529입니다 +12번째 쓰레드가 일어날 시간은 529입니다 +3번째 쓰레드를 깨웠다! +4번째 쓰레드를 깨웠다! +5번째 쓰레드를 깨웠다! +6번째 쓰레드를 깨웠다! +7번째 쓰레드를 깨웠다! +8번째 쓰레드를 깨웠다! +9번째 쓰레드를 깨웠다! +10번째 쓰레드를 깨웠다! +11번째 쓰레드를 깨웠다! +12번째 쓰레드를 깨웠다! +1번째 쓰레드를 깨웠다! +(mlfqs-nice-10) Thread 0 received 300 ticks. +(mlfqs-nice-10) Thread 1 received 301 ticks. +(mlfqs-nice-10) Thread 2 received 300 ticks. +(mlfqs-nice-10) Thread 3 received 301 ticks. +(mlfqs-nice-10) Thread 4 received 301 ticks. +(mlfqs-nice-10) Thread 5 received 301 ticks. +(mlfqs-nice-10) Thread 6 received 300 ticks. +(mlfqs-nice-10) Thread 7 received 300 ticks. +(mlfqs-nice-10) Thread 8 received 301 ticks. +(mlfqs-nice-10) Thread 9 received 298 ticks. +(mlfqs-nice-10) end +Execution of 'mlfqs-nice-10' complete. +Timer: 4041 ticks +Thread: 1002 idle ticks, 3039 kernel ticks, 0 user ticks +Console: 1996 characters output +Keyboard: 0 keys pressed +Powering off... diff --git a/threads/build/tests/threads/mlfqs/mlfqs-nice-10.result b/threads/build/tests/threads/mlfqs/mlfqs-nice-10.result new file mode 100644 index 0000000..84e3de5 --- /dev/null +++ b/threads/build/tests/threads/mlfqs/mlfqs-nice-10.result @@ -0,0 +1,14 @@ +FAIL +Some tick counts were missing or differed from those expected by more than 25. +thread actual <-> expected explanation +------ -------- --- -------- ---------------------------------------- + 0 300 <<< 672 Too small, by 347. + 1 301 <<< 588 Too small, by 262. + 2 300 <<< 492 Too small, by 167. + 3 301 <<< 408 Too small, by 82. + 4 301 = 316 + 5 301 >>> 232 Too big, by 44. + 6 300 >>> 152 Too big, by 123. + 7 300 >>> 92 Too big, by 183. + 8 301 >>> 40 Too big, by 236. + 9 298 >>> 8 Too big, by 265. diff --git a/threads/build/tests/threads/mlfqs/mlfqs-nice-2.errors b/threads/build/tests/threads/mlfqs/mlfqs-nice-2.errors new file mode 100644 index 0000000..a2f7a82 --- /dev/null +++ b/threads/build/tests/threads/mlfqs/mlfqs-nice-2.errors @@ -0,0 +1 @@ +qemu-system-x86_64: warning: TCG doesn't support requested feature: CPUID.01H:ECX.vmx [bit 5] diff --git a/threads/build/tests/threads/mlfqs/mlfqs-nice-2.output b/threads/build/tests/threads/mlfqs/mlfqs-nice-2.output new file mode 100644 index 0000000..717289a --- /dev/null +++ b/threads/build/tests/threads/mlfqs/mlfqs-nice-2.output @@ -0,0 +1,28 @@ +Kernel command line: -q -mlfqs run mlfqs-nice-2 +0 ~ 9fc00 1 +100000 ~ 13e0000 1 +Pintos booting with: + base_mem: 0x0 ~ 0x9fc00 (Usable: 639 kB) + ext_mem: 0x100000 ~ 0x13e0000 (Usable: 19,328 kB) +Calibrating timer... 215,449,600 loops/s. +Boot complete. +Executing 'mlfqs-nice-2': +(mlfqs-nice-2) begin +(mlfqs-nice-2) Starting 2 threads... +(mlfqs-nice-2) Starting threads took 1 ticks. +(mlfqs-nice-2) Sleeping 40 seconds to let threads run, please wait... +1번째 쓰레드가 일어날 시간은 4032입니다 +3번째 쓰레드가 일어날 시간은 529입니다 +4번째 쓰레드가 일어날 시간은 529입니다 +3번째 쓰레드를 깨웠다! +4번째 쓰레드를 깨웠다! +1번째 쓰레드를 깨웠다! +(mlfqs-nice-2) Thread 0 received 1501 ticks. +(mlfqs-nice-2) Thread 1 received 1499 ticks. +(mlfqs-nice-2) end +Execution of 'mlfqs-nice-2' complete. +Timer: 4035 ticks +Thread: 1001 idle ticks, 3035 kernel ticks, 0 user ticks +Console: 933 characters output +Keyboard: 0 keys pressed +Powering off... diff --git a/threads/build/tests/threads/mlfqs/mlfqs-nice-2.result b/threads/build/tests/threads/mlfqs/mlfqs-nice-2.result new file mode 100644 index 0000000..ae33f9b --- /dev/null +++ b/threads/build/tests/threads/mlfqs/mlfqs-nice-2.result @@ -0,0 +1,6 @@ +FAIL +Some tick counts were missing or differed from those expected by more than 50. +thread actual <-> expected explanation +------ -------- --- -------- ---------------------------------------- + 0 1501 <<< 1904 Too small, by 353. + 1 1499 >>> 1096 Too big, by 353. diff --git a/threads/build/tests/threads/mlfqs/mlfqs-recent-1.d b/threads/build/tests/threads/mlfqs/mlfqs-recent-1.d new file mode 100644 index 0000000..2905d5d --- /dev/null +++ b/threads/build/tests/threads/mlfqs/mlfqs-recent-1.d @@ -0,0 +1,10 @@ +tests/threads/mlfqs/mlfqs-recent-1.o: \ + ../../tests/threads/mlfqs/mlfqs-recent-1.c ../../include/lib/stdio.h \ + ../../include/lib/debug.h ../../include/lib/stdarg.h \ + ../../include/lib/stdbool.h ../../include/lib/stddef.h \ + ../../include/lib/stdint.h ../../include/lib/kernel/stdio.h \ + ../../tests/threads/tests.h ../../include/threads/init.h \ + ../../include/threads/malloc.h ../../include/threads/synch.h \ + ../../include/lib/kernel/list.h ../../include/threads/thread.h \ + ../../include/threads/interrupt.h ../../include/devices/timer.h \ + ../../include/lib/round.h diff --git a/threads/build/tests/threads/mlfqs/mlfqs-recent-1.errors b/threads/build/tests/threads/mlfqs/mlfqs-recent-1.errors new file mode 100644 index 0000000..a2f7a82 --- /dev/null +++ b/threads/build/tests/threads/mlfqs/mlfqs-recent-1.errors @@ -0,0 +1 @@ +qemu-system-x86_64: warning: TCG doesn't support requested feature: CPUID.01H:ECX.vmx [bit 5] diff --git a/threads/build/tests/threads/mlfqs/mlfqs-recent-1.o b/threads/build/tests/threads/mlfqs/mlfqs-recent-1.o new file mode 100644 index 0000000000000000000000000000000000000000..655b4a28c5bc1c2bb524fc2359768ba998fd4404 GIT binary patch literal 7200 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 C*N(mb literal 0 HcmV?d00001 diff --git a/threads/build/tests/threads/mlfqs/mlfqs-recent-1.output b/threads/build/tests/threads/mlfqs/mlfqs-recent-1.output new file mode 100644 index 0000000..e0b91e7 --- /dev/null +++ b/threads/build/tests/threads/mlfqs/mlfqs-recent-1.output @@ -0,0 +1,110 @@ +Kernel command line: -q -mlfqs run mlfqs-recent-1 +0 ~ 9fc00 1 +100000 ~ 13e0000 1 +Pintos booting with: + base_mem: 0x0 ~ 0x9fc00 (Usable: 639 kB) + ext_mem: 0x100000 ~ 0x13e0000 (Usable: 19,328 kB) +Calibrating timer... 209,510,400 loops/s. +Boot complete. +Executing 'mlfqs-recent-1': +(mlfqs-recent-1) begin +(mlfqs-recent-1) Sleeping 10 seconds to allow recent_cpu to decay, please wait... +1번째 쓰레드가 일어날 시간은 1001입니다 +1번째 쓰레드를 깨웠다! +(mlfqs-recent-1) After 2 seconds, recent_cpu is 0.00, load_avg is 0.00. +(mlfqs-recent-1) After 4 seconds, recent_cpu is 0.00, load_avg is 0.00. +(mlfqs-recent-1) After 6 seconds, recent_cpu is 0.00, load_avg is 0.00. +(mlfqs-recent-1) After 8 seconds, recent_cpu is 0.00, load_avg is 0.00. +(mlfqs-recent-1) After 10 seconds, recent_cpu is 0.00, load_avg is 0.00. +(mlfqs-recent-1) After 12 seconds, recent_cpu is 0.00, load_avg is 0.00. +(mlfqs-recent-1) After 14 seconds, recent_cpu is 0.00, load_avg is 0.00. +(mlfqs-recent-1) After 16 seconds, recent_cpu is 0.00, load_avg is 0.00. +(mlfqs-recent-1) After 18 seconds, recent_cpu is 0.00, load_avg is 0.00. +(mlfqs-recent-1) After 20 seconds, recent_cpu is 0.00, load_avg is 0.00. +(mlfqs-recent-1) After 22 seconds, recent_cpu is 0.00, load_avg is 0.00. +(mlfqs-recent-1) After 24 seconds, recent_cpu is 0.00, load_avg is 0.00. +(mlfqs-recent-1) After 26 seconds, recent_cpu is 0.00, load_avg is 0.00. +(mlfqs-recent-1) After 28 seconds, recent_cpu is 0.00, load_avg is 0.00. +(mlfqs-recent-1) After 30 seconds, recent_cpu is 0.00, load_avg is 0.00. +(mlfqs-recent-1) After 32 seconds, recent_cpu is 0.00, load_avg is 0.00. +(mlfqs-recent-1) After 34 seconds, recent_cpu is 0.00, load_avg is 0.00. +(mlfqs-recent-1) After 36 seconds, recent_cpu is 0.00, load_avg is 0.00. +(mlfqs-recent-1) After 38 seconds, recent_cpu is 0.00, load_avg is 0.00. +(mlfqs-recent-1) After 40 seconds, recent_cpu is 0.00, load_avg is 0.00. +(mlfqs-recent-1) After 42 seconds, recent_cpu is 0.00, load_avg is 0.00. +(mlfqs-recent-1) After 44 seconds, recent_cpu is 0.00, load_avg is 0.00. +(mlfqs-recent-1) After 46 seconds, recent_cpu is 0.00, load_avg is 0.00. +(mlfqs-recent-1) After 48 seconds, recent_cpu is 0.00, load_avg is 0.00. +(mlfqs-recent-1) After 50 seconds, recent_cpu is 0.00, load_avg is 0.00. +(mlfqs-recent-1) After 52 seconds, recent_cpu is 0.00, load_avg is 0.00. +(mlfqs-recent-1) After 54 seconds, recent_cpu is 0.00, load_avg is 0.00. +(mlfqs-recent-1) After 56 seconds, recent_cpu is 0.00, load_avg is 0.00. +(mlfqs-recent-1) After 58 seconds, recent_cpu is 0.00, load_avg is 0.00. +(mlfqs-recent-1) After 60 seconds, recent_cpu is 0.00, load_avg is 0.00. +(mlfqs-recent-1) After 62 seconds, recent_cpu is 0.00, load_avg is 0.00. +(mlfqs-recent-1) After 64 seconds, recent_cpu is 0.00, load_avg is 0.00. +(mlfqs-recent-1) After 66 seconds, recent_cpu is 0.00, load_avg is 0.00. +(mlfqs-recent-1) After 68 seconds, recent_cpu is 0.00, load_avg is 0.00. +(mlfqs-recent-1) After 70 seconds, recent_cpu is 0.00, load_avg is 0.00. +(mlfqs-recent-1) After 72 seconds, recent_cpu is 0.00, load_avg is 0.00. +(mlfqs-recent-1) After 74 seconds, recent_cpu is 0.00, load_avg is 0.00. +(mlfqs-recent-1) After 76 seconds, recent_cpu is 0.00, load_avg is 0.00. +(mlfqs-recent-1) After 78 seconds, recent_cpu is 0.00, load_avg is 0.00. +(mlfqs-recent-1) After 80 seconds, recent_cpu is 0.00, load_avg is 0.00. +(mlfqs-recent-1) After 82 seconds, recent_cpu is 0.00, load_avg is 0.00. +(mlfqs-recent-1) After 84 seconds, recent_cpu is 0.00, load_avg is 0.00. +(mlfqs-recent-1) After 86 seconds, recent_cpu is 0.00, load_avg is 0.00. +(mlfqs-recent-1) After 88 seconds, recent_cpu is 0.00, load_avg is 0.00. +(mlfqs-recent-1) After 90 seconds, recent_cpu is 0.00, load_avg is 0.00. +(mlfqs-recent-1) After 92 seconds, recent_cpu is 0.00, load_avg is 0.00. +(mlfqs-recent-1) After 94 seconds, recent_cpu is 0.00, load_avg is 0.00. +(mlfqs-recent-1) After 96 seconds, recent_cpu is 0.00, load_avg is 0.00. +(mlfqs-recent-1) After 98 seconds, recent_cpu is 0.00, load_avg is 0.00. +(mlfqs-recent-1) After 100 seconds, recent_cpu is 0.00, load_avg is 0.00. +(mlfqs-recent-1) After 102 seconds, recent_cpu is 0.00, load_avg is 0.00. +(mlfqs-recent-1) After 104 seconds, recent_cpu is 0.00, load_avg is 0.00. +(mlfqs-recent-1) After 106 seconds, recent_cpu is 0.00, load_avg is 0.00. +(mlfqs-recent-1) After 108 seconds, recent_cpu is 0.00, load_avg is 0.00. +(mlfqs-recent-1) After 110 seconds, recent_cpu is 0.00, load_avg is 0.00. +(mlfqs-recent-1) After 112 seconds, recent_cpu is 0.00, load_avg is 0.00. +(mlfqs-recent-1) After 114 seconds, recent_cpu is 0.00, load_avg is 0.00. +(mlfqs-recent-1) After 116 seconds, recent_cpu is 0.00, load_avg is 0.00. +(mlfqs-recent-1) After 118 seconds, recent_cpu is 0.00, load_avg is 0.00. +(mlfqs-recent-1) After 120 seconds, recent_cpu is 0.00, load_avg is 0.00. +(mlfqs-recent-1) After 122 seconds, recent_cpu is 0.00, load_avg is 0.00. +(mlfqs-recent-1) After 124 seconds, recent_cpu is 0.00, load_avg is 0.00. +(mlfqs-recent-1) After 126 seconds, recent_cpu is 0.00, load_avg is 0.00. +(mlfqs-recent-1) After 128 seconds, recent_cpu is 0.00, load_avg is 0.00. +(mlfqs-recent-1) After 130 seconds, recent_cpu is 0.00, load_avg is 0.00. +(mlfqs-recent-1) After 132 seconds, recent_cpu is 0.00, load_avg is 0.00. +(mlfqs-recent-1) After 134 seconds, recent_cpu is 0.00, load_avg is 0.00. +(mlfqs-recent-1) After 136 seconds, recent_cpu is 0.00, load_avg is 0.00. +(mlfqs-recent-1) After 138 seconds, recent_cpu is 0.00, load_avg is 0.00. +(mlfqs-recent-1) After 140 seconds, recent_cpu is 0.00, load_avg is 0.00. +(mlfqs-recent-1) After 142 seconds, recent_cpu is 0.00, load_avg is 0.00. +(mlfqs-recent-1) After 144 seconds, recent_cpu is 0.00, load_avg is 0.00. +(mlfqs-recent-1) After 146 seconds, recent_cpu is 0.00, load_avg is 0.00. +(mlfqs-recent-1) After 148 seconds, recent_cpu is 0.00, load_avg is 0.00. +(mlfqs-recent-1) After 150 seconds, recent_cpu is 0.00, load_avg is 0.00. +(mlfqs-recent-1) After 152 seconds, recent_cpu is 0.00, load_avg is 0.00. +(mlfqs-recent-1) After 154 seconds, recent_cpu is 0.00, load_avg is 0.00. +(mlfqs-recent-1) After 156 seconds, recent_cpu is 0.00, load_avg is 0.00. +(mlfqs-recent-1) After 158 seconds, recent_cpu is 0.00, load_avg is 0.00. +(mlfqs-recent-1) After 160 seconds, recent_cpu is 0.00, load_avg is 0.00. +(mlfqs-recent-1) After 162 seconds, recent_cpu is 0.00, load_avg is 0.00. +(mlfqs-recent-1) After 164 seconds, recent_cpu is 0.00, load_avg is 0.00. +(mlfqs-recent-1) After 166 seconds, recent_cpu is 0.00, load_avg is 0.00. +(mlfqs-recent-1) After 168 seconds, recent_cpu is 0.00, load_avg is 0.00. +(mlfqs-recent-1) After 170 seconds, recent_cpu is 0.00, load_avg is 0.00. +(mlfqs-recent-1) After 172 seconds, recent_cpu is 0.00, load_avg is 0.00. +(mlfqs-recent-1) After 174 seconds, recent_cpu is 0.00, load_avg is 0.00. +(mlfqs-recent-1) After 176 seconds, recent_cpu is 0.00, load_avg is 0.00. +(mlfqs-recent-1) After 178 seconds, recent_cpu is 0.00, load_avg is 0.00. +(mlfqs-recent-1) After 180 seconds, recent_cpu is 0.00, load_avg is 0.00. +(mlfqs-recent-1) end +Execution of 'mlfqs-recent-1' complete. +Timer: 19004 ticks +Thread: 977 idle ticks, 18027 kernel ticks, 0 user ticks +Console: 7218 characters output +Keyboard: 0 keys pressed +Powering off... diff --git a/threads/build/tests/threads/mlfqs/mlfqs-recent-1.result b/threads/build/tests/threads/mlfqs/mlfqs-recent-1.result new file mode 100644 index 0000000..ba8374e --- /dev/null +++ b/threads/build/tests/threads/mlfqs/mlfqs-recent-1.result @@ -0,0 +1,93 @@ +FAIL +Some recent_cpu values were missing or differed from those expected by more than 2.5. + time actual <-> expected explanation +------ -------- --- -------- ---------------------------------------- + 2 0.00 <<< 6.40 Too small, by 3.90. + 4 0.00 <<< 12.60 Too small, by 10.10. + 6 0.00 <<< 18.61 Too small, by 16.11. + 8 0.00 <<< 24.44 Too small, by 21.94. + 10 0.00 <<< 30.08 Too small, by 27.58. + 12 0.00 <<< 35.54 Too small, by 33.04. + 14 0.00 <<< 40.83 Too small, by 38.33. + 16 0.00 <<< 45.96 Too small, by 43.46. + 18 0.00 <<< 50.92 Too small, by 48.42. + 20 0.00 <<< 55.73 Too small, by 53.23. + 22 0.00 <<< 60.39 Too small, by 57.89. + 24 0.00 <<< 64.90 Too small, by 62.40. + 26 0.00 <<< 69.27 Too small, by 66.77. + 28 0.00 <<< 73.50 Too small, by 71.00. + 30 0.00 <<< 77.60 Too small, by 75.10. + 32 0.00 <<< 81.56 Too small, by 79.06. + 34 0.00 <<< 85.40 Too small, by 82.90. + 36 0.00 <<< 89.12 Too small, by 86.62. + 38 0.00 <<< 92.72 Too small, by 90.22. + 40 0.00 <<< 96.20 Too small, by 93.70. + 42 0.00 <<< 99.57 Too small, by 97.07. + 44 0.00 <<< 102.84 Too small, by 100.34. + 46 0.00 <<< 106.00 Too small, by 103.50. + 48 0.00 <<< 109.06 Too small, by 106.56. + 50 0.00 <<< 112.02 Too small, by 109.52. + 52 0.00 <<< 114.89 Too small, by 112.39. + 54 0.00 <<< 117.66 Too small, by 115.16. + 56 0.00 <<< 120.34 Too small, by 117.84. + 58 0.00 <<< 122.94 Too small, by 120.44. + 60 0.00 <<< 125.46 Too small, by 122.96. + 62 0.00 <<< 127.89 Too small, by 125.39. + 64 0.00 <<< 130.25 Too small, by 127.75. + 66 0.00 <<< 132.53 Too small, by 130.03. + 68 0.00 <<< 134.73 Too small, by 132.23. + 70 0.00 <<< 136.86 Too small, by 134.36. + 72 0.00 <<< 138.93 Too small, by 136.43. + 74 0.00 <<< 140.93 Too small, by 138.43. + 76 0.00 <<< 142.86 Too small, by 140.36. + 78 0.00 <<< 144.73 Too small, by 142.23. + 80 0.00 <<< 146.54 Too small, by 144.04. + 82 0.00 <<< 148.29 Too small, by 145.79. + 84 0.00 <<< 149.99 Too small, by 147.49. + 86 0.00 <<< 151.63 Too small, by 149.13. + 88 0.00 <<< 153.21 Too small, by 150.71. + 90 0.00 <<< 154.75 Too small, by 152.25. + 92 0.00 <<< 156.23 Too small, by 153.73. + 94 0.00 <<< 157.67 Too small, by 155.17. + 96 0.00 <<< 159.06 Too small, by 156.56. + 98 0.00 <<< 160.40 Too small, by 157.90. + 100 0.00 <<< 161.70 Too small, by 159.20. + 102 0.00 <<< 162.96 Too small, by 160.46. + 104 0.00 <<< 164.18 Too small, by 161.68. + 106 0.00 <<< 165.35 Too small, by 162.85. + 108 0.00 <<< 166.49 Too small, by 163.99. + 110 0.00 <<< 167.59 Too small, by 165.09. + 112 0.00 <<< 168.66 Too small, by 166.16. + 114 0.00 <<< 169.69 Too small, by 167.19. + 116 0.00 <<< 170.69 Too small, by 168.19. + 118 0.00 <<< 171.65 Too small, by 169.15. + 120 0.00 <<< 172.58 Too small, by 170.08. + 122 0.00 <<< 173.49 Too small, by 170.99. + 124 0.00 <<< 174.36 Too small, by 171.86. + 126 0.00 <<< 175.20 Too small, by 172.70. + 128 0.00 <<< 176.02 Too small, by 173.52. + 130 0.00 <<< 176.81 Too small, by 174.31. + 132 0.00 <<< 177.57 Too small, by 175.07. + 134 0.00 <<< 178.31 Too small, by 175.81. + 136 0.00 <<< 179.02 Too small, by 176.52. + 138 0.00 <<< 179.72 Too small, by 177.22. + 140 0.00 <<< 180.38 Too small, by 177.88. + 142 0.00 <<< 181.03 Too small, by 178.53. + 144 0.00 <<< 181.65 Too small, by 179.15. + 146 0.00 <<< 182.26 Too small, by 179.76. + 148 0.00 <<< 182.84 Too small, by 180.34. + 150 0.00 <<< 183.41 Too small, by 180.91. + 152 0.00 <<< 183.96 Too small, by 181.46. + 154 0.00 <<< 184.49 Too small, by 181.99. + 156 0.00 <<< 185.00 Too small, by 182.50. + 158 0.00 <<< 185.49 Too small, by 182.99. + 160 0.00 <<< 185.97 Too small, by 183.47. + 162 0.00 <<< 186.43 Too small, by 183.93. + 164 0.00 <<< 186.88 Too small, by 184.38. + 166 0.00 <<< 187.31 Too small, by 184.81. + 168 0.00 <<< 187.73 Too small, by 185.23. + 170 0.00 <<< 188.14 Too small, by 185.64. + 172 0.00 <<< 188.53 Too small, by 186.03. + 174 0.00 <<< 188.91 Too small, by 186.41. + 176 0.00 <<< 189.27 Too small, by 186.77. + 178 0.00 <<< 189.63 Too small, by 187.13. diff --git a/threads/build/tests/threads/priority-change.d b/threads/build/tests/threads/priority-change.d new file mode 100644 index 0000000..92dcb40 --- /dev/null +++ b/threads/build/tests/threads/priority-change.d @@ -0,0 +1,7 @@ +tests/threads/priority-change.o: ../../tests/threads/priority-change.c \ + ../../include/lib/stdio.h ../../include/lib/debug.h \ + ../../include/lib/stdarg.h ../../include/lib/stdbool.h \ + ../../include/lib/stddef.h ../../include/lib/stdint.h \ + ../../include/lib/kernel/stdio.h ../../tests/threads/tests.h \ + ../../include/threads/init.h ../../include/threads/thread.h \ + ../../include/lib/kernel/list.h ../../include/threads/interrupt.h diff --git a/threads/build/tests/threads/priority-change.errors b/threads/build/tests/threads/priority-change.errors new file mode 100644 index 0000000..a2f7a82 --- /dev/null +++ b/threads/build/tests/threads/priority-change.errors @@ -0,0 +1 @@ +qemu-system-x86_64: warning: TCG doesn't support requested feature: CPUID.01H:ECX.vmx [bit 5] diff --git a/threads/build/tests/threads/priority-change.o b/threads/build/tests/threads/priority-change.o new file mode 100644 index 0000000000000000000000000000000000000000..4ba5bacd4e0458ddc62e9a389c72024d98058c10 GIT binary patch literal 6248 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 literal 0 HcmV?d00001 diff --git a/threads/build/tests/threads/priority-condvar.output b/threads/build/tests/threads/priority-condvar.output new file mode 100644 index 0000000..29c4e68 --- /dev/null +++ b/threads/build/tests/threads/priority-condvar.output @@ -0,0 +1,27 @@ +Kernel command line: -q run priority-condvar +0 ~ 9fc00 1 +100000 ~ 13e0000 1 +Pintos booting with: + base_mem: 0x0 ~ 0x9fc00 (Usable: 639 kB) + ext_mem: 0x100000 ~ 0x13e0000 (Usable: 19,328 kB) +Calibrating timer... 212,582,400 loops/s. +Boot complete. +Executing 'priority-condvar': +(priority-condvar) begin +(priority-condvar) Signaling... +(priority-condvar) Signaling... +(priority-condvar) Signaling... +(priority-condvar) Signaling... +(priority-condvar) Signaling... +(priority-condvar) Signaling... +(priority-condvar) Signaling... +(priority-condvar) Signaling... +(priority-condvar) Signaling... +(priority-condvar) Signaling... +(priority-condvar) end +Execution of 'priority-condvar' complete. +Timer: 38 ticks +Thread: 0 idle ticks, 38 kernel ticks, 0 user ticks +Console: 757 characters output +Keyboard: 0 keys pressed +Powering off... diff --git a/threads/build/tests/threads/priority-condvar.result b/threads/build/tests/threads/priority-condvar.result new file mode 100644 index 0000000..2fd2076 --- /dev/null +++ b/threads/build/tests/threads/priority-condvar.result @@ -0,0 +1,69 @@ +FAIL +Test output failed to match any acceptable form. + +Acceptable output: + (priority-condvar) begin + (priority-condvar) Thread priority 23 starting. + (priority-condvar) Thread priority 22 starting. + (priority-condvar) Thread priority 21 starting. + (priority-condvar) Thread priority 30 starting. + (priority-condvar) Thread priority 29 starting. + (priority-condvar) Thread priority 28 starting. + (priority-condvar) Thread priority 27 starting. + (priority-condvar) Thread priority 26 starting. + (priority-condvar) Thread priority 25 starting. + (priority-condvar) Thread priority 24 starting. + (priority-condvar) Signaling... + (priority-condvar) Thread priority 30 woke up. + (priority-condvar) Signaling... + (priority-condvar) Thread priority 29 woke up. + (priority-condvar) Signaling... + (priority-condvar) Thread priority 28 woke up. + (priority-condvar) Signaling... + (priority-condvar) Thread priority 27 woke up. + (priority-condvar) Signaling... + (priority-condvar) Thread priority 26 woke up. + (priority-condvar) Signaling... + (priority-condvar) Thread priority 25 woke up. + (priority-condvar) Signaling... + (priority-condvar) Thread priority 24 woke up. + (priority-condvar) Signaling... + (priority-condvar) Thread priority 23 woke up. + (priority-condvar) Signaling... + (priority-condvar) Thread priority 22 woke up. + (priority-condvar) Signaling... + (priority-condvar) Thread priority 21 woke up. + (priority-condvar) end +Differences in `diff -u' format: + (priority-condvar) begin +- (priority-condvar) Thread priority 23 starting. +- (priority-condvar) Thread priority 22 starting. +- (priority-condvar) Thread priority 21 starting. +- (priority-condvar) Thread priority 30 starting. +- (priority-condvar) Thread priority 29 starting. +- (priority-condvar) Thread priority 28 starting. +- (priority-condvar) Thread priority 27 starting. +- (priority-condvar) Thread priority 26 starting. +- (priority-condvar) Thread priority 25 starting. +- (priority-condvar) Thread priority 24 starting. + (priority-condvar) Signaling... +- (priority-condvar) Thread priority 30 woke up. + (priority-condvar) Signaling... +- (priority-condvar) Thread priority 29 woke up. + (priority-condvar) Signaling... +- (priority-condvar) Thread priority 28 woke up. + (priority-condvar) Signaling... +- (priority-condvar) Thread priority 27 woke up. + (priority-condvar) Signaling... +- (priority-condvar) Thread priority 26 woke up. + (priority-condvar) Signaling... +- (priority-condvar) Thread priority 25 woke up. + (priority-condvar) Signaling... +- (priority-condvar) Thread priority 24 woke up. + (priority-condvar) Signaling... +- (priority-condvar) Thread priority 23 woke up. + (priority-condvar) Signaling... +- (priority-condvar) Thread priority 22 woke up. + (priority-condvar) Signaling... +- (priority-condvar) Thread priority 21 woke up. + (priority-condvar) end diff --git a/threads/build/tests/threads/priority-donate-chain.d b/threads/build/tests/threads/priority-donate-chain.d new file mode 100644 index 0000000..bc6848a --- /dev/null +++ b/threads/build/tests/threads/priority-donate-chain.d @@ -0,0 +1,8 @@ +tests/threads/priority-donate-chain.o: \ + ../../tests/threads/priority-donate-chain.c ../../include/lib/stdio.h \ + ../../include/lib/debug.h ../../include/lib/stdarg.h \ + ../../include/lib/stdbool.h ../../include/lib/stddef.h \ + ../../include/lib/stdint.h ../../include/lib/kernel/stdio.h \ + ../../tests/threads/tests.h ../../include/threads/init.h \ + ../../include/threads/synch.h ../../include/lib/kernel/list.h \ + ../../include/threads/thread.h ../../include/threads/interrupt.h diff --git a/threads/build/tests/threads/priority-donate-chain.errors b/threads/build/tests/threads/priority-donate-chain.errors new file mode 100644 index 0000000..a2f7a82 --- /dev/null +++ b/threads/build/tests/threads/priority-donate-chain.errors @@ -0,0 +1 @@ +qemu-system-x86_64: warning: TCG doesn't support requested feature: CPUID.01H:ECX.vmx [bit 5] diff --git a/threads/build/tests/threads/priority-donate-chain.o b/threads/build/tests/threads/priority-donate-chain.o new file mode 100644 index 0000000000000000000000000000000000000000..640d5ce0d40e55f4a8a22e012e521834854937d1 GIT binary patch literal 12488 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 literal 0 HcmV?d00001 diff --git a/threads/build/tests/threads/priority-donate-multiple2.output b/threads/build/tests/threads/priority-donate-multiple2.output new file mode 100644 index 0000000..5cae5d3 --- /dev/null +++ b/threads/build/tests/threads/priority-donate-multiple2.output @@ -0,0 +1,22 @@ +Kernel command line: -q run priority-donate-multiple2 +0 ~ 9fc00 1 +100000 ~ 13e0000 1 +Pintos booting with: + base_mem: 0x0 ~ 0x9fc00 (Usable: 639 kB) + ext_mem: 0x100000 ~ 0x13e0000 (Usable: 19,328 kB) +Calibrating timer... 215,859,200 loops/s. +Boot complete. +Executing 'priority-donate-multiple2': +(priority-donate-multiple2) begin +(priority-donate-multiple2) Main thread should have priority 34. Actual priority: 31. +(priority-donate-multiple2) Main thread should have priority 36. Actual priority: 31. +(priority-donate-multiple2) Main thread should have priority 36. Actual priority: 31. +(priority-donate-multiple2) Threads b, a, c should have just finished, in that order. +(priority-donate-multiple2) Main thread should have priority 31. Actual priority: 31. +(priority-donate-multiple2) end +Execution of 'priority-donate-multiple2' complete. +Timer: 39 ticks +Thread: 0 idle ticks, 39 kernel ticks, 0 user ticks +Console: 916 characters output +Keyboard: 0 keys pressed +Powering off... diff --git a/threads/build/tests/threads/priority-donate-multiple2.result b/threads/build/tests/threads/priority-donate-multiple2.result new file mode 100644 index 0000000..3dd7ebb --- /dev/null +++ b/threads/build/tests/threads/priority-donate-multiple2.result @@ -0,0 +1,32 @@ +FAIL +Test output failed to match any acceptable form. + +Acceptable output: + (priority-donate-multiple2) begin + (priority-donate-multiple2) Main thread should have priority 34. Actual priority: 34. + (priority-donate-multiple2) Main thread should have priority 36. Actual priority: 36. + (priority-donate-multiple2) Main thread should have priority 36. Actual priority: 36. + (priority-donate-multiple2) Thread b acquired lock b. + (priority-donate-multiple2) Thread b finished. + (priority-donate-multiple2) Thread a acquired lock a. + (priority-donate-multiple2) Thread a finished. + (priority-donate-multiple2) Thread c finished. + (priority-donate-multiple2) Threads b, a, c should have just finished, in that order. + (priority-donate-multiple2) Main thread should have priority 31. Actual priority: 31. + (priority-donate-multiple2) end +Differences in `diff -u' format: + (priority-donate-multiple2) begin +- (priority-donate-multiple2) Main thread should have priority 34. Actual priority: 34. +- (priority-donate-multiple2) Main thread should have priority 36. Actual priority: 36. +- (priority-donate-multiple2) Main thread should have priority 36. Actual priority: 36. +- (priority-donate-multiple2) Thread b acquired lock b. +- (priority-donate-multiple2) Thread b finished. +- (priority-donate-multiple2) Thread a acquired lock a. +- (priority-donate-multiple2) Thread a finished. +- (priority-donate-multiple2) Thread c finished. ++ (priority-donate-multiple2) Main thread should have priority 34. Actual priority: 31. ++ (priority-donate-multiple2) Main thread should have priority 36. Actual priority: 31. ++ (priority-donate-multiple2) Main thread should have priority 36. Actual priority: 31. + (priority-donate-multiple2) Threads b, a, c should have just finished, in that order. + (priority-donate-multiple2) Main thread should have priority 31. Actual priority: 31. + (priority-donate-multiple2) end diff --git a/threads/build/tests/threads/priority-donate-nest.d b/threads/build/tests/threads/priority-donate-nest.d new file mode 100644 index 0000000..9c83345 --- /dev/null +++ b/threads/build/tests/threads/priority-donate-nest.d @@ -0,0 +1,8 @@ +tests/threads/priority-donate-nest.o: \ + ../../tests/threads/priority-donate-nest.c ../../include/lib/stdio.h \ + ../../include/lib/debug.h ../../include/lib/stdarg.h \ + ../../include/lib/stdbool.h ../../include/lib/stddef.h \ + ../../include/lib/stdint.h ../../include/lib/kernel/stdio.h \ + ../../tests/threads/tests.h ../../include/threads/init.h \ + ../../include/threads/synch.h ../../include/lib/kernel/list.h \ + ../../include/threads/thread.h ../../include/threads/interrupt.h diff --git a/threads/build/tests/threads/priority-donate-nest.errors b/threads/build/tests/threads/priority-donate-nest.errors new file mode 100644 index 0000000..a2f7a82 --- /dev/null +++ b/threads/build/tests/threads/priority-donate-nest.errors @@ -0,0 +1 @@ +qemu-system-x86_64: warning: TCG doesn't support requested feature: CPUID.01H:ECX.vmx [bit 5] diff --git a/threads/build/tests/threads/priority-donate-nest.o b/threads/build/tests/threads/priority-donate-nest.o new file mode 100644 index 0000000000000000000000000000000000000000..b026ab832d220c97c22c9879f4d4976cc4faaffd GIT binary patch literal 12176 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 literal 0 HcmV?d00001 diff --git a/threads/build/tests/threads/priority-donate-one.output b/threads/build/tests/threads/priority-donate-one.output new file mode 100644 index 0000000..dfd864d --- /dev/null +++ b/threads/build/tests/threads/priority-donate-one.output @@ -0,0 +1,21 @@ +Kernel command line: -q run priority-donate-one +0 ~ 9fc00 1 +100000 ~ 13e0000 1 +Pintos booting with: + base_mem: 0x0 ~ 0x9fc00 (Usable: 639 kB) + ext_mem: 0x100000 ~ 0x13e0000 (Usable: 19,328 kB) +Calibrating timer... 209,715,200 loops/s. +Boot complete. +Executing 'priority-donate-one': +(priority-donate-one) begin +(priority-donate-one) This thread should have priority 32. Actual priority: 31. +(priority-donate-one) This thread should have priority 33. Actual priority: 31. +(priority-donate-one) acquire2, acquire1 must already have finished, in that order. +(priority-donate-one) This should be the last line before finishing this test. +(priority-donate-one) end +Execution of 'priority-donate-one' complete. +Timer: 41 ticks +Thread: 0 idle ticks, 42 kernel ticks, 0 user ticks +Console: 777 characters output +Keyboard: 0 keys pressed +Powering off... diff --git a/threads/build/tests/threads/priority-donate-one.result b/threads/build/tests/threads/priority-donate-one.result new file mode 100644 index 0000000..0102de3 --- /dev/null +++ b/threads/build/tests/threads/priority-donate-one.result @@ -0,0 +1,27 @@ +FAIL +Test output failed to match any acceptable form. + +Acceptable output: + (priority-donate-one) begin + (priority-donate-one) This thread should have priority 32. Actual priority: 32. + (priority-donate-one) This thread should have priority 33. Actual priority: 33. + (priority-donate-one) acquire2: got the lock + (priority-donate-one) acquire2: done + (priority-donate-one) acquire1: got the lock + (priority-donate-one) acquire1: done + (priority-donate-one) acquire2, acquire1 must already have finished, in that order. + (priority-donate-one) This should be the last line before finishing this test. + (priority-donate-one) end +Differences in `diff -u' format: + (priority-donate-one) begin +- (priority-donate-one) This thread should have priority 32. Actual priority: 32. +- (priority-donate-one) This thread should have priority 33. Actual priority: 33. +- (priority-donate-one) acquire2: got the lock +- (priority-donate-one) acquire2: done +- (priority-donate-one) acquire1: got the lock +- (priority-donate-one) acquire1: done ++ (priority-donate-one) This thread should have priority 32. Actual priority: 31. ++ (priority-donate-one) This thread should have priority 33. Actual priority: 31. + (priority-donate-one) acquire2, acquire1 must already have finished, in that order. + (priority-donate-one) This should be the last line before finishing this test. + (priority-donate-one) end diff --git a/threads/build/tests/threads/priority-donate-sema.d b/threads/build/tests/threads/priority-donate-sema.d new file mode 100644 index 0000000..a5c524e --- /dev/null +++ b/threads/build/tests/threads/priority-donate-sema.d @@ -0,0 +1,8 @@ +tests/threads/priority-donate-sema.o: \ + ../../tests/threads/priority-donate-sema.c ../../include/lib/stdio.h \ + ../../include/lib/debug.h ../../include/lib/stdarg.h \ + ../../include/lib/stdbool.h ../../include/lib/stddef.h \ + ../../include/lib/stdint.h ../../include/lib/kernel/stdio.h \ + ../../tests/threads/tests.h ../../include/threads/init.h \ + ../../include/threads/synch.h ../../include/lib/kernel/list.h \ + ../../include/threads/thread.h ../../include/threads/interrupt.h diff --git a/threads/build/tests/threads/priority-donate-sema.errors b/threads/build/tests/threads/priority-donate-sema.errors new file mode 100644 index 0000000..a2f7a82 --- /dev/null +++ b/threads/build/tests/threads/priority-donate-sema.errors @@ -0,0 +1 @@ +qemu-system-x86_64: warning: TCG doesn't support requested feature: CPUID.01H:ECX.vmx [bit 5] diff --git a/threads/build/tests/threads/priority-donate-sema.o b/threads/build/tests/threads/priority-donate-sema.o new file mode 100644 index 0000000000000000000000000000000000000000..c9a7cca35a0e55b9d52a9a975930a5f45f1c7ce5 GIT binary patch literal 11432 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 HMPC1ZI8-Bd literal 0 HcmV?d00001 diff --git a/threads/build/tests/threads/priority-donate-sema.output b/threads/build/tests/threads/priority-donate-sema.output new file mode 100644 index 0000000..b3abf36 --- /dev/null +++ b/threads/build/tests/threads/priority-donate-sema.output @@ -0,0 +1,18 @@ +Kernel command line: -q run priority-donate-sema +0 ~ 9fc00 1 +100000 ~ 13e0000 1 +Pintos booting with: + base_mem: 0x0 ~ 0x9fc00 (Usable: 639 kB) + ext_mem: 0x100000 ~ 0x13e0000 (Usable: 19,328 kB) +Calibrating timer... 212,582,400 loops/s. +Boot complete. +Executing 'priority-donate-sema': +(priority-donate-sema) begin +(priority-donate-sema) Main thread finished. +(priority-donate-sema) end +Execution of 'priority-donate-sema' complete. +Timer: 33 ticks +Thread: 0 idle ticks, 33 kernel ticks, 0 user ticks +Console: 502 characters output +Keyboard: 0 keys pressed +Powering off... diff --git a/threads/build/tests/threads/priority-donate-sema.result b/threads/build/tests/threads/priority-donate-sema.result new file mode 100644 index 0000000..c07de03 --- /dev/null +++ b/threads/build/tests/threads/priority-donate-sema.result @@ -0,0 +1,23 @@ +FAIL +Test output failed to match any acceptable form. + +Acceptable output: + (priority-donate-sema) begin + (priority-donate-sema) Thread L acquired lock. + (priority-donate-sema) Thread L downed semaphore. + (priority-donate-sema) Thread H acquired lock. + (priority-donate-sema) Thread H finished. + (priority-donate-sema) Thread M finished. + (priority-donate-sema) Thread L finished. + (priority-donate-sema) Main thread finished. + (priority-donate-sema) end +Differences in `diff -u' format: + (priority-donate-sema) begin +- (priority-donate-sema) Thread L acquired lock. +- (priority-donate-sema) Thread L downed semaphore. +- (priority-donate-sema) Thread H acquired lock. +- (priority-donate-sema) Thread H finished. +- (priority-donate-sema) Thread M finished. +- (priority-donate-sema) Thread L finished. + (priority-donate-sema) Main thread finished. + (priority-donate-sema) end diff --git a/threads/build/tests/threads/priority-fifo.d b/threads/build/tests/threads/priority-fifo.d new file mode 100644 index 0000000..3fbb145 --- /dev/null +++ b/threads/build/tests/threads/priority-fifo.d @@ -0,0 +1,9 @@ +tests/threads/priority-fifo.o: ../../tests/threads/priority-fifo.c \ + ../../include/lib/stdio.h ../../include/lib/debug.h \ + ../../include/lib/stdarg.h ../../include/lib/stdbool.h \ + ../../include/lib/stddef.h ../../include/lib/stdint.h \ + ../../include/lib/kernel/stdio.h ../../tests/threads/tests.h \ + ../../include/threads/init.h ../../include/devices/timer.h \ + ../../include/lib/round.h ../../include/threads/malloc.h \ + ../../include/threads/synch.h ../../include/lib/kernel/list.h \ + ../../include/threads/thread.h ../../include/threads/interrupt.h diff --git a/threads/build/tests/threads/priority-fifo.errors b/threads/build/tests/threads/priority-fifo.errors new file mode 100644 index 0000000..a2f7a82 --- /dev/null +++ b/threads/build/tests/threads/priority-fifo.errors @@ -0,0 +1 @@ +qemu-system-x86_64: warning: TCG doesn't support requested feature: CPUID.01H:ECX.vmx [bit 5] diff --git a/threads/build/tests/threads/priority-fifo.o b/threads/build/tests/threads/priority-fifo.o new file mode 100644 index 0000000000000000000000000000000000000000..13a55980939ee58d7794d2d40f1c0f4d8d7bc67c GIT binary patch literal 12368 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 literal 0 HcmV?d00001 diff --git a/threads/build/tests/threads/priority-fifo.output b/threads/build/tests/threads/priority-fifo.output new file mode 100644 index 0000000..87d27e2 --- /dev/null +++ b/threads/build/tests/threads/priority-fifo.output @@ -0,0 +1,14 @@ +Kernel command line: -q run priority-fifo +0 ~ 9fc00 1 +100000 ~ 13e0000 1 +Pintos booting with: + base_mem: 0x0 ~ 0x9fc00 (Usable: 639 kB) + ext_mem: 0x100000 ~ 0x13e0000 (Usable: 19,328 kB) +Calibrating timer... 218,316,800 loops/s. +Boot complete. +Executing 'priority-fifo': +(priority-fifo) begin +(priority-fifo) 16 threads will iterate 16 times in the same order each time. +(priority-fifo) If the order varies then there is a bug. +(priority-fifo) end +Execution of 'priority-fKIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII \ No newline at end of file diff --git a/threads/build/tests/threads/priority-fifo.result b/threads/build/tests/threads/priority-fifo.result new file mode 100644 index 0000000..097975b --- /dev/null +++ b/threads/build/tests/threads/priority-fifo.result @@ -0,0 +1,2 @@ +FAIL +Run didn't shut down properly: no "Timer: # ticks" message diff --git a/threads/build/tests/threads/priority-preempt.d b/threads/build/tests/threads/priority-preempt.d new file mode 100644 index 0000000..cdc87af --- /dev/null +++ b/threads/build/tests/threads/priority-preempt.d @@ -0,0 +1,8 @@ +tests/threads/priority-preempt.o: ../../tests/threads/priority-preempt.c \ + ../../include/lib/stdio.h ../../include/lib/debug.h \ + ../../include/lib/stdarg.h ../../include/lib/stdbool.h \ + ../../include/lib/stddef.h ../../include/lib/stdint.h \ + ../../include/lib/kernel/stdio.h ../../tests/threads/tests.h \ + ../../include/threads/init.h ../../include/threads/synch.h \ + ../../include/lib/kernel/list.h ../../include/threads/thread.h \ + ../../include/threads/interrupt.h diff --git a/threads/build/tests/threads/priority-preempt.errors b/threads/build/tests/threads/priority-preempt.errors new file mode 100644 index 0000000..a2f7a82 --- /dev/null +++ b/threads/build/tests/threads/priority-preempt.errors @@ -0,0 +1 @@ +qemu-system-x86_64: warning: TCG doesn't support requested feature: CPUID.01H:ECX.vmx [bit 5] diff --git a/threads/build/tests/threads/priority-preempt.o b/threads/build/tests/threads/priority-preempt.o new file mode 100644 index 0000000000000000000000000000000000000000..5912ec59d4a99f3fad5cbb71b3ea68f0721feec4 GIT binary patch literal 6672 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 literal 0 HcmV?d00001 diff --git a/threads/build/threads/init.d b/threads/build/threads/init.d new file mode 100644 index 0000000..97afcec --- /dev/null +++ b/threads/build/threads/init.d @@ -0,0 +1,16 @@ +threads/init.o: ../../threads/init.c ../../include/threads/init.h \ + ../../include/lib/debug.h ../../include/lib/stdbool.h \ + ../../include/lib/stddef.h ../../include/lib/stdint.h \ + ../../include/lib/kernel/console.h ../../include/lib/limits.h \ + ../../include/lib/random.h ../../include/lib/stdio.h \ + ../../include/lib/stdarg.h ../../include/lib/kernel/stdio.h \ + ../../include/lib/stdlib.h ../../include/lib/string.h \ + ../../include/devices/kbd.h ../../include/devices/input.h \ + ../../include/devices/serial.h ../../include/devices/timer.h \ + ../../include/lib/round.h ../../include/devices/vga.h \ + ../../include/threads/interrupt.h ../../include/threads/io.h \ + ../../include/threads/loader.h ../../include/threads/malloc.h \ + ../../include/threads/mmu.h ../../include/threads/pte.h \ + ../../include/threads/vaddr.h ../../include/threads/palloc.h \ + ../../include/threads/thread.h ../../include/lib/kernel/list.h \ + ../../tests/threads/tests.h diff --git a/threads/build/threads/init.o b/threads/build/threads/init.o new file mode 100644 index 0000000000000000000000000000000000000000..3f9c7db71019a403d619d3df958ae0955aeea8e3 GIT binary patch literal 20336 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 literal 0 HcmV?d00001 diff --git a/threads/build/threads/interrupt.d b/threads/build/threads/interrupt.d new file mode 100644 index 0000000..7da8141 --- /dev/null +++ b/threads/build/threads/interrupt.d @@ -0,0 +1,12 @@ +threads/interrupt.o: ../../threads/interrupt.c \ + ../../include/threads/interrupt.h ../../include/lib/stdbool.h \ + ../../include/lib/stdint.h ../../include/lib/debug.h \ + ../../include/lib/inttypes.h ../../include/lib/stdio.h \ + ../../include/lib/stdarg.h ../../include/lib/stddef.h \ + ../../include/lib/kernel/stdio.h ../../include/threads/flags.h \ + ../../include/threads/intr-stubs.h ../../include/threads/io.h \ + ../../include/threads/thread.h ../../include/lib/kernel/list.h \ + ../../include/threads/mmu.h ../../include/threads/pte.h \ + ../../include/threads/vaddr.h ../../include/threads/loader.h \ + ../../include/devices/timer.h ../../include/lib/round.h \ + ../../include/intrinsic.h ../../include/threads/mmu.h diff --git a/threads/build/threads/interrupt.o b/threads/build/threads/interrupt.o new file mode 100644 index 0000000000000000000000000000000000000000..f33f8b46e056f31c6063fd634aeaf2c2e49dd690 GIT binary patch literal 26432 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 literal 0 HcmV?d00001 diff --git a/threads/build/threads/intr-stubs.d b/threads/build/threads/intr-stubs.d new file mode 100644 index 0000000..c21a645 --- /dev/null +++ b/threads/build/threads/intr-stubs.d @@ -0,0 +1,2 @@ +threads/intr-stubs.o: ../../threads/intr-stubs.S \ + ../../include/threads/loader.h diff --git a/threads/build/threads/intr-stubs.o b/threads/build/threads/intr-stubs.o new file mode 100644 index 0000000000000000000000000000000000000000..9d0115d869636efa21066ab3e1baeba7a67ef3a9 GIT binary patch literal 39176 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 HEc^cjJWZTv literal 0 HcmV?d00001 diff --git a/threads/build/threads/malloc.d b/threads/build/threads/malloc.d new file mode 100644 index 0000000..020db21 --- /dev/null +++ b/threads/build/threads/malloc.d @@ -0,0 +1,8 @@ +threads/malloc.o: ../../threads/malloc.c ../../include/threads/malloc.h \ + ../../include/lib/debug.h ../../include/lib/stddef.h \ + ../../include/lib/kernel/list.h ../../include/lib/stdbool.h \ + ../../include/lib/stdint.h ../../include/lib/round.h \ + ../../include/lib/stdio.h ../../include/lib/stdarg.h \ + ../../include/lib/kernel/stdio.h ../../include/lib/string.h \ + ../../include/threads/palloc.h ../../include/threads/synch.h \ + ../../include/threads/vaddr.h ../../include/threads/loader.h diff --git a/threads/build/threads/malloc.o b/threads/build/threads/malloc.o new file mode 100644 index 0000000000000000000000000000000000000000..3ea85b60c7c5e71010cc44e76514a2d1403d2620 GIT binary patch literal 16784 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 NJ!Nk0mAd1W{}<~dt{eaW literal 0 HcmV?d00001 diff --git a/threads/build/threads/palloc.d b/threads/build/threads/palloc.d new file mode 100644 index 0000000..c5cc344 --- /dev/null +++ b/threads/build/threads/palloc.d @@ -0,0 +1,9 @@ +threads/palloc.o: ../../threads/palloc.c ../../include/threads/palloc.h \ + ../../include/lib/stdint.h ../../include/lib/stddef.h \ + ../../include/lib/kernel/bitmap.h ../../include/lib/stdbool.h \ + ../../include/lib/inttypes.h ../../include/lib/debug.h \ + ../../include/lib/round.h ../../include/lib/stdio.h \ + ../../include/lib/stdarg.h ../../include/lib/kernel/stdio.h \ + ../../include/lib/string.h ../../include/threads/init.h \ + ../../include/threads/loader.h ../../include/threads/synch.h \ + ../../include/lib/kernel/list.h ../../include/threads/vaddr.h diff --git a/threads/build/threads/palloc.o b/threads/build/threads/palloc.o new file mode 100644 index 0000000000000000000000000000000000000000..375a70282a44b10daf1da6ae62ba49dee21fe315 GIT binary patch literal 20480 zcmbVT4SZD9mA`K$Brk-JK!SpwgBk%PlYj^j0fTgO0MRH$k*dQanIuytGhsdeb@`AG zOH6f%t(E>t>qom?e~K2iKP^?U@f$2{<8G_iwKZ+Ujm7R_vD>s#*>mna=gphLq;`9M z@a{SPd+xdCo_p@cyKk~7aMcwa%Tk;ywLoP#MwRMclBMf4S+6FjO4S(bIUMZzup!v9 zVQ;V}vpcv~b*h5RAQ9{d91Zpcj`r5q_PhwNQU#mg5wr%NWazcPabVO3S3_gHjmLvM z13{}F%U&4t20^|zFk~bLfgJ3uuk0H3rpq1LD(fzXnufP~`k|W7R0G)p;B_m9OnJE| zAH(GX!QMucfws}8{aQR&2`G|>f<3PWe~4CM!Vaj#`ia!S69d6JHyk=~qD-wT1mV3$ z3gEdLwDdy`|Le|Z

u;sx! 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 a4@sxa_Em4lNLPO8UAn{$E=Wh|zyAT1magic == THREAD_MAGIC) @@ -110,6 +119,9 @@ thread_init (void) { list_init (&ready_list); list_init (&destruction_req); + // Project 1. Alarm Clock + list_init(&blocked_list); + /* Set up a thread structure for the running thread. */ initial_thread = running_thread (); init_thread (initial_thread, "main", PRI_DEFAULT); @@ -292,7 +304,7 @@ thread_exit (void) { NOT_REACHED (); } -/* Yields the CPU. The current thread is not put to sleep and +/* Yields the CPU. The current thread is not put to and may be scheduled again immediately at the scheduler's whim. */ void thread_yield (void) { @@ -588,3 +600,49 @@ allocate_tid (void) { return tid; } + + +// Project 1. Alarm clock +void thread_sleep(int64_t ticks){ + struct thread *cur; + enum intr_level old_level; + cur = thread_current(); + ASSERT(is_thread(cur)); + ASSERT(cur->status == THREAD_RUNNING); + + old_level = intr_disable(); + + ASSERT(cur != idle_thread); + // 일어날 시간을 저장 + cur->wakeup_time = ticks; + printf("%d번째 쓰레드가 일어날 시간은 %d입니다\n", cur->tid, ticks); + list_push_back (&blocked_list, &cur->elem); + thread_block(); + + intr_set_level(old_level); +} + +// 블락큐에서 스레드 깨우기 +void thread_awake(int64_t ticks){ + struct list_elem *i = list_begin(&blocked_list); + + while (i != list_end(&blocked_list)){ + struct thread *find_thread = list_entry(i, struct thread, elem); + if (find_thread -> wakeup_time <= ticks){ + i = list_remove(i); + thread_unblock(find_thread); + printf("%d번째 쓰레드를 깨웠다!\n", find_thread->tid); + } + else{ + i = list_next(i); + } + } + // for (i; i != list_end(&blocked_list); i = list_next (i)){ + // struct thread *find_thread = list_entry(i, struct thread, elem); + // if (find_thread->wakeup_time <= ticks){ + // i = list_remove(i); + // thread_unblock(find_thread); + // printf("%d번째 쓰레드를 깨웠다!\n", find_thread->tid); + // } + // } +} \ No newline at end of file diff --git a/userprog/process.c b/userprog/process.c index 9388e50..312ba1f 100644 --- a/userprog/process.c +++ b/userprog/process.c @@ -49,7 +49,6 @@ process_create_initd (const char *file_name) { if (fn_copy == NULL) return TID_ERROR; strlcpy (fn_copy, file_name, PGSIZE); - /* Create a new thread to execute FILE_NAME. */ tid = thread_create (file_name, PRI_DEFAULT, initd, fn_copy); if (tid == TID_ERROR) From 7aae391f3f45c5c00ffb8361d2b0cd11a68b749b Mon Sep 17 00:00:00 2001 From: jnl1128 Date: Mon, 14 Nov 2022 07:57:23 +0000 Subject: [PATCH 04/34] priority alarm --- .vscode/settings.json | 5 +- devices/timer.c | 3 +- threads/build/Makefile | 64 ------------------ threads/build/devices/disk.d | 9 --- threads/build/devices/disk.o | Bin 33424 -> 0 bytes threads/build/devices/input.d | 6 -- threads/build/devices/input.o | Bin 8576 -> 0 bytes threads/build/devices/intq.d | 5 -- threads/build/devices/intq.o | Bin 15624 -> 0 bytes threads/build/devices/kbd.d | 7 -- threads/build/devices/kbd.o | Bin 12648 -> 0 bytes threads/build/devices/serial.d | 8 --- threads/build/devices/serial.o | Bin 17544 -> 0 bytes threads/build/devices/timer.d | 8 --- threads/build/devices/timer.o | Bin 14600 -> 0 bytes threads/build/devices/vga.d | 6 -- threads/build/devices/vga.o | Bin 10408 -> 0 bytes threads/build/kernel.bin | Bin 135168 -> 0 bytes threads/build/kernel.o | Bin 2414056 -> 0 bytes threads/build/lib/arithmetic.d | 1 - threads/build/lib/arithmetic.o | Bin 7320 -> 0 bytes threads/build/lib/debug.d | 5 -- threads/build/lib/debug.o | Bin 4616 -> 0 bytes threads/build/lib/kernel/bitmap.d | 7 -- threads/build/lib/kernel/bitmap.o | Bin 20304 -> 0 bytes threads/build/lib/kernel/console.d | 8 --- threads/build/lib/kernel/console.o | Bin 12696 -> 0 bytes threads/build/lib/kernel/debug.d | 7 -- threads/build/lib/kernel/debug.o | Bin 6856 -> 0 bytes threads/build/lib/kernel/hash.d | 5 -- threads/build/lib/kernel/hash.o | Bin 21256 -> 0 bytes threads/build/lib/kernel/list.d | 4 -- threads/build/lib/kernel/list.o | Bin 32496 -> 0 bytes threads/build/lib/random.d | 3 - threads/build/lib/random.o | Bin 6368 -> 0 bytes threads/build/lib/stdio.d | 6 -- threads/build/lib/stdio.o | Bin 24616 -> 0 bytes threads/build/lib/stdlib.d | 4 -- threads/build/lib/stdlib.o | Bin 11072 -> 0 bytes threads/build/lib/string.d | 2 - threads/build/lib/string.o | Bin 18200 -> 0 bytes threads/build/loader.bin | Bin 512 -> 0 bytes threads/build/os.dsk | Bin 135680 -> 0 bytes threads/build/tests/threads/alarm-negative.d | 9 --- threads/build/tests/threads/alarm-negative.o | Bin 3840 -> 0 bytes threads/build/tests/threads/alarm-priority.d | 9 --- threads/build/tests/threads/alarm-priority.o | Bin 8616 -> 0 bytes .../build/tests/threads/alarm-simultaneous.d | 10 --- .../build/tests/threads/alarm-simultaneous.o | Bin 9592 -> 0 bytes threads/build/tests/threads/alarm-wait.d | 9 --- threads/build/tests/threads/alarm-wait.o | Bin 14320 -> 0 bytes threads/build/tests/threads/alarm-zero.d | 9 --- threads/build/tests/threads/alarm-zero.o | Bin 3816 -> 0 bytes .../build/tests/threads/mlfqs/mlfqs-block.d | 10 --- .../build/tests/threads/mlfqs/mlfqs-block.o | Bin 10328 -> 0 bytes .../build/tests/threads/mlfqs/mlfqs-fair.d | 10 --- .../build/tests/threads/mlfqs/mlfqs-fair.o | Bin 10952 -> 0 bytes .../build/tests/threads/mlfqs/mlfqs-load-1.d | 10 --- .../build/tests/threads/mlfqs/mlfqs-load-1.o | Bin 7992 -> 0 bytes .../build/tests/threads/mlfqs/mlfqs-load-60.d | 10 --- .../build/tests/threads/mlfqs/mlfqs-load-60.o | Bin 8544 -> 0 bytes .../tests/threads/mlfqs/mlfqs-load-avg.d | 10 --- .../tests/threads/mlfqs/mlfqs-load-avg.o | Bin 8656 -> 0 bytes .../tests/threads/mlfqs/mlfqs-recent-1.d | 10 --- .../tests/threads/mlfqs/mlfqs-recent-1.o | Bin 7160 -> 0 bytes threads/build/tests/threads/priority-change.d | 7 -- threads/build/tests/threads/priority-change.o | Bin 6208 -> 0 bytes .../build/tests/threads/priority-condvar.d | 9 --- .../build/tests/threads/priority-condvar.o | Bin 10816 -> 0 bytes .../tests/threads/priority-donate-chain.d | 8 --- .../tests/threads/priority-donate-chain.o | Bin 12456 -> 0 bytes .../tests/threads/priority-donate-lower.d | 8 --- .../tests/threads/priority-donate-lower.o | Bin 10280 -> 0 bytes .../tests/threads/priority-donate-multiple.d | 8 --- .../tests/threads/priority-donate-multiple.o | Bin 11416 -> 0 bytes .../tests/threads/priority-donate-multiple2.d | 9 --- .../tests/threads/priority-donate-multiple2.o | Bin 11816 -> 0 bytes .../tests/threads/priority-donate-nest.d | 8 --- .../tests/threads/priority-donate-nest.o | Bin 12144 -> 0 bytes .../build/tests/threads/priority-donate-one.d | 8 --- .../build/tests/threads/priority-donate-one.o | Bin 10832 -> 0 bytes .../tests/threads/priority-donate-sema.d | 8 --- .../tests/threads/priority-donate-sema.o | Bin 11392 -> 0 bytes threads/build/tests/threads/priority-fifo.d | 9 --- threads/build/tests/threads/priority-fifo.o | Bin 12328 -> 0 bytes .../build/tests/threads/priority-preempt.d | 8 --- .../build/tests/threads/priority-preempt.o | Bin 6632 -> 0 bytes threads/build/tests/threads/priority-sema.d | 9 --- threads/build/tests/threads/priority-sema.o | Bin 7664 -> 0 bytes threads/build/tests/threads/tests.d | 6 -- threads/build/tests/threads/tests.o | Bin 11512 -> 0 bytes threads/build/threads/init.d | 16 ----- threads/build/threads/init.o | Bin 20304 -> 0 bytes threads/build/threads/interrupt.d | 12 ---- threads/build/threads/interrupt.o | Bin 26400 -> 0 bytes threads/build/threads/intr-stubs.d | 2 - threads/build/threads/intr-stubs.o | Bin 39176 -> 0 bytes threads/build/threads/kernel.lds.s | 23 ------- threads/build/threads/loader.o | Bin 5632 -> 0 bytes threads/build/threads/malloc.d | 8 --- threads/build/threads/malloc.o | Bin 16752 -> 0 bytes threads/build/threads/mmu.d | 9 --- threads/build/threads/mmu.o | Bin 24216 -> 0 bytes threads/build/threads/palloc.d | 9 --- threads/build/threads/palloc.o | Bin 20440 -> 0 bytes threads/build/threads/start.d | 1 - threads/build/threads/start.o | Bin 30720 -> 0 bytes threads/build/threads/synch.d | 7 -- threads/build/threads/synch.o | Bin 24496 -> 0 bytes threads/build/threads/thread.d | 11 --- threads/build/threads/thread.o | Bin 36600 -> 0 bytes threads/thread.c | 48 ++++++++++--- 112 files changed, 44 insertions(+), 486 deletions(-) delete mode 100644 threads/build/Makefile delete mode 100644 threads/build/devices/disk.d delete mode 100644 threads/build/devices/disk.o delete mode 100644 threads/build/devices/input.d delete mode 100644 threads/build/devices/input.o delete mode 100644 threads/build/devices/intq.d delete mode 100644 threads/build/devices/intq.o delete mode 100644 threads/build/devices/kbd.d delete mode 100644 threads/build/devices/kbd.o delete mode 100644 threads/build/devices/serial.d delete mode 100644 threads/build/devices/serial.o delete mode 100644 threads/build/devices/timer.d delete mode 100644 threads/build/devices/timer.o delete mode 100644 threads/build/devices/vga.d delete mode 100644 threads/build/devices/vga.o delete mode 100644 threads/build/kernel.bin delete mode 100755 threads/build/kernel.o delete mode 100644 threads/build/lib/arithmetic.d delete mode 100644 threads/build/lib/arithmetic.o delete mode 100644 threads/build/lib/debug.d delete mode 100644 threads/build/lib/debug.o delete mode 100644 threads/build/lib/kernel/bitmap.d delete mode 100644 threads/build/lib/kernel/bitmap.o delete mode 100644 threads/build/lib/kernel/console.d delete mode 100644 threads/build/lib/kernel/console.o delete mode 100644 threads/build/lib/kernel/debug.d delete mode 100644 threads/build/lib/kernel/debug.o delete mode 100644 threads/build/lib/kernel/hash.d delete mode 100644 threads/build/lib/kernel/hash.o delete mode 100644 threads/build/lib/kernel/list.d delete mode 100644 threads/build/lib/kernel/list.o delete mode 100644 threads/build/lib/random.d delete mode 100644 threads/build/lib/random.o delete mode 100644 threads/build/lib/stdio.d delete mode 100644 threads/build/lib/stdio.o delete mode 100644 threads/build/lib/stdlib.d delete mode 100644 threads/build/lib/stdlib.o delete mode 100644 threads/build/lib/string.d delete mode 100644 threads/build/lib/string.o delete mode 100755 threads/build/loader.bin delete mode 100644 threads/build/os.dsk delete mode 100644 threads/build/tests/threads/alarm-negative.d delete mode 100644 threads/build/tests/threads/alarm-negative.o delete mode 100644 threads/build/tests/threads/alarm-priority.d delete mode 100644 threads/build/tests/threads/alarm-priority.o delete mode 100644 threads/build/tests/threads/alarm-simultaneous.d delete mode 100644 threads/build/tests/threads/alarm-simultaneous.o delete mode 100644 threads/build/tests/threads/alarm-wait.d delete mode 100644 threads/build/tests/threads/alarm-wait.o delete mode 100644 threads/build/tests/threads/alarm-zero.d delete mode 100644 threads/build/tests/threads/alarm-zero.o delete mode 100644 threads/build/tests/threads/mlfqs/mlfqs-block.d delete mode 100644 threads/build/tests/threads/mlfqs/mlfqs-block.o delete mode 100644 threads/build/tests/threads/mlfqs/mlfqs-fair.d delete mode 100644 threads/build/tests/threads/mlfqs/mlfqs-fair.o delete mode 100644 threads/build/tests/threads/mlfqs/mlfqs-load-1.d delete mode 100644 threads/build/tests/threads/mlfqs/mlfqs-load-1.o delete mode 100644 threads/build/tests/threads/mlfqs/mlfqs-load-60.d delete mode 100644 threads/build/tests/threads/mlfqs/mlfqs-load-60.o delete mode 100644 threads/build/tests/threads/mlfqs/mlfqs-load-avg.d delete mode 100644 threads/build/tests/threads/mlfqs/mlfqs-load-avg.o delete mode 100644 threads/build/tests/threads/mlfqs/mlfqs-recent-1.d delete mode 100644 threads/build/tests/threads/mlfqs/mlfqs-recent-1.o delete mode 100644 threads/build/tests/threads/priority-change.d delete mode 100644 threads/build/tests/threads/priority-change.o delete mode 100644 threads/build/tests/threads/priority-condvar.d delete mode 100644 threads/build/tests/threads/priority-condvar.o delete mode 100644 threads/build/tests/threads/priority-donate-chain.d delete mode 100644 threads/build/tests/threads/priority-donate-chain.o delete mode 100644 threads/build/tests/threads/priority-donate-lower.d delete mode 100644 threads/build/tests/threads/priority-donate-lower.o delete mode 100644 threads/build/tests/threads/priority-donate-multiple.d delete mode 100644 threads/build/tests/threads/priority-donate-multiple.o delete mode 100644 threads/build/tests/threads/priority-donate-multiple2.d delete mode 100644 threads/build/tests/threads/priority-donate-multiple2.o delete mode 100644 threads/build/tests/threads/priority-donate-nest.d delete mode 100644 threads/build/tests/threads/priority-donate-nest.o delete mode 100644 threads/build/tests/threads/priority-donate-one.d delete mode 100644 threads/build/tests/threads/priority-donate-one.o delete mode 100644 threads/build/tests/threads/priority-donate-sema.d delete mode 100644 threads/build/tests/threads/priority-donate-sema.o delete mode 100644 threads/build/tests/threads/priority-fifo.d delete mode 100644 threads/build/tests/threads/priority-fifo.o delete mode 100644 threads/build/tests/threads/priority-preempt.d delete mode 100644 threads/build/tests/threads/priority-preempt.o delete mode 100644 threads/build/tests/threads/priority-sema.d delete mode 100644 threads/build/tests/threads/priority-sema.o delete mode 100644 threads/build/tests/threads/tests.d delete mode 100644 threads/build/tests/threads/tests.o delete mode 100644 threads/build/threads/init.d delete mode 100644 threads/build/threads/init.o delete mode 100644 threads/build/threads/interrupt.d delete mode 100644 threads/build/threads/interrupt.o delete mode 100644 threads/build/threads/intr-stubs.d delete mode 100644 threads/build/threads/intr-stubs.o delete mode 100644 threads/build/threads/kernel.lds.s delete mode 100644 threads/build/threads/loader.o delete mode 100644 threads/build/threads/malloc.d delete mode 100644 threads/build/threads/malloc.o delete mode 100644 threads/build/threads/mmu.d delete mode 100644 threads/build/threads/mmu.o delete mode 100644 threads/build/threads/palloc.d delete mode 100644 threads/build/threads/palloc.o delete mode 100644 threads/build/threads/start.d delete mode 100644 threads/build/threads/start.o delete mode 100644 threads/build/threads/synch.d delete mode 100644 threads/build/threads/synch.o delete mode 100644 threads/build/threads/thread.d delete mode 100644 threads/build/threads/thread.o diff --git a/.vscode/settings.json b/.vscode/settings.json index faeb3cc..2cd0849 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,5 +1,8 @@ { "files.associations": { - "list.h": "c" + "list.h": "c", + "synch.h": "c", + "syscall.h": "c", + "thread.h": "c" } } \ No newline at end of file diff --git a/devices/timer.c b/devices/timer.c index 926524f..68537b8 100644 --- a/devices/timer.c +++ b/devices/timer.c @@ -132,8 +132,9 @@ static void timer_interrupt (struct intr_frame *args UNUSED) { ticks++; thread_tick (); + if (ticks >= get_next_tick_to_awake()) + thread_awake(ticks); - thread_awake(ticks); } /* Returns true if LOOPS iterations waits for more than one timer diff --git a/threads/build/Makefile b/threads/build/Makefile deleted file mode 100644 index b8a8503..0000000 --- a/threads/build/Makefile +++ /dev/null @@ -1,64 +0,0 @@ -# -*- makefile -*- - -SRCDIR = ../.. - -all: os.dsk - -include ../../Make.config -include ../Make.vars -include ../../tests/Make.tests - -# Compiler and assembler options. -os.dsk: CPPFLAGS += -I$(SRCDIR)/lib/kernel - -# Core kernel. -include ../../threads/targets.mk -# User process code. -include ../../userprog/targets.mk -# Virtual memory code. -include ../../vm/targets.mk -# Filesystem code. -include ../../filesys/targets.mk -# Library code shared between kernel and user programs. -include ../../lib/targets.mk -# Kernel-specific library code. -include ../../lib/kernel/targets.mk -# Device driver code. -include ../../devices/targets.mk - -SOURCES = $(foreach dir,$(KERNEL_SUBDIRS),$($(dir)_SRC)) -OBJECTS = $(patsubst %.c,%.o,$(patsubst %.S,%.o,$(SOURCES))) -DEPENDS = $(patsubst %.o,%.d,$(OBJECTS)) - -threads/kernel.lds.s: CPPFLAGS += -P -threads/kernel.lds.s: threads/kernel.lds.S - -kernel.o: threads/kernel.lds.s $(OBJECTS) - $(LD) $(LDFLAGS) -T $< -o $@ $(OBJECTS) - -kernel.bin: kernel.o - $(OBJCOPY) -O binary -R .note -R .comment -S $< $@.tmp - dd if=$@.tmp of=$@ bs=4096 conv=sync - rm $@.tmp - -threads/loader.o: threads/loader.S kernel.bin - $(CC) -c $< -o $@ $(ASFLAGS) $(CPPFLAGS) $(DEFINES) -DKERNEL_LOAD_PAGES=`perl -e 'print +(-s "kernel.bin") / 4096;'` - -loader.bin: threads/loader.o - $(LD) $(LDFLAGS) -N -e start -Ttext 0x7c00 --oformat binary -o $@ $< - -os.dsk: loader.bin kernel.bin - cat $^ > $@ - -clean:: - rm -f $(OBJECTS) $(DEPENDS) - rm -f threads/loader.o threads/kernel.lds.s threads/loader.d - rm -f kernel.o kernel.lds.s - rm -f kernel.bin loader.bin os.dsk - rm -f bochsout.txt bochsrc.txt - rm -f results grade - -Makefile: $(SRCDIR)/Makefile.build - cp $< $@ - --include $(DEPENDS) diff --git a/threads/build/devices/disk.d b/threads/build/devices/disk.d deleted file mode 100644 index b8115be..0000000 --- a/threads/build/devices/disk.d +++ /dev/null @@ -1,9 +0,0 @@ -devices/disk.o: ../../devices/disk.c ../../include/devices/disk.h \ - ../../include/lib/inttypes.h ../../include/lib/stdint.h \ - ../../include/lib/ctype.h ../../include/lib/debug.h \ - ../../include/lib/stdbool.h ../../include/lib/stdio.h \ - ../../include/lib/stdarg.h ../../include/lib/stddef.h \ - ../../include/lib/kernel/stdio.h ../../include/devices/timer.h \ - ../../include/lib/round.h ../../include/threads/io.h \ - ../../include/threads/interrupt.h ../../include/threads/synch.h \ - ../../include/lib/kernel/list.h diff --git a/threads/build/devices/disk.o b/threads/build/devices/disk.o deleted file mode 100644 index 9517f1a0a1af6d006ccbcaa037d6251d11711961..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33424 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 KzBp%@{{I5gf;e>m diff --git a/threads/build/devices/input.d b/threads/build/devices/input.d deleted file mode 100644 index c214522..0000000 --- a/threads/build/devices/input.d +++ /dev/null @@ -1,6 +0,0 @@ -devices/input.o: ../../devices/input.c ../../include/devices/input.h \ - ../../include/lib/stdbool.h ../../include/lib/stdint.h \ - ../../include/lib/debug.h ../../include/devices/intq.h \ - ../../include/threads/interrupt.h ../../include/threads/synch.h \ - ../../include/lib/kernel/list.h ../../include/lib/stddef.h \ - ../../include/devices/serial.h diff --git a/threads/build/devices/input.o b/threads/build/devices/input.o deleted file mode 100644 index 12e3ceb3c4454563a3c96d49afd564cdbf43cca0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8576 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 diff --git a/threads/build/devices/serial.d b/threads/build/devices/serial.d deleted file mode 100644 index c094a3f..0000000 --- a/threads/build/devices/serial.d +++ /dev/null @@ -1,8 +0,0 @@ -devices/serial.o: ../../devices/serial.c ../../include/devices/serial.h \ - ../../include/lib/stdint.h ../../include/lib/debug.h \ - ../../include/devices/input.h ../../include/lib/stdbool.h \ - ../../include/devices/intq.h ../../include/threads/interrupt.h \ - ../../include/threads/synch.h ../../include/lib/kernel/list.h \ - ../../include/lib/stddef.h ../../include/devices/timer.h \ - ../../include/lib/round.h ../../include/threads/io.h \ - ../../include/threads/thread.h diff --git a/threads/build/devices/serial.o b/threads/build/devices/serial.o deleted file mode 100644 index 3b8b3a25c7e5b5d2eb125694fe400d9ba809f2ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17544 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 diff --git a/threads/build/devices/vga.d b/threads/build/devices/vga.d deleted file mode 100644 index ece73b2..0000000 --- a/threads/build/devices/vga.d +++ /dev/null @@ -1,6 +0,0 @@ -devices/vga.o: ../../devices/vga.c ../../include/devices/vga.h \ - ../../include/lib/round.h ../../include/lib/stdint.h \ - ../../include/lib/stddef.h ../../include/lib/string.h \ - ../../include/threads/io.h ../../include/threads/interrupt.h \ - ../../include/lib/stdbool.h ../../include/threads/vaddr.h \ - ../../include/lib/debug.h ../../include/threads/loader.h diff --git a/threads/build/devices/vga.o b/threads/build/devices/vga.o deleted file mode 100644 index 0ade2df4909221dac45e8c8ffb202533586cbd18..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10408 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 diff --git a/threads/build/tests/threads/alarm-negative.d b/threads/build/tests/threads/alarm-negative.d deleted file mode 100644 index 6447dce..0000000 --- a/threads/build/tests/threads/alarm-negative.d +++ /dev/null @@ -1,9 +0,0 @@ -tests/threads/alarm-negative.o: ../../tests/threads/alarm-negative.c \ - ../../include/lib/stdio.h ../../include/lib/debug.h \ - ../../include/lib/stdarg.h ../../include/lib/stdbool.h \ - ../../include/lib/stddef.h ../../include/lib/stdint.h \ - ../../include/lib/kernel/stdio.h ../../tests/threads/tests.h \ - ../../include/threads/malloc.h ../../include/threads/synch.h \ - ../../include/lib/kernel/list.h ../../include/threads/thread.h \ - ../../include/threads/interrupt.h ../../include/devices/timer.h \ - ../../include/lib/round.h diff --git a/threads/build/tests/threads/alarm-negative.o b/threads/build/tests/threads/alarm-negative.o deleted file mode 100644 index 97299caf1fa8761e93261659dc463f22d1cb3a2b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3840 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 D>sgwD diff --git a/threads/build/tests/threads/alarm-wait.d b/threads/build/tests/threads/alarm-wait.d deleted file mode 100644 index 3dff7e7..0000000 --- a/threads/build/tests/threads/alarm-wait.d +++ /dev/null @@ -1,9 +0,0 @@ -tests/threads/alarm-wait.o: ../../tests/threads/alarm-wait.c \ - ../../include/lib/stdio.h ../../include/lib/debug.h \ - ../../include/lib/stdarg.h ../../include/lib/stdbool.h \ - ../../include/lib/stddef.h ../../include/lib/stdint.h \ - ../../include/lib/kernel/stdio.h ../../tests/threads/tests.h \ - ../../include/threads/init.h ../../include/threads/malloc.h \ - ../../include/threads/synch.h ../../include/lib/kernel/list.h \ - ../../include/threads/thread.h ../../include/threads/interrupt.h \ - ../../include/devices/timer.h ../../include/lib/round.h diff --git a/threads/build/tests/threads/alarm-wait.o b/threads/build/tests/threads/alarm-wait.o deleted file mode 100644 index fd6d307784ecf6f92cb51435f1bef3a45ffb78d5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14320 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 diff --git a/threads/build/tests/threads/alarm-zero.d b/threads/build/tests/threads/alarm-zero.d deleted file mode 100644 index 905d620..0000000 --- a/threads/build/tests/threads/alarm-zero.d +++ /dev/null @@ -1,9 +0,0 @@ -tests/threads/alarm-zero.o: ../../tests/threads/alarm-zero.c \ - ../../include/lib/stdio.h ../../include/lib/debug.h \ - ../../include/lib/stdarg.h ../../include/lib/stdbool.h \ - ../../include/lib/stddef.h ../../include/lib/stdint.h \ - ../../include/lib/kernel/stdio.h ../../tests/threads/tests.h \ - ../../include/threads/malloc.h ../../include/threads/synch.h \ - ../../include/lib/kernel/list.h ../../include/threads/thread.h \ - ../../include/threads/interrupt.h ../../include/devices/timer.h \ - ../../include/lib/round.h diff --git a/threads/build/tests/threads/alarm-zero.o b/threads/build/tests/threads/alarm-zero.o deleted file mode 100644 index 9f52820b0e6f1bbed3d4614685c86fcace5c360c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3816 zcmbW3O=u)V6o9LzXOmfHGfoo44G|e-e}mnV!I%xJNydbAS2nooPe2xA=$Wa^H1^MI zcTb2Bby;vB2PNo16!9P;;>nwW2M@Y}C-)$D@Uj=dt7i}EdsVL{JvAMKEt0PHzIyM~ ztN(fT!p8GC!(gfyY=s?YiZb^1(F3_I#5#M3O|#8Qdw>0i`las$h0nb^X?g$kpZ)-t z7p(;m`k1m*^$8_Fohyu^mdneka71Xvn5c3>GxJB>AOTBiE66r-kd={3`H9Z+NeoE1 z7)5NvqIxzy`x!LR3F0B;HzXn|3c2z?G*2;O(l}X~E}Es;(xfppUVa1&POxHe1rTE< ziI8A^ftjWA#b=5yOs~#7I|GT>#_Ehjr)SW&e*ELL8Dko<*t==4NuvhhxXsWyC`m); z{z*&$^I&4sLc)(4$N-S=1=KnA9()bs-_itp#bU!c7`9!7zl6t0Tur(WciJ(N%ne#z zzs;*{zU{WSPL(ZlJSXz4T^@yY3pY*T`aH6`n4gFWB2p0=WD`?5Dw7AvEE<;!(?8@) z$f?>5eO~Q1`$5vL_F!?ZyrNR7Hv6vEX8j;`I{|N3aOE+2L-gLj-et#)*yFs%dQKcO zFAO@BA(x9UZdTT7waPjBX?wn6`Ej_FSX*A`B%lPL74f#U8wMP-mLImcw+w^ppbCv~ zj6%{6_;QB_JaSv0I#H{;ytA}uEiP27PQ|(cVYk3I^j(M?IX<^~A!N%V$$K7jg$6xz zMl0&*U%*20tS`929rDk;tTxy|Sr|5)*m5InCf!DQ zgDGzZ9Yd7CksoR^wKJ$1P4<8ihia3J+&OLAL{=-XiVLtxB}@>z(ptu^7JUw6^k>ZWHeMWgB+ilCPFBavJx|je2kX* zVU3f@;ARyC%?4Ku$Y&)ManjptKE*NqRnpIC{0Y)mH2xChb3x-D5Z}=Fr^K&m+$Zj6 ze1&*d<8KiUHGZ1-w#GZe-`4mB@tYdIM*Mw^S4sbfYBWpF^EVn->-3$*A1D1b)oR^W zN&oc_en;b%N&o#2uJ#zl7jHk=sWYMH{~@*Oyh0qunjSB+<2U`pX+oVuvhFG=;+|tC zd?#Uc+esW|H{ofr1#R@=GZ-yUjqA}8qJ^P6(<+<+?==!e;@(Dyl9 z&vpRMhz-x2d{)SbcN^jrbiJDIpsZN5rZxlz{beRPu5C8QvM4bYvbBO01 zebpH~PWGpW>om>v@lyG!sZ zR8mE^#d*%^zl@hQ6tz#Ve?04Y|9xN>Q{@SwD7R?dztlQZs;X~*b(a4eCIw|qR)eqd zQ}rISD0yH6!mH$;W+>~npA(~W2j;Jl|I&a+L5*MGPe90;zcU&0hwruWSM!Sb=zU}C ted_-PB|HTTf1T+5*o}Vn0I@RdfAy{)!=jHL*EP$(PWgW=ybeCP|9^&KUw{Ar diff --git a/threads/build/tests/threads/mlfqs/mlfqs-block.d b/threads/build/tests/threads/mlfqs/mlfqs-block.d deleted file mode 100644 index 50951f4..0000000 --- a/threads/build/tests/threads/mlfqs/mlfqs-block.d +++ /dev/null @@ -1,10 +0,0 @@ -tests/threads/mlfqs/mlfqs-block.o: \ - ../../tests/threads/mlfqs/mlfqs-block.c ../../include/lib/stdio.h \ - ../../include/lib/debug.h ../../include/lib/stdarg.h \ - ../../include/lib/stdbool.h ../../include/lib/stddef.h \ - ../../include/lib/stdint.h ../../include/lib/kernel/stdio.h \ - ../../tests/threads/tests.h ../../include/threads/init.h \ - ../../include/threads/malloc.h ../../include/threads/synch.h \ - ../../include/lib/kernel/list.h ../../include/threads/thread.h \ - ../../include/threads/interrupt.h ../../include/devices/timer.h \ - ../../include/lib/round.h diff --git a/threads/build/tests/threads/mlfqs/mlfqs-block.o b/threads/build/tests/threads/mlfqs/mlfqs-block.o deleted file mode 100644 index 9cb6441d41085c9facc2dd69b4a97272fc12ce35..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10328 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 I|1a|YAMJUiZ2$lO diff --git a/threads/build/tests/threads/mlfqs/mlfqs-fair.d b/threads/build/tests/threads/mlfqs/mlfqs-fair.d deleted file mode 100644 index 7bb8498..0000000 --- a/threads/build/tests/threads/mlfqs/mlfqs-fair.d +++ /dev/null @@ -1,10 +0,0 @@ -tests/threads/mlfqs/mlfqs-fair.o: ../../tests/threads/mlfqs/mlfqs-fair.c \ - ../../include/lib/stdio.h ../../include/lib/debug.h \ - ../../include/lib/stdarg.h ../../include/lib/stdbool.h \ - ../../include/lib/stddef.h ../../include/lib/stdint.h \ - ../../include/lib/kernel/stdio.h ../../include/lib/inttypes.h \ - ../../tests/threads/tests.h ../../include/threads/init.h \ - ../../include/threads/malloc.h ../../include/threads/palloc.h \ - ../../include/threads/synch.h ../../include/lib/kernel/list.h \ - ../../include/threads/thread.h ../../include/threads/interrupt.h \ - ../../include/devices/timer.h ../../include/lib/round.h diff --git a/threads/build/tests/threads/mlfqs/mlfqs-fair.o b/threads/build/tests/threads/mlfqs/mlfqs-fair.o deleted file mode 100644 index d1d23891c7a175418db06c63876f18eabefabc68..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10952 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 L|6ARVYTo|;uXD!q%GcTQa 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 diff --git a/threads/build/tests/threads/mlfqs/mlfqs-load-60.d b/threads/build/tests/threads/mlfqs/mlfqs-load-60.d deleted file mode 100644 index 9fe145d..0000000 --- a/threads/build/tests/threads/mlfqs/mlfqs-load-60.d +++ /dev/null @@ -1,10 +0,0 @@ -tests/threads/mlfqs/mlfqs-load-60.o: \ - ../../tests/threads/mlfqs/mlfqs-load-60.c ../../include/lib/stdio.h \ - ../../include/lib/debug.h ../../include/lib/stdarg.h \ - ../../include/lib/stdbool.h ../../include/lib/stddef.h \ - ../../include/lib/stdint.h ../../include/lib/kernel/stdio.h \ - ../../tests/threads/tests.h ../../include/threads/init.h \ - ../../include/threads/malloc.h ../../include/threads/synch.h \ - ../../include/lib/kernel/list.h ../../include/threads/thread.h \ - ../../include/threads/interrupt.h ../../include/devices/timer.h \ - ../../include/lib/round.h diff --git a/threads/build/tests/threads/mlfqs/mlfqs-load-60.o b/threads/build/tests/threads/mlfqs/mlfqs-load-60.o deleted file mode 100644 index 8fe61c43bc5269ec25ed2b4b2542e472bc75a76a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8544 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 F{|^8!7i$0j diff --git a/threads/build/tests/threads/mlfqs/mlfqs-recent-1.d b/threads/build/tests/threads/mlfqs/mlfqs-recent-1.d deleted file mode 100644 index 2905d5d..0000000 --- a/threads/build/tests/threads/mlfqs/mlfqs-recent-1.d +++ /dev/null @@ -1,10 +0,0 @@ -tests/threads/mlfqs/mlfqs-recent-1.o: \ - ../../tests/threads/mlfqs/mlfqs-recent-1.c ../../include/lib/stdio.h \ - ../../include/lib/debug.h ../../include/lib/stdarg.h \ - ../../include/lib/stdbool.h ../../include/lib/stddef.h \ - ../../include/lib/stdint.h ../../include/lib/kernel/stdio.h \ - ../../tests/threads/tests.h ../../include/threads/init.h \ - ../../include/threads/malloc.h ../../include/threads/synch.h \ - ../../include/lib/kernel/list.h ../../include/threads/thread.h \ - ../../include/threads/interrupt.h ../../include/devices/timer.h \ - ../../include/lib/round.h diff --git a/threads/build/tests/threads/mlfqs/mlfqs-recent-1.o b/threads/build/tests/threads/mlfqs/mlfqs-recent-1.o deleted file mode 100644 index c4f530ea8496caad2eb7c5e4ed2f4e3ac708eed5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7160 zcmbtYeQZtj0-{vBQgN^e`uf*|CrI)-hx&6ku<;VWK)4P1@gQ-v2yvtL!m&Y!8 zSF8({VU)2c@A9z=J;#0z^knkJ1Iar*C*Q#o1iJK+*X!B$>wUKRKE3431lUzwFo)&-3% z2PBD=>pz=arx$D(hH-F0uYu?UBNn4eQ?CPT7p$Qc9%h7Zt@$G4TD=AoWC=yukqotn zCen%=EK-0v;#g~KoC$G3OG~R&a)mq`EuvglgtUlI<8HWp`0f*2&JkhVu?-MGcKsB{ zw#YL+5Pc1`H69vu+I~?=TV0g$F0>L*yvSi_Kllj7IS(Cm>Uu&o*7XKdIKpn6v|iSZDd_={m)4Ut@`Y&8nPB*ftnkscZl7$A`ea*I zjf^sFfwr={w=>+mtb2jBusym261{?Tc5VR(mds)n?%v$_K<8L51VT7WSnHsVZ|(bh zAIy0V*q~DTDuzuYp>6FGrmOqV@$k|YxAkctnO8FnEoH0&*|FZiK4dyOwLMEvX}SI3g9{xCHz;WJ$Dd}A+0U4kT;>Ni?NNI!TRr5g~k>|^8bi@S%}vz zYIYh!Ug!}R{P=fcOTj1Ul!w4tB_>{1CC>9|InBA=%WJz z`hAHFiS>HC=-4?oo&#?#FeMw3n~fi_OD1rcqMbDhLj|KUfh-8&ssh5Tmdv3Evt(AR z46sHelOH;~X=8ljpdO#lITDU*WDdm3 z727p4u3eEinlN2?f55FJGmxg6jTLOT>3D?+^oen}(9-2%VUUvP;HAi_CC8d5nOQxP zH!6_r8eMba>!80nCY{bzOPO?9C* zhhSycxm@~C-YliFFh#*U`O879AlJ$qa9HiiXD|)0kS1Vbv4=)SH|uNm@C755LHu)K z`3yWcuqm;AFeXsO?xKC59eI>#hojoE`R$QYu;o4lIR3EkBWa{NdOS4R)fWCt=o07% z$=n)DVdH%`J6D3YJ4)x4u(;Rf2*UK5Pz7PJiR<8nz-fTb5Gu!oY?$$<1W9U5SX}Hi zfT*yz(;MLYmTrLiS7)6p%;0`%P{J(Q0L3^LG{ODr(3k5#EezySUK@jeH}XEx1mE5S z-`NEJdK27gf*);y;}fk>oO92AxiJ$1_Yc5^Z}9G{du#I}pAJ-fYy>xppv7rHM#=#s zG~_`V(D64P#EnJH6s~AVBmQZupdik#8qSI9K8SY_zL8p~KSO*{!PgMKJAmVwm&G7L z`q@W(Ie^0p#V_9s;K99u&p9mUXA!4F^*f>w4}2oC8v#7%Cya_vuz?4gUs3@)=x1*L zhi8^wJ`UiR&$A?Hr5hZ@!Ewo*jxX=vAtiSx;z)b&!y@NS;_p#^a_kcSicn|pkmLo` z{6_@PF#$8w51tb11331(jEwG6@RzCIEedWBKC0k4@jDd!BIiTf{&2?c?Itv{5J|N*Ug&> zK9BhK6g*CTW(dbH2;#^s!e!o~By6R4B`)_{uY#W^{%&fq!F4`Eepdzb(U&a!0UX!W z2nmJ)IO@ywCqD;dJXMNwcR(Ng>?A+q3O-7FnObbn#iPVOq2O}eKCj?1Ki^aEF5-Wz z;Ax8I6$L*+_yq+&PWW#X{2jvO{zfszkN=^<@<&DgV*xX{j%42Aq}NUPQ}IO#zK3}E z87B25ey^gxn)>Z;f^Sst4Wz%h2`=}C?AIc_q@pkJhZWqV@$P7X2hUsn4;P9jO0CQ@ zvFvY6aGh}MhPo0+!g;*t8t`H1xE0anB~^iYI^mj!U6#liuE7%H4t!KrY{77;cnw&k zoDDkoF_<>S$1CPRP(x#aDn<#P&BRJBpi!{kDNbVOoh34Mu?YW{V~G-c&?Ml4OMKvv zTQi^LA4N2#|EJNx7;`A|EPV|VA>Vxxr|FU`TLu*VPj1*p1hIpjrg9(R9g4Q{&XjlX zD#GC#yRPKxCaES;`(Fnl^!dNq4}dNDRJ$t^@Da#@MXo!E;eD#cgt9CJv{!Mg>fR5! zjq-P$p5$dbtf653aE{dceE~4lCqV2qvU?YqKv8w^y{%%Xewr49Jl~}YRTtlZjpE-& z4;*Qa@#7t+#$NzT^$8H0qW^B8$k(A??@Xvr~l)tkL@`rC>X)p7N@u+>H?;X_tJ`&>FANQVWk84WZ`v9?@ b&>7X} diff --git a/threads/build/tests/threads/priority-change.d b/threads/build/tests/threads/priority-change.d deleted file mode 100644 index 92dcb40..0000000 --- a/threads/build/tests/threads/priority-change.d +++ /dev/null @@ -1,7 +0,0 @@ -tests/threads/priority-change.o: ../../tests/threads/priority-change.c \ - ../../include/lib/stdio.h ../../include/lib/debug.h \ - ../../include/lib/stdarg.h ../../include/lib/stdbool.h \ - ../../include/lib/stddef.h ../../include/lib/stdint.h \ - ../../include/lib/kernel/stdio.h ../../tests/threads/tests.h \ - ../../include/threads/init.h ../../include/threads/thread.h \ - ../../include/lib/kernel/list.h ../../include/threads/interrupt.h diff --git a/threads/build/tests/threads/priority-change.o b/threads/build/tests/threads/priority-change.o deleted file mode 100644 index 330ee44b6d5494d7689dfa7145eb23a1dc5435df..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6208 zcmbtYU2Ggz6~43UwI_DGUdKtPNn1@IY161Xj$4zaZGN1Zwl+khv<*KG)iBDisSPuf1ZDx zbz?siPyN+;`cn7sLXOSsiLiPHx z`qp)Vym2#n<$b)a?X!7=c=+paq;|775NzME!FJ3bX8LEQ`AMtPkQF=~Jo^*7*;^IEMZ1GAQo@u<%@KgmmIHQ02nU zbOAL&PKhxEZh7UG4ljDac4@|-bL3=c^Zxz^VaxLX}+ayMxz43+nCoRB-OQLA2fQ1`j zf>*v`iE(QhG@D)P@MK?~QB1ZlF*AuCWy@Naz(`{|Akh@`vEmBsLu9MKLW~noR?%Q4 z?tn+G4HM#_1L3%pR?fQRM0@LtJ z;AKKq4yY@h>a1wTP=2~m8a5-WX|UlR`owW(ZhG3e+x>{U*Qs{WxRF&G?by#ih~g^L zzUrAc3P7rL;(E|N*!GhqilBr#4NTUJf`iQ<3X-q}qMy`S2bcHntL~d|s!gYQ48k_R zIPQcHIq^F|bt#6_L89=bHl#v>C3Ht7&HUOIpk~KeP|M;(bisPx3=Bt3v$y0&VU4EW zOM_maRKr_8#(cmq9SJ+u@Q4U-h7#q6v!SMmjv?>4u?*X$*-~Kr-8TBY0n6St??BP&CT8G>^?3R zhx%aEyVO#d{_^yGckj&Y3dPc+$U5_gu$C*<_RT}~v#=s>0vI18Ssag)D_<+jjSd$6 z_$HW0-2tUm^*GmmQtC;yuEE7VApW+xP5}Tc>wYlcc^O`#FVZ2m29$B+LA3^kiUZM0 zqCzRQk#+~P1<>#Tz-J4pi|Py_%U)A7$`EUc>Y!pVZ;QQyD94Z~s)J??rtqGc`s@> z?;V7GrQsOo6_Vf8a6Qi7H5~1)kX*zL0%4=uZ`E);ucP4@=NdW#O=-9uhrjzU*vRXo zw5EF?@QCA`5Z5mfuMNgOq+s|Br-*S91>B(|Vfy?i2mW>i%lP?C5wN`)j(KsPA>FN- zyg$FA@yr_dNx~m6@OhFSG4P+0J+C+J|33(C8urf<9vS#?!n+2}_m?vUzK!g^Zs3Oq zf5yPSPxuQ4zDoGZ2L5fre_-Ix5dKpGKSB7L2L1%$ZyWeAl7CMvn(6!QUj{x(aW+xQ z_P3CHgMr^e@=j{`yIduCk6};g#1X^(BFP`u>~UXkU3yHzvHzc@K)!(|ghvK`p71Xk z_-llpGw@#!{!Ih_6XBN$=kfA5d7Ya0Zwz~$&v!P!-!(N_5lr zHLo`lchCt4ZFT!u1c4amx-H!FbSLxSCr6qks%m9*aW zGoa|#|0{H0vp@D9&v~=|Cjjf0{{rQI5A-^jwrx=M%Wq>sAYNxE;*vD;p9KtKazBBU zv_c!=CSzf6es0f!bwB?LlxPpdMGPRy!-X@M>BKpqW^xXA74d5BXj(?%=-C1 NO#OdF^F`M5|2Jg(q)Gq) diff --git a/threads/build/tests/threads/priority-condvar.d b/threads/build/tests/threads/priority-condvar.d deleted file mode 100644 index 1ccd05b..0000000 --- a/threads/build/tests/threads/priority-condvar.d +++ /dev/null @@ -1,9 +0,0 @@ -tests/threads/priority-condvar.o: ../../tests/threads/priority-condvar.c \ - ../../include/lib/stdio.h ../../include/lib/debug.h \ - ../../include/lib/stdarg.h ../../include/lib/stdbool.h \ - ../../include/lib/stddef.h ../../include/lib/stdint.h \ - ../../include/lib/kernel/stdio.h ../../tests/threads/tests.h \ - ../../include/threads/init.h ../../include/threads/malloc.h \ - ../../include/threads/synch.h ../../include/lib/kernel/list.h \ - ../../include/threads/thread.h ../../include/threads/interrupt.h \ - ../../include/devices/timer.h ../../include/lib/round.h diff --git a/threads/build/tests/threads/priority-condvar.o b/threads/build/tests/threads/priority-condvar.o deleted file mode 100644 index 65d57e343459884bfb41fb5aca04bbf7a45b78bb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10816 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 F{{?Heqb&dc diff --git a/threads/build/tests/threads/priority-donate-chain.d b/threads/build/tests/threads/priority-donate-chain.d deleted file mode 100644 index bc6848a..0000000 --- a/threads/build/tests/threads/priority-donate-chain.d +++ /dev/null @@ -1,8 +0,0 @@ -tests/threads/priority-donate-chain.o: \ - ../../tests/threads/priority-donate-chain.c ../../include/lib/stdio.h \ - ../../include/lib/debug.h ../../include/lib/stdarg.h \ - ../../include/lib/stdbool.h ../../include/lib/stddef.h \ - ../../include/lib/stdint.h ../../include/lib/kernel/stdio.h \ - ../../tests/threads/tests.h ../../include/threads/init.h \ - ../../include/threads/synch.h ../../include/lib/kernel/list.h \ - ../../include/threads/thread.h ../../include/threads/interrupt.h diff --git a/threads/build/tests/threads/priority-donate-chain.o b/threads/build/tests/threads/priority-donate-chain.o deleted file mode 100644 index 5822b3c10d3ba1266d531905252f88e116ef5fc7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12456 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 T`;R{B*`KETPbs!Y>h}K!9ry{P diff --git a/threads/build/tests/threads/priority-donate-lower.d b/threads/build/tests/threads/priority-donate-lower.d deleted file mode 100644 index 669b407..0000000 --- a/threads/build/tests/threads/priority-donate-lower.d +++ /dev/null @@ -1,8 +0,0 @@ -tests/threads/priority-donate-lower.o: \ - ../../tests/threads/priority-donate-lower.c ../../include/lib/stdio.h \ - ../../include/lib/debug.h ../../include/lib/stdarg.h \ - ../../include/lib/stdbool.h ../../include/lib/stddef.h \ - ../../include/lib/stdint.h ../../include/lib/kernel/stdio.h \ - ../../tests/threads/tests.h ../../include/threads/init.h \ - ../../include/threads/synch.h ../../include/lib/kernel/list.h \ - ../../include/threads/thread.h ../../include/threads/interrupt.h diff --git a/threads/build/tests/threads/priority-donate-lower.o b/threads/build/tests/threads/priority-donate-lower.o deleted file mode 100644 index 886d7e5953fe284864fa25d49ba4ac05f864047e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10280 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 diff --git a/threads/build/tests/threads/priority-donate-multiple2.d b/threads/build/tests/threads/priority-donate-multiple2.d deleted file mode 100644 index 25f3c39..0000000 --- a/threads/build/tests/threads/priority-donate-multiple2.d +++ /dev/null @@ -1,9 +0,0 @@ -tests/threads/priority-donate-multiple2.o: \ - ../../tests/threads/priority-donate-multiple2.c \ - ../../include/lib/stdio.h ../../include/lib/debug.h \ - ../../include/lib/stdarg.h ../../include/lib/stdbool.h \ - ../../include/lib/stddef.h ../../include/lib/stdint.h \ - ../../include/lib/kernel/stdio.h ../../tests/threads/tests.h \ - ../../include/threads/init.h ../../include/threads/synch.h \ - ../../include/lib/kernel/list.h ../../include/threads/thread.h \ - ../../include/threads/interrupt.h diff --git a/threads/build/tests/threads/priority-donate-multiple2.o b/threads/build/tests/threads/priority-donate-multiple2.o deleted file mode 100644 index bffb6e4f2487e81c4a37cbe8594a3d11b633c3c9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11816 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 L_f<`$#O?nLDd|1g diff --git a/threads/build/tests/threads/priority-donate-nest.d b/threads/build/tests/threads/priority-donate-nest.d deleted file mode 100644 index 9c83345..0000000 --- a/threads/build/tests/threads/priority-donate-nest.d +++ /dev/null @@ -1,8 +0,0 @@ -tests/threads/priority-donate-nest.o: \ - ../../tests/threads/priority-donate-nest.c ../../include/lib/stdio.h \ - ../../include/lib/debug.h ../../include/lib/stdarg.h \ - ../../include/lib/stdbool.h ../../include/lib/stddef.h \ - ../../include/lib/stdint.h ../../include/lib/kernel/stdio.h \ - ../../tests/threads/tests.h ../../include/threads/init.h \ - ../../include/threads/synch.h ../../include/lib/kernel/list.h \ - ../../include/threads/thread.h ../../include/threads/interrupt.h diff --git a/threads/build/tests/threads/priority-donate-nest.o b/threads/build/tests/threads/priority-donate-nest.o deleted file mode 100644 index cb255d8917c6219d1096b5c9d19f9eb1d10b17a1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12144 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 B;*kIV diff --git a/threads/build/tests/threads/priority-donate-sema.d b/threads/build/tests/threads/priority-donate-sema.d deleted file mode 100644 index a5c524e..0000000 --- a/threads/build/tests/threads/priority-donate-sema.d +++ /dev/null @@ -1,8 +0,0 @@ -tests/threads/priority-donate-sema.o: \ - ../../tests/threads/priority-donate-sema.c ../../include/lib/stdio.h \ - ../../include/lib/debug.h ../../include/lib/stdarg.h \ - ../../include/lib/stdbool.h ../../include/lib/stddef.h \ - ../../include/lib/stdint.h ../../include/lib/kernel/stdio.h \ - ../../tests/threads/tests.h ../../include/threads/init.h \ - ../../include/threads/synch.h ../../include/lib/kernel/list.h \ - ../../include/threads/thread.h ../../include/threads/interrupt.h diff --git a/threads/build/tests/threads/priority-donate-sema.o b/threads/build/tests/threads/priority-donate-sema.o deleted file mode 100644 index f303c8592e56320b1265df51ad5e294a80694ab8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11392 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 bAo9K}4PAKu@%&t_{vL||o}sEz;`RRrW{eyK diff --git a/threads/build/tests/threads/priority-fifo.d b/threads/build/tests/threads/priority-fifo.d deleted file mode 100644 index 3fbb145..0000000 --- a/threads/build/tests/threads/priority-fifo.d +++ /dev/null @@ -1,9 +0,0 @@ -tests/threads/priority-fifo.o: ../../tests/threads/priority-fifo.c \ - ../../include/lib/stdio.h ../../include/lib/debug.h \ - ../../include/lib/stdarg.h ../../include/lib/stdbool.h \ - ../../include/lib/stddef.h ../../include/lib/stdint.h \ - ../../include/lib/kernel/stdio.h ../../tests/threads/tests.h \ - ../../include/threads/init.h ../../include/devices/timer.h \ - ../../include/lib/round.h ../../include/threads/malloc.h \ - ../../include/threads/synch.h ../../include/lib/kernel/list.h \ - ../../include/threads/thread.h ../../include/threads/interrupt.h diff --git a/threads/build/tests/threads/priority-fifo.o b/threads/build/tests/threads/priority-fifo.o deleted file mode 100644 index ba5f0a56e38c2963d87ae708776c120e5dc234aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12328 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 diff --git a/threads/build/tests/threads/priority-preempt.d b/threads/build/tests/threads/priority-preempt.d deleted file mode 100644 index cdc87af..0000000 --- a/threads/build/tests/threads/priority-preempt.d +++ /dev/null @@ -1,8 +0,0 @@ -tests/threads/priority-preempt.o: ../../tests/threads/priority-preempt.c \ - ../../include/lib/stdio.h ../../include/lib/debug.h \ - ../../include/lib/stdarg.h ../../include/lib/stdbool.h \ - ../../include/lib/stddef.h ../../include/lib/stdint.h \ - ../../include/lib/kernel/stdio.h ../../tests/threads/tests.h \ - ../../include/threads/init.h ../../include/threads/synch.h \ - ../../include/lib/kernel/list.h ../../include/threads/thread.h \ - ../../include/threads/interrupt.h diff --git a/threads/build/tests/threads/priority-preempt.o b/threads/build/tests/threads/priority-preempt.o deleted file mode 100644 index 96b4ecab5c19315dcfc1032240f9c942f6e4569c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6632 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 diff --git a/threads/build/tests/threads/priority-sema.d b/threads/build/tests/threads/priority-sema.d deleted file mode 100644 index d47c680..0000000 --- a/threads/build/tests/threads/priority-sema.d +++ /dev/null @@ -1,9 +0,0 @@ -tests/threads/priority-sema.o: ../../tests/threads/priority-sema.c \ - ../../include/lib/stdio.h ../../include/lib/debug.h \ - ../../include/lib/stdarg.h ../../include/lib/stdbool.h \ - ../../include/lib/stddef.h ../../include/lib/stdint.h \ - ../../include/lib/kernel/stdio.h ../../tests/threads/tests.h \ - ../../include/threads/init.h ../../include/threads/malloc.h \ - ../../include/threads/synch.h ../../include/lib/kernel/list.h \ - ../../include/threads/thread.h ../../include/threads/interrupt.h \ - ../../include/devices/timer.h ../../include/lib/round.h diff --git a/threads/build/tests/threads/priority-sema.o b/threads/build/tests/threads/priority-sema.o deleted file mode 100644 index efb1e26a8684aa145c4bd7473a803ef5556b188e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7664 zcmbVQdyG_989(<9J3ITH-37`@A5#M@w9H*rmq%M33v^)?t0)u&8+w_YxwA9fnLESW zJ1k&8QV4WQX~0G?DZ~px^cg`MW z{_$k@p6~m8uk$|NnXe8$wB9rfCX2yVu_`A~#?H^F(gU0vV6)gvwly*SPU6ttV~Gn= z-tjU!^nr2sjmqkw086|grHNN1b#WF@iPt5|b%z4IHB(nFqNu7+jW9LAtyJKx!5gUk zmm}~wHhANBBJ}D=CX*Sz^6$T1`p6u=a%u98g>Q~eT>7JFOc-x0yfpsv3%7&n!in+0 z$zxk56UPVN8^5ZwEegWK_*zG-|H17UT>+KE0%Nq-ni!!l2(dI zJ~lti)+SS;d5e0GcPWxFL8s4P6bG@2Jd+I0&7nWCRM2fg_HbJ_^#V z95cFh0B@emcO!fXz^0%%GZDh_xTx45h(*Ka3ahN(Zp9HXPi_msyatK^^9x|A+^<#9 z+bZ)9m6=o--jn7*2!ajd1KY(~u?Ki&@e*zi$i~C73*HFB|E77jNQGujRF(DzWF#7p z;kJNmd@>-zQD$@+^V_>yLhW$Ovuh}q$x)E==lMQwE0@8XH5HJT- zhvpo{+AZ*cKJMH!jfKztUL z6?+>f!}w2o8+`fA2&hrx{G&55=ce+Nw9}i<4QmLUlNt(oy`xUqb@D7YG35ygkvu=0 zb~08L8xAxaR)WsCIiz5-6yqhEKH0c9R7s=qsy0pO*I9J|n5Pdc170?8A-WGcUK#0V(f=T}ryS z6vKO=1PTt@oy=DpX_K%5cT?E4?M~vuR6kQDM*1Y{Tca#@6-q z#gE*EMIg-V*G<65fH;k&#_B|d_VJCxGY^i!}yr`a6z+*>*YpVCml;=lVvuR z%t1U4MzMo}W#Yb-a&se!Npf=qu3^Vt zpSoFs`4UQRE+ITEYLpPASE^_&FouFJP=q1IQzr!x_q+l4K|rHr%e z-v+>g%tNtwxDLLv4*pmj{6HQ2XdV3Pb?`HF@UwOB@72MBV_aTY@<6cq?(16;NT==9 z8ae*7qhCMiX@&N+!}VT;n*8)p9$Li1T!rc)9*1 zE?2~-H2s6buhDR6|9J(Mdjz3j1&5nFD3BEJf^p>;gTQ`{iuMPIB4EE#aBTlW#J{89 zvx&y)zY2~CfLzBd7!V3pK@JNvX4+V=Qro#)!68)(%7Y4y?b$|>EeZ}9X;AhkxauEL zM_#b{M4-*s(+WOU!Oti-#x0QS1qD~*%DKjMA=d_)w2~cS_}Dm3Jb%{!E%7nRp5$Ce ze3bNMEDTSoTp}M^s4ruoU@@0g{dbYkG7UdR{Ta~k)r1df_!8nbYxq}4f4hd?OZ8FwK>zaOs_>VPwC&g`+HOO(jB}i|!hRgZ;q=tLMuhDRm z+VdF=m*?FVHGC224-<}+x*tb1eSDf@*`??sB+rv?X!ujae_O-9N&I;Yf0_7;RLgNr zQ{10u`n)mlc~{fFM*MX}ANT%2GWbZr(e*QgcTgM|SMJr@H2e{=zn5@ik^F%CEZ6W^ zq`zLnA0hoM8orzGofiZ`T~&WT!{t6@mbbUyC*h|H&o7HQE2*-RPg*`cjI4Ch zPcm!R^O#jG3WiHX>XvgeMbN>Y9qi=ra2Z}!mLg7;lPDuVP?|Vmf`QnI)?VY zr?@f?Lkx?qi|0_S_CG;Mv$V(d<385gzpI8%fLL22ei{3M7EohZ9&~EOzd-TjI>Y$* zO4j4!I|6;mb^^)EqonwKZDGjxvVH=zYuUG9FevwkD)>q}S)T-nqyr@&mXW=RA+75^ zPngzBhQD89k@tk)s{NPzSs-eS-$af1!zHPYAGSx2jlNG%{O3rBZ@o_V*X?mlXj=pj cm=8KXe!#ivNAExStYyz=;?Gx2Ii=hG5BPUP$^ZZW diff --git a/threads/build/tests/threads/tests.d b/threads/build/tests/threads/tests.d deleted file mode 100644 index 3e4c1ad..0000000 --- a/threads/build/tests/threads/tests.d +++ /dev/null @@ -1,6 +0,0 @@ -tests/threads/tests.o: ../../tests/threads/tests.c \ - ../../tests/threads/tests.h ../../include/lib/debug.h \ - ../../include/lib/string.h ../../include/lib/stddef.h \ - ../../include/lib/stdio.h ../../include/lib/stdarg.h \ - ../../include/lib/stdbool.h ../../include/lib/stdint.h \ - ../../include/lib/kernel/stdio.h diff --git a/threads/build/tests/threads/tests.o b/threads/build/tests/threads/tests.o deleted file mode 100644 index 6dd6648b4f8a8e982a8b5adaa185455357856372..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11512 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 diff --git a/threads/build/threads/init.d b/threads/build/threads/init.d deleted file mode 100644 index 97afcec..0000000 --- a/threads/build/threads/init.d +++ /dev/null @@ -1,16 +0,0 @@ -threads/init.o: ../../threads/init.c ../../include/threads/init.h \ - ../../include/lib/debug.h ../../include/lib/stdbool.h \ - ../../include/lib/stddef.h ../../include/lib/stdint.h \ - ../../include/lib/kernel/console.h ../../include/lib/limits.h \ - ../../include/lib/random.h ../../include/lib/stdio.h \ - ../../include/lib/stdarg.h ../../include/lib/kernel/stdio.h \ - ../../include/lib/stdlib.h ../../include/lib/string.h \ - ../../include/devices/kbd.h ../../include/devices/input.h \ - ../../include/devices/serial.h ../../include/devices/timer.h \ - ../../include/lib/round.h ../../include/devices/vga.h \ - ../../include/threads/interrupt.h ../../include/threads/io.h \ - ../../include/threads/loader.h ../../include/threads/malloc.h \ - ../../include/threads/mmu.h ../../include/threads/pte.h \ - ../../include/threads/vaddr.h ../../include/threads/palloc.h \ - ../../include/threads/thread.h ../../include/lib/kernel/list.h \ - ../../tests/threads/tests.h diff --git a/threads/build/threads/init.o b/threads/build/threads/init.o deleted file mode 100644 index dd77918a0a8aa0b7c8954c465cca73a6a1a06fe6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20304 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 V6||{b`O)pF#8X_5o`yTb{{V;0me>FQ diff --git a/threads/build/threads/interrupt.d b/threads/build/threads/interrupt.d deleted file mode 100644 index 7da8141..0000000 --- a/threads/build/threads/interrupt.d +++ /dev/null @@ -1,12 +0,0 @@ -threads/interrupt.o: ../../threads/interrupt.c \ - ../../include/threads/interrupt.h ../../include/lib/stdbool.h \ - ../../include/lib/stdint.h ../../include/lib/debug.h \ - ../../include/lib/inttypes.h ../../include/lib/stdio.h \ - ../../include/lib/stdarg.h ../../include/lib/stddef.h \ - ../../include/lib/kernel/stdio.h ../../include/threads/flags.h \ - ../../include/threads/intr-stubs.h ../../include/threads/io.h \ - ../../include/threads/thread.h ../../include/lib/kernel/list.h \ - ../../include/threads/mmu.h ../../include/threads/pte.h \ - ../../include/threads/vaddr.h ../../include/threads/loader.h \ - ../../include/devices/timer.h ../../include/lib/round.h \ - ../../include/intrinsic.h ../../include/threads/mmu.h diff --git a/threads/build/threads/interrupt.o b/threads/build/threads/interrupt.o deleted file mode 100644 index d192e871a233c0268d025dfd27ee739512eef308..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26400 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

-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 diff --git a/threads/build/threads/intr-stubs.d b/threads/build/threads/intr-stubs.d deleted file mode 100644 index c21a645..0000000 --- a/threads/build/threads/intr-stubs.d +++ /dev/null @@ -1,2 +0,0 @@ -threads/intr-stubs.o: ../../threads/intr-stubs.S \ - ../../include/threads/loader.h diff --git a/threads/build/threads/intr-stubs.o b/threads/build/threads/intr-stubs.o deleted file mode 100644 index dadce48117b6e83532dfb6bb5d4dde7c1ebbbcb4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 39176 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 diff --git a/threads/build/threads/kernel.lds.s b/threads/build/threads/kernel.lds.s deleted file mode 100644 index 6b60fcd..0000000 --- a/threads/build/threads/kernel.lds.s +++ /dev/null @@ -1,23 +0,0 @@ -OUTPUT_FORMAT("elf64-x86-64") -OUTPUT_ARCH(i386:x86-64) -ENTRY(_start) -SECTIONS -{ - . = 0x8004000000 + 0x200000; - PROVIDE(start = .); - .text : AT(0x200000) { - *(.entry) - *(.text .text.* .stub .gnu.linkonce.t.*) - } = 0x90 - .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } - . = ALIGN(0x1000); - PROVIDE(_end_kernel_text = .); - .data : { *(.data) *(.data.*)} - PROVIDE(_start_bss = .); - .bss : { *(.bss) } - PROVIDE(_end_bss = .); - PROVIDE(_end = .); - /DISCARD/ : { - *(.eh_frame .note.GNU-stack .stab) - } -} diff --git a/threads/build/threads/loader.o b/threads/build/threads/loader.o deleted file mode 100644 index be319c1452e6df87d8168dc8d04b7793e559d6b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5632 zcmdUyeQXp(6u{s0DjW!0MZg+Cj!)6lYf)lKByg1D!%(CKP)xvb+}*Z(w7uMI6|f@M zqBNYzxSNl9C8g6%~bOL4s9kMNwL5<(%1lulIZ&|L9*%VCOf# zeKWH=dprC3{M`I`X$}WaallMSw#WkbZf9(v4{n9QaJ}!|cx}A)Ol{jisJIxaPb;G|HChU0FIr+WXR0wyjx?qpHMX5~S9ODNNSh*~dU2mo z*_w&HFf2OAs63XbBFn$ABU%SQ#HZqoYHwD=XdRFfnWl$#J4OMxJ#nM*xWhd@Zv3c1 zzy(HA2B<5H*S6Po=<9?Da6sSVVE_*pE!UilXImDerChRZ*j(tNP5OL?YoH zssh`a)78<)>pIfmy3k|fHF~|-gye{uVDY9{ELiVV!WMkHRBq_FEg%X{0igO z7{AGQFXOiuzs>kP#_G+%;)iBJ@IwpZ1B})CjKvR!2vz)1#vd^Li17)=CmDan_%!3s z8Gpg}YsP08pJRNU@dd`;G5(&h+BLEG;Rix>U)H8(wf%6J`JWkIVf+i@-x*(H+|9U` zaUbJ987Ds&en_*o0Cm<6PR0WnyBO>J(Jp=%!gwg-VT{Kz_AnmDcs%0?j3+Xl#CWpJ z*=9*3I~ZKME-x?Vac>M{+w09%|IFfOI1q|uuP+OP!cp%My8N5gPW?qlQJmmRVL{pS ze|UQY2h0*f4YVR1@Tll99KHGs{;iBhKV6J-ANu6mX?J@N{c*e5f1HIrx$5?*Ip`OQ z@gGCKN%$wxZx&u_C){G4l?Nx-cg?-t?K4uXb3}hZArgqj!iC}72Xa6k3hj2NtTYTo zAu|+?sgP)y8H|OCKtJ8WSU6~wMfFM5SB+3u5{|_JMPUd;iwc9KrmkZUGXqi6x{Muo zF+)_XZ-v(P4fKQ2)A~M)_e-AE(TASKp>-S~#=$0dZsN0U;`Mh~7n&ERQ}3!>$fseu zKzRCPt`L3zw&^QM1m^Vy8nJh zVw=7a6mO?r0Q5U2e<#M%u223h^zB%aAA{{q;m2aTNBD8rPR9p9~4Z^>JzDjs{Z+8g)F2?T`o-)RI z;psi!FZ>Z4CocRk^e2RGMSn(k+Al5&Pub%Y;XlT4`h;&o@4}RTeh;6bA0hmg=sm)J zg+5Do%1CpCKZo&t;m@Nl5dISS6~a^ISuFfd7;g&Sg?@|hl%3WHe--2Fgr^L4ukhU% z-zYrozXyf?1LKbiPucHj;VJuV7ybs0(H9HF_)!?|6Fw7tzVKtvFBhJ&@sRM8r$&U&!*MEv_oLq~{5&(>$68;b{_8^Czs`%~ zwJQaE_&{=XgB5wLx}9pNa`A%eu!Fvg4E0~muYIcd+b}Ss&hsMY*ZFX&{yoF(UUPY8 H#j^ijbSj({ diff --git a/threads/build/threads/malloc.d b/threads/build/threads/malloc.d deleted file mode 100644 index 020db21..0000000 --- a/threads/build/threads/malloc.d +++ /dev/null @@ -1,8 +0,0 @@ -threads/malloc.o: ../../threads/malloc.c ../../include/threads/malloc.h \ - ../../include/lib/debug.h ../../include/lib/stddef.h \ - ../../include/lib/kernel/list.h ../../include/lib/stdbool.h \ - ../../include/lib/stdint.h ../../include/lib/round.h \ - ../../include/lib/stdio.h ../../include/lib/stdarg.h \ - ../../include/lib/kernel/stdio.h ../../include/lib/string.h \ - ../../include/threads/palloc.h ../../include/threads/synch.h \ - ../../include/threads/vaddr.h ../../include/threads/loader.h diff --git a/threads/build/threads/malloc.o b/threads/build/threads/malloc.o deleted file mode 100644 index 6e62e6199dc87cf0d2e33b80f9c26190a06dbc61..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16752 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 diff --git a/threads/build/threads/mmu.d b/threads/build/threads/mmu.d deleted file mode 100644 index b2ee3f9..0000000 --- a/threads/build/threads/mmu.d +++ /dev/null @@ -1,9 +0,0 @@ -threads/mmu.o: ../../threads/mmu.c ../../include/lib/stdbool.h \ - ../../include/lib/stddef.h ../../include/lib/string.h \ - ../../include/threads/init.h ../../include/lib/debug.h \ - ../../include/lib/stdint.h ../../include/threads/pte.h \ - ../../include/threads/vaddr.h ../../include/threads/loader.h \ - ../../include/threads/palloc.h ../../include/threads/thread.h \ - ../../include/lib/kernel/list.h ../../include/threads/interrupt.h \ - ../../include/threads/mmu.h ../../include/intrinsic.h \ - ../../include/threads/mmu.h diff --git a/threads/build/threads/mmu.o b/threads/build/threads/mmu.o deleted file mode 100644 index 8e0ca2db6fe908652f9d496cf097cf0372ae5a39..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24216 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

AcQ~sGFwE@5&VpX>MP%nz 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 R?S;k<+AoG48EHg#{NEz5U~T{a diff --git a/threads/build/threads/synch.d b/threads/build/threads/synch.d deleted file mode 100644 index bd5eb50..0000000 --- a/threads/build/threads/synch.d +++ /dev/null @@ -1,7 +0,0 @@ -threads/synch.o: ../../threads/synch.c ../../include/threads/synch.h \ - ../../include/lib/kernel/list.h ../../include/lib/stdbool.h \ - ../../include/lib/stddef.h ../../include/lib/stdint.h \ - ../../include/lib/stdio.h ../../include/lib/debug.h \ - ../../include/lib/stdarg.h ../../include/lib/kernel/stdio.h \ - ../../include/lib/string.h ../../include/threads/interrupt.h \ - ../../include/threads/thread.h diff --git a/threads/build/threads/synch.o b/threads/build/threads/synch.o deleted file mode 100644 index 6954f956fbf8cff178dcb53f3f430a6436f4fd0d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24496 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 LY;_m!Q@8(L@Yjpn diff --git a/threads/build/threads/thread.d b/threads/build/threads/thread.d deleted file mode 100644 index a012c71..0000000 --- a/threads/build/threads/thread.d +++ /dev/null @@ -1,11 +0,0 @@ -threads/thread.o: ../../threads/thread.c ../../include/threads/thread.h \ - ../../include/lib/debug.h ../../include/lib/kernel/list.h \ - ../../include/lib/stdbool.h ../../include/lib/stddef.h \ - ../../include/lib/stdint.h ../../include/threads/interrupt.h \ - ../../include/lib/random.h ../../include/lib/stdio.h \ - ../../include/lib/stdarg.h ../../include/lib/kernel/stdio.h \ - ../../include/lib/string.h ../../include/threads/flags.h \ - ../../include/threads/intr-stubs.h ../../include/threads/palloc.h \ - ../../include/threads/synch.h ../../include/threads/vaddr.h \ - ../../include/threads/loader.h ../../include/intrinsic.h \ - ../../include/threads/mmu.h ../../include/threads/pte.h diff --git a/threads/build/threads/thread.o b/threads/build/threads/thread.o deleted file mode 100644 index 89939550c60c8de38c4ad7d51e0af1491817cf75..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36600 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 + int max_priority = PRI_MIN; + enum intr_level old_level; + old_level = intr_disable(); + + struct list_elem *list_elem = list_begin(&ready_list); + struct thread *thread; + while (list_elem != list_end(&ready_list)){ + thread = list_entry(list_elem, struct thread, elem); + if (thread->priority > max_priority) + max_priority = thread->priority; + list_elem = list_next(list_elem); + } + + intr_set_level (old_level); + return max_priority; + // return thread_current ()->priority; } /* Sets the current thread's nice value to NICE. */ @@ -415,6 +430,22 @@ init_thread (struct thread *t, const char *name, int priority) { t->magic = THREAD_MAGIC; } +static struct thread* pop_max_priority_thread(void){ + struct list_elem *list_elem; + struct thread *thread; + int target_priority = thread_get_priority(); + + list_elem = list_begin(&ready_list); + while (list_elem != list_end(&ready_list)){ + thread = list_entry(list_elem, struct thread, elem); + if (thread ->priority == target_priority){ + list_remove(list_elem); + return thread; + } + list_elem = list_next(list_elem); + } +} + /* Chooses and returns the next thread to be scheduled. Should return a thread from the run queue, unless the run queue is empty. (If the running thread can continue running, then it @@ -425,7 +456,8 @@ next_thread_to_run (void) { if (list_empty (&ready_list)) return idle_thread; else - return list_entry (list_pop_front (&ready_list), struct thread, elem); + return pop_max_priority_thread(); + // return list_entry(list_pop_front(&ready_list), struct thread, elem); } /* Use iretq to launch the thread */ @@ -593,7 +625,6 @@ allocate_tid (void) { return tid; } - void thread_sleep(int64_t ticks){ struct thread *curr = thread_current (); enum intr_level old_level; @@ -614,7 +645,7 @@ void thread_sleep(int64_t ticks){ void thread_awake(int64_t ticks){ struct list_elem *list_elem; struct thread *thread; - int64_t next_ticks = ticks; + int64_t next_ticks = NULL; if (!list_empty(&sleep_list)){ list_elem = list_begin(&sleep_list); @@ -625,12 +656,9 @@ void thread_awake(int64_t ticks){ thread_unblock(thread); continue; } - else{ - if (next_ticks == ticks) - next_ticks = thread->wakeup_tick; - else if(next_ticks > thread->wakeup_tick) - next_ticks = thread->wakeup_tick; - } + else if (next_ticks == NULL || next_ticks > thread->wakeup_tick) + next_ticks = thread->wakeup_tick; + list_elem = list_next(list_elem); } update_next_tick_to_awake(next_ticks); From e883fb9ce7624e6aac22bb4e272bfcd798f09f32 Mon Sep 17 00:00:00 2001 From: jnl1128 Date: Mon, 14 Nov 2022 16:31:42 +0000 Subject: [PATCH 05/34] priority change --- .vscode/settings.json | 3 +- devices/timer.c | 1 - include/threads/thread.h | 1 + threads/thread.c | 83 ++++++++++++++++++++++++++-------------- 4 files changed, 57 insertions(+), 31 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index 2cd0849..6113e0e 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -3,6 +3,7 @@ "list.h": "c", "synch.h": "c", "syscall.h": "c", - "thread.h": "c" + "thread.h": "c", + "*.inc": "c" } } \ No newline at end of file diff --git a/devices/timer.c b/devices/timer.c index 68537b8..12c5056 100644 --- a/devices/timer.c +++ b/devices/timer.c @@ -134,7 +134,6 @@ timer_interrupt (struct intr_frame *args UNUSED) { thread_tick (); if (ticks >= get_next_tick_to_awake()) thread_awake(ticks); - } /* Returns true if LOOPS iterations waits for more than one timer diff --git a/include/threads/thread.h b/include/threads/thread.h index 1080db0..e12f150 100644 --- a/include/threads/thread.h +++ b/include/threads/thread.h @@ -91,6 +91,7 @@ struct thread { enum thread_status status; /* Thread state. */ char name[16]; /* Name (for debugging purposes). */ int priority; /* Priority. */ + int original_priority; int64_t wakeup_tick; /* Shared between thread.c and synch.c. */ diff --git a/threads/thread.c b/threads/thread.c index 973f402..1889d4e 100644 --- a/threads/thread.c +++ b/threads/thread.c @@ -183,11 +183,12 @@ thread_print_stats (void) { tid_t thread_create (const char *name, int priority, thread_func *function, void *aux) { + struct thread *t; tid_t tid; ASSERT (function != NULL); - + /* Allocate thread. */ t = palloc_get_page (PAL_ZERO); if (t == NULL) @@ -210,7 +211,6 @@ thread_create (const char *name, int priority, /* Add to run queue. */ thread_unblock (t); - return tid; } @@ -246,7 +246,11 @@ thread_unblock (struct thread *t) { ASSERT (t->status == THREAD_BLOCKED); list_push_back (&ready_list, &t->elem); t->status = THREAD_READY; - intr_set_level (old_level); + intr_set_level(old_level); + + if (t != initial_thread && t->priority > thread_current() ->priority) + thread_yield(); + } /* Returns the name of the running thread. */ @@ -315,28 +319,35 @@ thread_yield (void) { /* Sets the current thread's priority to NEW_PRIORITY. */ void thread_set_priority (int new_priority) { - thread_current ()->priority = new_priority; + enum intr_level old_level; + old_level = intr_disable(); + int tmp = thread_current()->priority; + thread_current()->priority = new_priority; + intr_set_level(old_level); + if (thread_current()->priority < tmp) + thread_yield(); } /* Returns the current thread's priority. */ int thread_get_priority (void) { - int max_priority = PRI_MIN; - enum intr_level old_level; - old_level = intr_disable(); - - struct list_elem *list_elem = list_begin(&ready_list); - struct thread *thread; - while (list_elem != list_end(&ready_list)){ - thread = list_entry(list_elem, struct thread, elem); - if (thread->priority > max_priority) - max_priority = thread->priority; - list_elem = list_next(list_elem); - } - intr_set_level (old_level); - return max_priority; - // return thread_current ()->priority; + // enum intr_level old_level; + // old_level = intr_disable(); + // int max_priority = PRI_MIN; + // if (!list_empty(&ready_list)){ + // struct list_elem *list_elem = list_begin(&ready_list); + // struct thread *thread; + // while (list_elem != list_end(&ready_list)){ + // thread = list_entry(list_elem, struct thread, elem); + // if (thread->priority > max_priority) + // max_priority = thread->priority; + // list_elem = list_next(list_elem); + // } + // } + // intr_set_level (old_level); + // return max_priority; + return thread_current ()->priority; } /* Sets the current thread's nice value to NICE. */ @@ -345,7 +356,7 @@ thread_set_nice (int nice UNUSED) { /* TODO: Your implementation goes here */ } -/* Returns the current thread's nice value. */ +/* Returns the current thread's nice intr_set_level (old_level);value. */ int thread_get_nice (void) { /* TODO: Your implementation goes here */ @@ -431,19 +442,32 @@ init_thread (struct thread *t, const char *name, int priority) { } static struct thread* pop_max_priority_thread(void){ + struct list_elem *list_elem; struct thread *thread; - int target_priority = thread_get_priority(); + + enum intr_level old_level; + old_level = intr_disable(); + + int max_priority = PRI_MIN; + struct list_elem *max_priority_list_elem; + struct thread *max_priority_thread; list_elem = list_begin(&ready_list); while (list_elem != list_end(&ready_list)){ thread = list_entry(list_elem, struct thread, elem); - if (thread ->priority == target_priority){ - list_remove(list_elem); - return thread; + if (thread ->priority >= max_priority){ + max_priority = thread->priority; + max_priority_thread = thread; + max_priority_list_elem = list_elem; } list_elem = list_next(list_elem); } + + list_remove(max_priority_list_elem); + intr_set_level(old_level); + + return max_priority_thread; } /* Chooses and returns the next thread to be scheduled. Should @@ -457,7 +481,7 @@ next_thread_to_run (void) { return idle_thread; else return pop_max_priority_thread(); - // return list_entry(list_pop_front(&ready_list), struct thread, elem); + // return list_entry(list_pop_front(&ready_list), struct thread, elem); } /* Use iretq to launch the thread */ @@ -637,7 +661,8 @@ void thread_sleep(int64_t ticks){ list_push_back(&sleep_list, &curr->elem); thread_block(); - update_next_tick_to_awake(ticks); + if (ticks < get_next_tick_to_awake()) + update_next_tick_to_awake(ticks); intr_set_level (old_level); } @@ -645,7 +670,7 @@ void thread_sleep(int64_t ticks){ void thread_awake(int64_t ticks){ struct list_elem *list_elem; struct thread *thread; - int64_t next_ticks = NULL; + int64_t next_ticks = INT64_MAX; if (!list_empty(&sleep_list)){ list_elem = list_begin(&sleep_list); @@ -656,9 +681,9 @@ void thread_awake(int64_t ticks){ thread_unblock(thread); continue; } - else if (next_ticks == NULL || next_ticks > thread->wakeup_tick) + else if (next_ticks > thread->wakeup_tick){ next_ticks = thread->wakeup_tick; - + } list_elem = list_next(list_elem); } update_next_tick_to_awake(next_ticks); From eaab2b7a3063e0f780eb1c9eff1ca790d1531f1a Mon Sep 17 00:00:00 2001 From: ngngs Date: Tue, 15 Nov 2022 14:37:03 +0900 Subject: [PATCH 06/34] alarm-priority implemented --- threads/build/Makefile | 64 ---------------------- threads/thread.c | 117 +++++++++++++++++++++++++---------------- 2 files changed, 73 insertions(+), 108 deletions(-) delete mode 100644 threads/build/Makefile diff --git a/threads/build/Makefile b/threads/build/Makefile deleted file mode 100644 index b8a8503..0000000 --- a/threads/build/Makefile +++ /dev/null @@ -1,64 +0,0 @@ -# -*- makefile -*- - -SRCDIR = ../.. - -all: os.dsk - -include ../../Make.config -include ../Make.vars -include ../../tests/Make.tests - -# Compiler and assembler options. -os.dsk: CPPFLAGS += -I$(SRCDIR)/lib/kernel - -# Core kernel. -include ../../threads/targets.mk -# User process code. -include ../../userprog/targets.mk -# Virtual memory code. -include ../../vm/targets.mk -# Filesystem code. -include ../../filesys/targets.mk -# Library code shared between kernel and user programs. -include ../../lib/targets.mk -# Kernel-specific library code. -include ../../lib/kernel/targets.mk -# Device driver code. -include ../../devices/targets.mk - -SOURCES = $(foreach dir,$(KERNEL_SUBDIRS),$($(dir)_SRC)) -OBJECTS = $(patsubst %.c,%.o,$(patsubst %.S,%.o,$(SOURCES))) -DEPENDS = $(patsubst %.o,%.d,$(OBJECTS)) - -threads/kernel.lds.s: CPPFLAGS += -P -threads/kernel.lds.s: threads/kernel.lds.S - -kernel.o: threads/kernel.lds.s $(OBJECTS) - $(LD) $(LDFLAGS) -T $< -o $@ $(OBJECTS) - -kernel.bin: kernel.o - $(OBJCOPY) -O binary -R .note -R .comment -S $< $@.tmp - dd if=$@.tmp of=$@ bs=4096 conv=sync - rm $@.tmp - -threads/loader.o: threads/loader.S kernel.bin - $(CC) -c $< -o $@ $(ASFLAGS) $(CPPFLAGS) $(DEFINES) -DKERNEL_LOAD_PAGES=`perl -e 'print +(-s "kernel.bin") / 4096;'` - -loader.bin: threads/loader.o - $(LD) $(LDFLAGS) -N -e start -Ttext 0x7c00 --oformat binary -o $@ $< - -os.dsk: loader.bin kernel.bin - cat $^ > $@ - -clean:: - rm -f $(OBJECTS) $(DEPENDS) - rm -f threads/loader.o threads/kernel.lds.s threads/loader.d - rm -f kernel.o kernel.lds.s - rm -f kernel.bin loader.bin os.dsk - rm -f bochsout.txt bochsrc.txt - rm -f results grade - -Makefile: $(SRCDIR)/Makefile.build - cp $< $@ - --include $(DEPENDS) diff --git a/threads/thread.c b/threads/thread.c index 33424cb..ee8c7c8 100644 --- a/threads/thread.c +++ b/threads/thread.c @@ -66,15 +66,6 @@ static void do_schedule(int status); static void schedule (void); static tid_t allocate_tid (void); -// Project 1. Alarm clock 프로토타입 -// static struct list blocked_list; -void thread_sleep(int64_t ticks); -void thread_awake(int64_t ticks); -void update_next_tick_to_awake(int64_t ticks); -int64_t get_next_tick_to_awake(void); -static struct list blocked_list; - - /* Returns true if T appears to point to a valid thread. */ #define is_thread(t) ((t) != NULL && (t)->magic == THREAD_MAGIC) @@ -123,9 +114,6 @@ thread_init (void) { list_init(&sleep_list); list_init(&destruction_req); - // Project 1. Alarm Clock - list_init(&blocked_list); - /* Set up a thread structure for the running thread. */ initial_thread = running_thread (); init_thread (initial_thread, "main", PRI_DEFAULT); @@ -195,11 +183,12 @@ thread_print_stats (void) { tid_t thread_create (const char *name, int priority, thread_func *function, void *aux) { + struct thread *t; tid_t tid; ASSERT (function != NULL); - + /* Allocate thread. */ t = palloc_get_page (PAL_ZERO); if (t == NULL) @@ -222,7 +211,6 @@ thread_create (const char *name, int priority, /* Add to run queue. */ thread_unblock (t); - return tid; } @@ -256,9 +244,29 @@ thread_unblock (struct thread *t) { old_level = intr_disable (); ASSERT (t->status == THREAD_BLOCKED); - list_push_back (&ready_list, &t->elem); + + struct list_elem * list_elem = list_begin(&ready_list); + struct thread *thread; + + int flag = 0; + for (list_elem; list_elem != list_end(&ready_list); list_elem = list_next(list_elem)) + { + thread = list_entry(list_elem, struct thread, elem); + // printf("현재 readylist thread의 priority는 %d, 내가 넣을 프라이어티는 %d\n", thread->priority, t->priority); + if (t->priority >= thread->priority){ + list_insert(list_elem, &t->elem); + flag = 1; + break; + } + else + continue; + } + if (flag == 0) list_push_back(&ready_list, &t->elem); + + // list_push_back (&ready_list, &t->elem); t->status = THREAD_READY; - intr_set_level (old_level); + + intr_set_level(old_level); } /* Returns the name of the running thread. */ @@ -308,7 +316,7 @@ thread_exit (void) { NOT_REACHED (); } -/* Yields the CPU. The current thread is not put to and +/* Yields the CPU. The current thread is not put to sleep and may be scheduled again immediately at the scheduler's whim. */ void thread_yield (void) { @@ -327,28 +335,35 @@ thread_yield (void) { /* Sets the current thread's priority to NEW_PRIORITY. */ void thread_set_priority (int new_priority) { - thread_current ()->priority = new_priority; + enum intr_level old_level; + old_level = intr_disable(); + int tmp = thread_current()->priority; + thread_current()->priority = new_priority; + intr_set_level(old_level); + if (thread_current()->priority < tmp) + thread_yield(); } /* Returns the current thread's priority. */ int thread_get_priority (void) { - int max_priority = PRI_MIN; - enum intr_level old_level; - old_level = intr_disable(); - struct list_elem *list_elem = list_begin(&ready_list); - struct thread *thread; - while (list_elem != list_end(&ready_list)){ - thread = list_entry(list_elem, struct thread, elem); - if (thread->priority > max_priority) - max_priority = thread->priority; - list_elem = list_next(list_elem); - } - - intr_set_level (old_level); - return max_priority; - // return thread_current ()->priority; + // enum intr_level old_level; + // old_level = intr_disable(); + // int max_priority = PRI_MIN; + // if (!list_empty(&ready_list)){ + // struct list_elem *list_elem = list_begin(&ready_list); + // struct thread *thread; + // while (list_elem != list_end(&ready_list)){ + // thread = list_entry(list_elem, struct thread, elem); + // if (thread->priority > max_priority) + // max_priority = thread->priority; + // list_elem = list_next(list_elem); + // } + // } + // intr_set_level (old_level); + // return max_priority; + return thread_current ()->priority; } /* Sets the current thread's nice value to NICE. */ @@ -357,7 +372,7 @@ thread_set_nice (int nice UNUSED) { /* TODO: Your implementation goes here */ } -/* Returns the current thread's nice value. */ +/* Returns the current thread's nice intr_set_level (old_level);value. */ int thread_get_nice (void) { /* TODO: Your implementation goes here */ @@ -443,19 +458,32 @@ init_thread (struct thread *t, const char *name, int priority) { } static struct thread* pop_max_priority_thread(void){ + struct list_elem *list_elem; struct thread *thread; - int target_priority = thread_get_priority(); + + enum intr_level old_level; + old_level = intr_disable(); + + int max_priority = PRI_MIN; + struct list_elem *max_priority_list_elem; + struct thread *max_priority_thread; list_elem = list_begin(&ready_list); while (list_elem != list_end(&ready_list)){ thread = list_entry(list_elem, struct thread, elem); - if (thread ->priority == target_priority){ - list_remove(list_elem); - return thread; + if (thread ->priority >= max_priority){ + max_priority = thread->priority; + max_priority_thread = thread; + max_priority_list_elem = list_elem; } list_elem = list_next(list_elem); } + + list_remove(max_priority_list_elem); + intr_set_level(old_level); + + return max_priority_thread; } /* Chooses and returns the next thread to be scheduled. Should @@ -469,7 +497,7 @@ next_thread_to_run (void) { return idle_thread; else return pop_max_priority_thread(); - // return list_entry(list_pop_front(&ready_list), struct thread, elem); + // return list_entry(list_pop_front(&ready_list), struct thread, elem); } /* Use iretq to launch the thread */ @@ -649,7 +677,8 @@ void thread_sleep(int64_t ticks){ list_push_back(&sleep_list, &curr->elem); thread_block(); - update_next_tick_to_awake(ticks); + if (ticks < get_next_tick_to_awake()) + update_next_tick_to_awake(ticks); intr_set_level (old_level); } @@ -657,7 +686,7 @@ void thread_sleep(int64_t ticks){ void thread_awake(int64_t ticks){ struct list_elem *list_elem; struct thread *thread; - int64_t next_ticks = NULL; + int64_t next_ticks = INT64_MAX; if (!list_empty(&sleep_list)){ list_elem = list_begin(&sleep_list); @@ -668,9 +697,9 @@ void thread_awake(int64_t ticks){ thread_unblock(thread); continue; } - else if (next_ticks == NULL || next_ticks > thread->wakeup_tick) + else if (next_ticks > thread->wakeup_tick){ next_ticks = thread->wakeup_tick; - + } list_elem = list_next(list_elem); } update_next_tick_to_awake(next_ticks); @@ -683,4 +712,4 @@ void update_next_tick_to_awake(int64_t ticks){ int64_t get_next_tick_to_awake(void){ return next_tick_to_awake; -} +} \ No newline at end of file From d05f27362f049b97689e41ab16fd4a781e4b3436 Mon Sep 17 00:00:00 2001 From: jnl1128 Date: Tue, 15 Nov 2022 12:15:59 +0000 Subject: [PATCH 07/34] priority_donate_one --- threads/synch.c | 10 ++++++++-- threads/thread.c | 2 ++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/threads/synch.c b/threads/synch.c index b74aa4e..d898570 100644 --- a/threads/synch.c +++ b/threads/synch.c @@ -112,8 +112,6 @@ sema_up (struct semaphore *sema) { sema->value++; if (!list_empty (&sema->waiters)) thread_unblock (list_entry (list_pop_front (&sema->waiters), struct thread, elem)); - - intr_set_level (old_level); } @@ -189,8 +187,12 @@ lock_acquire (struct lock *lock) { ASSERT (!intr_context ()); ASSERT (!lock_held_by_current_thread (lock)); + if (lock->holder != NULL && (lock->holder->priority < thread_current()->priority)) + lock->holder->priority = thread_current()->priority; + sema_down (&lock->semaphore); lock->holder = thread_current (); + } /* Tries to acquires LOCK and returns true if successful or false @@ -223,6 +225,10 @@ lock_release (struct lock *lock) { ASSERT (lock != NULL); ASSERT (lock_held_by_current_thread (lock)); + if (lock->holder->priority != lock->holder->original_priority){ + lock->holder->priority = lock->holder->original_priority; + } + lock->holder = NULL; sema_up (&lock->semaphore); } diff --git a/threads/thread.c b/threads/thread.c index d716180..78fef70 100644 --- a/threads/thread.c +++ b/threads/thread.c @@ -325,6 +325,7 @@ void thread_set_priority (int new_priority) { int tmp = thread_current()->priority; thread_current()->priority = new_priority; + thread_current()->original_priority = new_priority; if (!(intr_context()) && thread_current()->priority < tmp) thread_yield(); @@ -425,6 +426,7 @@ init_thread (struct thread *t, const char *name, int priority) { t->tf.rsp = (uint64_t) t + PGSIZE - sizeof (void *); t->priority = priority; t->magic = THREAD_MAGIC; + t->original_priority = priority; } /* Chooses and returns the next thread to be scheduled. Should From 9957aaececac38a53f5d63da9c11df4d47db7fc0 Mon Sep 17 00:00:00 2001 From: jnl1128 Date: Tue, 15 Nov 2022 16:51:44 +0000 Subject: [PATCH 08/34] before priority_hy --- .vscode/settings.json | 3 ++- include/threads/thread.h | 7 +++++-- threads/synch.c | 2 +- threads/thread.c | 23 +++++++++++++++++------ 4 files changed, 25 insertions(+), 10 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index 6113e0e..6fa46ab 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -4,6 +4,7 @@ "synch.h": "c", "syscall.h": "c", "thread.h": "c", - "*.inc": "c" + "*.inc": "c", + "interrupt.h": "c" } } \ No newline at end of file diff --git a/include/threads/thread.h b/include/threads/thread.h index bbbba1a..3848310 100644 --- a/include/threads/thread.h +++ b/include/threads/thread.h @@ -93,11 +93,11 @@ struct thread { int priority; /* Priority. */ int original_priority; int64_t wakeup_tick; - - int64_t wakeup_time; // 일어나야할 시간 /* Shared between thread.c and synch.c. */ struct list_elem elem; /* List element. */ + struct list wait_on_lock; + #ifdef USERPROG /* Owned by userprog/process.c. */ uint64_t *pml4; /* Page map level 4 */ @@ -138,6 +138,7 @@ void thread_yield (void); int thread_get_priority (void); void thread_set_priority (int); +void thread_insert_priority(struct list *, struct thread *); int thread_get_nice (void); void thread_set_nice (int); @@ -151,4 +152,6 @@ void thread_awake(int64_t ticks); void update_next_tick_to_awake(int64_t ticks); int64_t get_next_tick_to_awake(void); +void test_max_priority(void); + #endif /* threads/thread.h */ diff --git a/threads/synch.c b/threads/synch.c index d898570..724aa7d 100644 --- a/threads/synch.c +++ b/threads/synch.c @@ -327,4 +327,4 @@ cond_broadcast (struct condition *cond, struct lock *lock) { while (!list_empty (&cond->waiters)) cond_signal (cond, lock); -} +} \ No newline at end of file diff --git a/threads/thread.c b/threads/thread.c index 78fef70..2453887 100644 --- a/threads/thread.c +++ b/threads/thread.c @@ -212,6 +212,10 @@ thread_create (const char *name, int priority, /* Add to run queue. */ thread_unblock (t); + + if (!(intr_context()) && priority > thread_get_priority()){ + thread_yield(); + } return tid; } @@ -250,9 +254,6 @@ thread_unblock (struct thread *t) { t->status = THREAD_READY; - if (!(intr_context()) && t->priority > thread_current()->priority) - thread_yield(); - intr_set_level(old_level); } @@ -325,10 +326,8 @@ void thread_set_priority (int new_priority) { int tmp = thread_current()->priority; thread_current()->priority = new_priority; - thread_current()->original_priority = new_priority; - if (!(intr_context()) && thread_current()->priority < tmp) - thread_yield(); + test_max_priority(); } /* Returns the current thread's priority. */ @@ -337,6 +336,18 @@ thread_get_priority (void) { return thread_current ()->priority; } +void +test_max_priority(void){ + if (!list_empty(&ready_list)){ + struct list_elem *list_elem = list_begin(&ready_list); + struct thread *thread = list_entry(list_elem, struct thread, elem); + if (thread->priority > thread_current()->priority){ + if (!intr_context()) + thread_yield(); + } + } +} + /* Sets the current thread's nice value to NICE. */ void thread_set_nice (int nice UNUSED) { From d54aa29346ded7f3787c24a569f2e91b52b1e4e1 Mon Sep 17 00:00:00 2001 From: jnl1128 Date: Tue, 15 Nov 2022 16:55:08 +0000 Subject: [PATCH 09/34] priority_part1(fifo, preempt,change) --- threads/synch.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/threads/synch.c b/threads/synch.c index 724aa7d..dc75178 100644 --- a/threads/synch.c +++ b/threads/synch.c @@ -187,8 +187,8 @@ lock_acquire (struct lock *lock) { ASSERT (!intr_context ()); ASSERT (!lock_held_by_current_thread (lock)); - if (lock->holder != NULL && (lock->holder->priority < thread_current()->priority)) - lock->holder->priority = thread_current()->priority; + // if (lock->holder != NULL && (lock->holder->priority < thread_current()->priority)) + // lock->holder->priority = thread_current()->priority; sema_down (&lock->semaphore); lock->holder = thread_current (); @@ -225,9 +225,9 @@ lock_release (struct lock *lock) { ASSERT (lock != NULL); ASSERT (lock_held_by_current_thread (lock)); - if (lock->holder->priority != lock->holder->original_priority){ - lock->holder->priority = lock->holder->original_priority; - } + // if (lock->holder->priority != lock->holder->original_priority){ + // lock->holder->priority = lock->holder->original_priority; + // } lock->holder = NULL; sema_up (&lock->semaphore); From 117ebf2c92f482224db057c7f0f72a43b62932d0 Mon Sep 17 00:00:00 2001 From: jnl1128 Date: Tue, 15 Nov 2022 18:41:53 +0000 Subject: [PATCH 10/34] alarm_priority --- include/threads/thread.h | 3 +++ threads/synch.c | 18 +++++++++++++++--- threads/thread.c | 28 ++++++++++++++++++++++++++++ 3 files changed, 46 insertions(+), 3 deletions(-) diff --git a/include/threads/thread.h b/include/threads/thread.h index 3848310..51f0348 100644 --- a/include/threads/thread.h +++ b/include/threads/thread.h @@ -139,6 +139,7 @@ void thread_yield (void); int thread_get_priority (void); void thread_set_priority (int); void thread_insert_priority(struct list *, struct thread *); +struct list_elem * pop_max_priority_thread(struct list *); int thread_get_nice (void); void thread_set_nice (int); @@ -151,7 +152,9 @@ void thread_sleep(int64_t ticks); void thread_awake(int64_t ticks); void update_next_tick_to_awake(int64_t ticks); int64_t get_next_tick_to_awake(void); +int get_ready_list_max_priority(void); void test_max_priority(void); +char is_readylist_empty(void); #endif /* threads/thread.h */ diff --git a/threads/synch.c b/threads/synch.c index dc75178..3f6c1ee 100644 --- a/threads/synch.c +++ b/threads/synch.c @@ -109,9 +109,18 @@ sema_up (struct semaphore *sema) { ASSERT (sema != NULL); old_level = intr_disable (); + + + if (!list_empty (&sema->waiters)){ + thread_unblock(list_entry(pop_max_priority_thread(&sema->waiters), struct thread, elem)); + } sema->value++; - if (!list_empty (&sema->waiters)) - thread_unblock (list_entry (list_pop_front (&sema->waiters), struct thread, elem)); + + if(!is_readylist_empty()){ + if (thread_current()->priority < get_ready_list_max_priority()) + thread_yield(); + } + intr_set_level (old_level); } @@ -289,7 +298,10 @@ cond_wait (struct condition *cond, struct lock *lock) { ASSERT (lock_held_by_current_thread (lock)); sema_init (&waiter.semaphore, 0); - list_push_back (&cond->waiters, &waiter.elem); + struct list_elem *l = &waiter.elem; + struct thread *t = list_entry(l, struct thread, elem); + thread_insert_priority(&cond->waiters, t); + // list_push_back(&cond->waiters, t); lock_release (lock); sema_down (&waiter.semaphore); lock_acquire (lock); diff --git a/threads/thread.c b/threads/thread.c index 2453887..15f063e 100644 --- a/threads/thread.c +++ b/threads/thread.c @@ -308,6 +308,7 @@ thread_exit (void) { may be scheduled again immediately at the scheduler's whim. */ void thread_yield (void) { + struct thread *curr = thread_current (); enum intr_level old_level; @@ -686,4 +687,31 @@ void thread_insert_priority(struct list *list, struct thread *curr){ } if (flag == 0) list_push_back(list, &curr->elem); +} + +struct list_elem *pop_max_priority_thread(struct list *list){ + struct list_elem *list_elem = list_begin(list); + struct thread *thread; + struct list_elem *target_list_elem; + int max_p = -1; + while (list_elem != list_end(list)) + { + thread = list_entry(list_elem, struct thread, elem); + if (thread->priority > max_p){ + max_p = thread->priority; + target_list_elem = list_elem; + } + list_elem = list_next(list_elem); + } + list_remove(target_list_elem); + return target_list_elem; +} + +char is_readylist_empty(void){ + return !list_empty(&ready_list) ? 0 : 1; +} + +int get_ready_list_max_priority(){ + struct thread *thread = list_entry(list_begin(&ready_list), struct thread, elem); + return thread->priority; } \ No newline at end of file From 33e2e89061b93fa2114fc1940ce35804eaf25dca Mon Sep 17 00:00:00 2001 From: jnl1128 Date: Wed, 16 Nov 2022 06:12:53 +0000 Subject: [PATCH 11/34] priority_condvar --- .vscode/settings.json | 3 ++- include/threads/synch.h | 2 ++ include/threads/thread.h | 9 ++++--- threads/synch.c | 45 ++++++++++++++++++++------------ threads/thread.c | 56 ++++++++++------------------------------ 5 files changed, 52 insertions(+), 63 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index 6fa46ab..7ac8643 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -5,6 +5,7 @@ "syscall.h": "c", "thread.h": "c", "*.inc": "c", - "interrupt.h": "c" + "interrupt.h": "c", + "debug.h": "c" } } \ No newline at end of file diff --git a/include/threads/synch.h b/include/threads/synch.h index 3d089fd..a70518d 100644 --- a/include/threads/synch.h +++ b/include/threads/synch.h @@ -38,6 +38,8 @@ void cond_wait (struct condition *, struct lock *); void cond_signal (struct condition *, struct lock *); void cond_broadcast (struct condition *, struct lock *); +bool cmp_sem_priority(const struct list_elem *a, const struct list_elem *b, void *aux); + /* Optimization barrier. * * The compiler will not reorder operations across an diff --git a/include/threads/thread.h b/include/threads/thread.h index 51f0348..8e39055 100644 --- a/include/threads/thread.h +++ b/include/threads/thread.h @@ -138,8 +138,6 @@ void thread_yield (void); int thread_get_priority (void); void thread_set_priority (int); -void thread_insert_priority(struct list *, struct thread *); -struct list_elem * pop_max_priority_thread(struct list *); int thread_get_nice (void); void thread_set_nice (int); @@ -152,9 +150,14 @@ void thread_sleep(int64_t ticks); void thread_awake(int64_t ticks); void update_next_tick_to_awake(int64_t ticks); int64_t get_next_tick_to_awake(void); + +char is_readylist_empty(void); int get_ready_list_max_priority(void); + void test_max_priority(void); +bool cmp_priority(const struct list_elem *a_, const struct list_elem *b_, + void *aux UNUSED); + -char is_readylist_empty(void); #endif /* threads/thread.h */ diff --git a/threads/synch.c b/threads/synch.c index 3f6c1ee..035340c 100644 --- a/threads/synch.c +++ b/threads/synch.c @@ -66,7 +66,7 @@ sema_down (struct semaphore *sema) { old_level = intr_disable (); while (sema->value == 0) { - thread_insert_priority(&sema->waiters, thread_current()); + list_insert_ordered(&sema->waiters, &thread_current()->elem, cmp_priority, NULL); thread_block(); } sema->value--; @@ -112,7 +112,8 @@ sema_up (struct semaphore *sema) { if (!list_empty (&sema->waiters)){ - thread_unblock(list_entry(pop_max_priority_thread(&sema->waiters), struct thread, elem)); + list_sort(&sema->waiters, cmp_priority, NULL); + thread_unblock(list_entry(list_pop_front(&sema->waiters), struct thread, elem)); } sema->value++; @@ -232,11 +233,7 @@ lock_try_acquire (struct lock *lock) { void lock_release (struct lock *lock) { ASSERT (lock != NULL); - ASSERT (lock_held_by_current_thread (lock)); - - // if (lock->holder->priority != lock->holder->original_priority){ - // lock->holder->priority = lock->holder->original_priority; - // } + ASSERT(lock_held_by_current_thread(lock)); lock->holder = NULL; sema_up (&lock->semaphore); @@ -296,13 +293,11 @@ cond_wait (struct condition *cond, struct lock *lock) { ASSERT (lock != NULL); ASSERT (!intr_context ()); ASSERT (lock_held_by_current_thread (lock)); - - sema_init (&waiter.semaphore, 0); - struct list_elem *l = &waiter.elem; - struct thread *t = list_entry(l, struct thread, elem); - thread_insert_priority(&cond->waiters, t); - // list_push_back(&cond->waiters, t); - lock_release (lock); + + sema_init(&waiter.semaphore, 0); + // list_push_back(&cond->waiters, &waiter.elem); + list_insert_ordered(&cond->waiters, &waiter.elem, cmp_sem_priority, NULL); + lock_release(lock); sema_down (&waiter.semaphore); lock_acquire (lock); } @@ -321,9 +316,14 @@ cond_signal (struct condition *cond, struct lock *lock UNUSED) { ASSERT (!intr_context ()); ASSERT (lock_held_by_current_thread (lock)); - if (!list_empty (&cond->waiters)) - sema_up (&list_entry (list_pop_front (&cond->waiters), - struct semaphore_elem, elem)->semaphore); + if (!list_empty (&cond->waiters)){ + list_sort(&cond->waiters, cmp_sem_priority, NULL); + sema_up(&list_entry(list_pop_front(&cond->waiters), + struct semaphore_elem, elem) + ->semaphore); + } + + } /* Wakes up all threads, if any, waiting on COND (protected by @@ -339,4 +339,15 @@ cond_broadcast (struct condition *cond, struct lock *lock) { while (!list_empty (&cond->waiters)) cond_signal (cond, lock); +} + +bool +cmp_sem_priority(const struct list_elem *a, const struct list_elem *b, void *aux UNUSED){ + struct semaphore_elem *sa = list_entry(a, struct semaphore_elem, elem); + struct semaphore_elem *sb = list_entry(b, struct semaphore_elem, elem); + + struct thread *ta = list_entry(list_begin(&sa->semaphore.waiters), struct thread, elem); + struct thread *tb = list_entry(list_begin(&sb->semaphore.waiters), struct thread, elem); + + return ta->priority > tb->priority; } \ No newline at end of file diff --git a/threads/thread.c b/threads/thread.c index 15f063e..4f44f0f 100644 --- a/threads/thread.c +++ b/threads/thread.c @@ -65,7 +65,6 @@ static void init_thread (struct thread *, const char *name, int priority); static void do_schedule(int status); static void schedule (void); static tid_t allocate_tid (void); - /* Returns true if T appears to point to a valid thread. */ #define is_thread(t) ((t) != NULL && (t)->magic == THREAD_MAGIC) @@ -250,7 +249,8 @@ thread_unblock (struct thread *t) { old_level = intr_disable (); ASSERT (t->status == THREAD_BLOCKED); - thread_insert_priority(&ready_list, t); + list_insert_ordered(&ready_list, &t->elem, cmp_priority, NULL); + // thread_insert_priority(&ready_list, t); t->status = THREAD_READY; @@ -317,7 +317,7 @@ thread_yield (void) { old_level = intr_disable (); if (curr != idle_thread) // list_push_back (&ready_list, &curr->elem); - thread_insert_priority(&ready_list, curr); + list_insert_ordered(&ready_list, &curr->elem, cmp_priority, NULL); do_schedule(THREAD_READY); intr_set_level (old_level); } @@ -669,44 +669,6 @@ int64_t get_next_tick_to_awake(void){ return next_tick_to_awake; } -void thread_insert_priority(struct list *list, struct thread *curr){ - - struct list_elem *list_elem = list_begin(list); - struct thread *thread; - char flag = 0; - for (list_elem; list_elem != list_end(list); list_elem = list_next(list_elem)) - { - thread = list_entry(list_elem, struct thread, elem); - if (curr->priority > thread->priority){ - list_insert(list_elem, &curr->elem); - flag = 1; - break; - } - else - continue; - } - if (flag == 0) list_push_back(list, &curr->elem); - -} - -struct list_elem *pop_max_priority_thread(struct list *list){ - struct list_elem *list_elem = list_begin(list); - struct thread *thread; - struct list_elem *target_list_elem; - int max_p = -1; - while (list_elem != list_end(list)) - { - thread = list_entry(list_elem, struct thread, elem); - if (thread->priority > max_p){ - max_p = thread->priority; - target_list_elem = list_elem; - } - list_elem = list_next(list_elem); - } - list_remove(target_list_elem); - return target_list_elem; -} - char is_readylist_empty(void){ return !list_empty(&ready_list) ? 0 : 1; } @@ -714,4 +676,14 @@ char is_readylist_empty(void){ int get_ready_list_max_priority(){ struct thread *thread = list_entry(list_begin(&ready_list), struct thread, elem); return thread->priority; -} \ No newline at end of file +} + +bool +cmp_priority (const struct list_elem *a_, const struct list_elem *b_, + void *aux UNUSED) +{ + const struct thread *ta = list_entry (a_, struct thread, elem); + const struct thread *tb = list_entry (b_, struct thread, elem); + + return ta->priority > tb->priority; +} From b225640e2df0d9db5f5dad862783b5006c6b16d1 Mon Sep 17 00:00:00 2001 From: jnl1128 Date: Wed, 16 Nov 2022 11:08:52 +0000 Subject: [PATCH 12/34] priority scheduling --- include/threads/thread.h | 16 ++++++--- threads/synch.c | 22 ++++++++---- threads/thread.c | 78 +++++++++++++++++++++++++++++++++++----- 3 files changed, 96 insertions(+), 20 deletions(-) diff --git a/include/threads/thread.h b/include/threads/thread.h index 8e39055..20a863d 100644 --- a/include/threads/thread.h +++ b/include/threads/thread.h @@ -91,12 +91,16 @@ struct thread { enum thread_status status; /* Thread state. 4가지 : ready, blocked, running, dying*/ char name[16]; /* Name (for debugging purposes). */ int priority; /* Priority. */ - int original_priority; + + int init_priority; + struct lock* wait_on_lock; + struct list donations; + struct list_elem donation_elem; + int64_t wakeup_tick; /* Shared between thread.c and synch.c. */ struct list_elem elem; /* List element. */ - - struct list wait_on_lock; + #ifdef USERPROG /* Owned by userprog/process.c. */ @@ -158,6 +162,10 @@ int get_ready_list_max_priority(void); void test_max_priority(void); bool cmp_priority(const struct list_elem *a_, const struct list_elem *b_, void *aux UNUSED); +bool donate_cmp_priority(const struct list_elem *a_, const struct list_elem *b_, + void *aux UNUSED); - +void donate_priority(void); +void remove_with_lock(struct lock *lock); +void refresh_priority(void); #endif /* threads/thread.h */ diff --git a/threads/synch.c b/threads/synch.c index 035340c..caa00a9 100644 --- a/threads/synch.c +++ b/threads/synch.c @@ -197,12 +197,16 @@ lock_acquire (struct lock *lock) { ASSERT (!intr_context ()); ASSERT (!lock_held_by_current_thread (lock)); - // if (lock->holder != NULL && (lock->holder->priority < thread_current()->priority)) - // lock->holder->priority = thread_current()->priority; - - sema_down (&lock->semaphore); - lock->holder = thread_current (); - + if(lock->holder != NULL){ + thread_current()->wait_on_lock = lock; + list_insert_ordered(&lock->holder->donations, &thread_current()->donation_elem, cmp_priority, NULL); + + donate_priority(); + }; + + sema_down(&lock->semaphore); + thread_current()->wait_on_lock = NULL; + lock->holder = thread_current(); } /* Tries to acquires LOCK and returns true if successful or false @@ -236,7 +240,11 @@ lock_release (struct lock *lock) { ASSERT(lock_held_by_current_thread(lock)); lock->holder = NULL; - sema_up (&lock->semaphore); + + remove_with_lock(lock); + refresh_priority(); + + sema_up(&lock->semaphore); } /* Returns true if the current thread holds LOCK, false diff --git a/threads/thread.c b/threads/thread.c index 4f44f0f..a1032df 100644 --- a/threads/thread.c +++ b/threads/thread.c @@ -325,9 +325,9 @@ thread_yield (void) { /* Sets the current thread's priority to NEW_PRIORITY. */ void thread_set_priority (int new_priority) { - int tmp = thread_current()->priority; - thread_current()->priority = new_priority; + thread_current()->init_priority = new_priority; + refresh_priority(); test_max_priority(); } @@ -437,8 +437,10 @@ init_thread (struct thread *t, const char *name, int priority) { strlcpy (t->name, name, sizeof t->name); t->tf.rsp = (uint64_t) t + PGSIZE - sizeof (void *); t->priority = priority; + t->init_priority = priority; + t->wait_on_lock = NULL; + list_init(&t->donations); t->magic = THREAD_MAGIC; - t->original_priority = priority; } /* Chooses and returns the next thread to be scheduled. Should @@ -620,7 +622,8 @@ allocate_tid (void) { return tid; } -void thread_sleep(int64_t ticks){ +void +thread_sleep(int64_t ticks){ struct thread *curr = thread_current (); enum intr_level old_level; @@ -638,7 +641,8 @@ void thread_sleep(int64_t ticks){ intr_set_level (old_level); } -void thread_awake(int64_t ticks){ +void +thread_awake(int64_t ticks){ struct list_elem *list_elem; struct thread *thread; int64_t next_ticks = INT64_MAX; @@ -661,19 +665,23 @@ void thread_awake(int64_t ticks){ } } -void update_next_tick_to_awake(int64_t ticks){ +void +update_next_tick_to_awake(int64_t ticks){ next_tick_to_awake = ticks; } -int64_t get_next_tick_to_awake(void){ +int64_t +get_next_tick_to_awake(void){ return next_tick_to_awake; } -char is_readylist_empty(void){ +char +is_readylist_empty(void){ return !list_empty(&ready_list) ? 0 : 1; } -int get_ready_list_max_priority(){ +int +get_ready_list_max_priority(){ struct thread *thread = list_entry(list_begin(&ready_list), struct thread, elem); return thread->priority; } @@ -687,3 +695,55 @@ cmp_priority (const struct list_elem *a_, const struct list_elem *b_, return ta->priority > tb->priority; } + +bool +donate_cmp_priority(const struct list_elem *a_, const struct list_elem *b_, void *aux UNUSED){ + const struct thread *ta = list_entry (a_, struct thread, donation_elem); + const struct thread *tb = list_entry (b_, struct thread, donation_elem); + + return ta->priority > tb->priority; +} + +void donate_priority(void){ + int depth; + struct thread *curr = thread_current(); + + for (depth = 0; depth < 8; depth++){ + if(! curr->wait_on_lock) + break; + struct thread *holder = curr->wait_on_lock->holder; + holder->priority = curr->priority; + curr = holder; + } +} + +void remove_with_lock(struct lock *lock){ + struct thread *curr = thread_current(); + struct list_elem *d_elem; + + if (!list_empty(&curr->donations)){ + d_elem = list_begin(&curr->donations); + while (d_elem != list_end(&curr->donations)){ + struct thread *thread = list_entry(d_elem, struct thread, donation_elem); + if (thread->wait_on_lock == lock){ + d_elem = list_remove(d_elem); + continue; + } + d_elem = list_next(d_elem); + } + } +} + +// 내 원래 우선순위로 돌리고 +// 나의 도네이션 리스트의 최고와 나를 비교해 +// 도네이션 리스트의 것이 더 크면 바꾼다 +void refresh_priority(void){ + struct thread *curr = thread_current(); + curr->priority = curr->init_priority; + if (!list_empty(&curr->donations)){ + list_sort(&curr->donations, donate_cmp_priority, NULL); + struct thread *thread = list_entry(list_begin(&curr->donations), struct thread, donation_elem); + if (thread->priority > curr->priority) + curr->priority = thread->priority; + } +} From 7e901d5dae2d31b26ec13e19010cabba1f24c90d Mon Sep 17 00:00:00 2001 From: jnl1128 Date: Wed, 16 Nov 2022 19:20:46 +0000 Subject: [PATCH 13/34] refactoring priority scheduling --- threads/synch.c | 22 ++++++---------------- threads/thread.c | 11 +++-------- 2 files changed, 9 insertions(+), 24 deletions(-) diff --git a/threads/synch.c b/threads/synch.c index caa00a9..a1a1b74 100644 --- a/threads/synch.c +++ b/threads/synch.c @@ -110,18 +110,15 @@ sema_up (struct semaphore *sema) { old_level = intr_disable (); - if (!list_empty (&sema->waiters)){ list_sort(&sema->waiters, cmp_priority, NULL); thread_unblock(list_entry(list_pop_front(&sema->waiters), struct thread, elem)); } sema->value++; - - if(!is_readylist_empty()){ - if (thread_current()->priority < get_ready_list_max_priority()) - thread_yield(); - } - + + if (!is_readylist_empty() && (thread_get_priority() < get_ready_list_max_priority())) + thread_yield(); + intr_set_level (old_level); } @@ -200,7 +197,6 @@ lock_acquire (struct lock *lock) { if(lock->holder != NULL){ thread_current()->wait_on_lock = lock; list_insert_ordered(&lock->holder->donations, &thread_current()->donation_elem, cmp_priority, NULL); - donate_priority(); }; @@ -240,10 +236,8 @@ lock_release (struct lock *lock) { ASSERT(lock_held_by_current_thread(lock)); lock->holder = NULL; - remove_with_lock(lock); refresh_priority(); - sema_up(&lock->semaphore); } @@ -303,7 +297,6 @@ cond_wait (struct condition *cond, struct lock *lock) { ASSERT (lock_held_by_current_thread (lock)); sema_init(&waiter.semaphore, 0); - // list_push_back(&cond->waiters, &waiter.elem); list_insert_ordered(&cond->waiters, &waiter.elem, cmp_sem_priority, NULL); lock_release(lock); sema_down (&waiter.semaphore); @@ -327,11 +320,8 @@ cond_signal (struct condition *cond, struct lock *lock UNUSED) { if (!list_empty (&cond->waiters)){ list_sort(&cond->waiters, cmp_sem_priority, NULL); sema_up(&list_entry(list_pop_front(&cond->waiters), - struct semaphore_elem, elem) - ->semaphore); - } - - + struct semaphore_elem, elem)->semaphore); + } } /* Wakes up all threads, if any, waiting on COND (protected by diff --git a/threads/thread.c b/threads/thread.c index a1032df..f077fe6 100644 --- a/threads/thread.c +++ b/threads/thread.c @@ -250,7 +250,6 @@ thread_unblock (struct thread *t) { ASSERT (t->status == THREAD_BLOCKED); list_insert_ordered(&ready_list, &t->elem, cmp_priority, NULL); - // thread_insert_priority(&ready_list, t); t->status = THREAD_READY; @@ -316,7 +315,6 @@ thread_yield (void) { old_level = intr_disable (); if (curr != idle_thread) - // list_push_back (&ready_list, &curr->elem); list_insert_ordered(&ready_list, &curr->elem, cmp_priority, NULL); do_schedule(THREAD_READY); intr_set_level (old_level); @@ -342,7 +340,7 @@ test_max_priority(void){ if (!list_empty(&ready_list)){ struct list_elem *list_elem = list_begin(&ready_list); struct thread *thread = list_entry(list_elem, struct thread, elem); - if (thread->priority > thread_current()->priority){ + if (thread->priority > thread_get_priority()){ if (!intr_context()) thread_yield(); } @@ -712,7 +710,7 @@ void donate_priority(void){ if(! curr->wait_on_lock) break; struct thread *holder = curr->wait_on_lock->holder; - holder->priority = curr->priority; + holder->priority = thread_get_priority(); curr = holder; } } @@ -734,16 +732,13 @@ void remove_with_lock(struct lock *lock){ } } -// 내 원래 우선순위로 돌리고 -// 나의 도네이션 리스트의 최고와 나를 비교해 -// 도네이션 리스트의 것이 더 크면 바꾼다 void refresh_priority(void){ struct thread *curr = thread_current(); curr->priority = curr->init_priority; if (!list_empty(&curr->donations)){ list_sort(&curr->donations, donate_cmp_priority, NULL); struct thread *thread = list_entry(list_begin(&curr->donations), struct thread, donation_elem); - if (thread->priority > curr->priority) + if (thread->priority > thread_get_priority()) curr->priority = thread->priority; } } From b5fc289cea1988997b2394e19492c590c2e03c5a Mon Sep 17 00:00:00 2001 From: ngngs Date: Sun, 20 Nov 2022 22:20:01 +0900 Subject: [PATCH 14/34] argument passing part3 --- .vscode/launch.json | 14 ++++++++++ .vscode/settings.json | 5 ++++ include/threads/thread.h | 2 ++ userprog/process.c | 58 ++++++++++++++++++++++++++++++++++++++++ 4 files changed, 79 insertions(+) create mode 100644 .vscode/launch.json create mode 100644 .vscode/settings.json diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..df663eb --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,14 @@ +{ + "configurations": [ + { + "type": "gdb", + "request": "attach", + "name": "Attach to gdbserver : userprog", + "executable": "${workspaceRoot}/userprog/build/kernel.o", + "target": "localhost:1234", + "remote": true, + "cwd": "${workspaceRoot}", + "valuesFormatting": "parseText" + } + ] + } \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..0f06797 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,5 @@ +{ + "files.associations": { + "stdio.h": "c" + } +} \ No newline at end of file diff --git a/include/threads/thread.h b/include/threads/thread.h index 33b46e6..4d3eaf6 100644 --- a/include/threads/thread.h +++ b/include/threads/thread.h @@ -1,6 +1,8 @@ #ifndef THREADS_THREAD_H #define THREADS_THREAD_H +#define USERPROG + #include #include #include diff --git a/userprog/process.c b/userprog/process.c index 9388e50..125ecf3 100644 --- a/userprog/process.c +++ b/userprog/process.c @@ -18,6 +18,8 @@ #include "threads/mmu.h" #include "threads/vaddr.h" #include "intrinsic.h" +#include "lib/string.h" +#include "lib/stdio.h" #ifdef VM #include "vm/vm.h" #endif @@ -204,6 +206,9 @@ process_wait (tid_t child_tid UNUSED) { /* XXX: Hint) The pintos exit if process_wait (initd), we recommend you * XXX: to add infinite loop here before * XXX: implementing the process_wait. */ + while(1){ + continue; + } return -1; } @@ -335,6 +340,19 @@ load (const char *file_name, struct intr_frame *if_) { goto done; process_activate (thread_current ()); + // 문자열 파싱해서 넘겨주기 + char *token, *save_ptr; + char *argv[128]; + int argc = 0; + for (token = strtok_r (file_name, " ", &save_ptr); token != NULL; token = strtok_r (NULL, " ", &save_ptr)){ + // token + '\0'; + argv[argc] = token; + // printf ("token은 : '%s' #### argv[%d]는 %s\n", token, argc, argv[argc]); + argc++; + } + + file_name = argv[0]; + /* Open executable file. */ file = filesys_open (file_name); if (file == NULL) { @@ -417,6 +435,46 @@ load (const char *file_name, struct intr_frame *if_) { /* TODO: Your code goes here. * TODO: Implement argument passing (see project2/argument_passing.html). */ + /* PROJECT 2: ARGUMENT PASSING */ + size_t sum = 0; + char *argv_address[128]; + + // 1. token으로 잘라서 넣기 + for(int i = argc-1; i >= 0; i--) { + size_t len = strlen(argv[i]) + 1; // '\0' 포함 + sum += len; + argv_address[i] = (if_->rsp - sum); + memcpy((if_->rsp - sum), argv[i], len); + } + + // 2. word-align + while((if_->rsp - sum) % 8 != 0){ + sum++; + *(uint8_t *) (if_->rsp - sum) = 0; + } + + // 3. token 주소를 data로 넣기 + sum += 8; + memset(if_->rsp - sum, 0, sizeof(char **)); + + for (int i = argc-1; i >=0 ; i--){ + sum += 8; + memcpy(if_->rsp - sum, &argv_address[i], sizeof(char **)); + } + + // // 4. Point %rsi to argv (the address of argv[0]) and set %rdi to argc. + // if_->R.rdi = argc; + // if_->R.rsi = if_->rsp - sum; + + // // // 5. fake address + // sum += 8; + // memset(if_->rsp - sum, 0, sizeof(void *)); + + + // 확인 + hex_dump((if_->rsp - sum), (if_->rsp - sum), sum, true); + + success = true; done: From 6760989c0ec7b7fe850e1782439bbcc5b1c7a1dd Mon Sep 17 00:00:00 2001 From: Ubuntu Date: Mon, 21 Nov 2022 11:59:38 +0000 Subject: [PATCH 15/34] exit syscall --- userprog/build/devices/disk.d | 9 ---- userprog/build/devices/disk.o | Bin 33424 -> 0 bytes userprog/build/devices/input.d | 6 --- userprog/build/devices/input.o | Bin 8576 -> 0 bytes userprog/build/devices/intq.d | 5 --- userprog/build/devices/intq.o | Bin 15888 -> 0 bytes userprog/build/devices/kbd.d | 7 ---- userprog/build/devices/kbd.o | Bin 12648 -> 0 bytes userprog/build/devices/serial.d | 8 ---- userprog/build/devices/serial.o | Bin 17808 -> 0 bytes userprog/build/devices/timer.d | 8 ---- userprog/build/devices/timer.o | Bin 14848 -> 0 bytes userprog/build/devices/vga.d | 6 --- userprog/build/devices/vga.o | Bin 10416 -> 0 bytes userprog/build/filesys/directory.d | 9 ---- userprog/build/filesys/directory.o | Bin 14360 -> 0 bytes userprog/build/filesys/fat.d | 9 ---- userprog/build/filesys/fat.o | Bin 16008 -> 0 bytes userprog/build/filesys/file.d | 6 --- userprog/build/filesys/file.o | Bin 12992 -> 0 bytes userprog/build/filesys/filesys.d | 9 ---- userprog/build/filesys/filesys.o | Bin 10904 -> 0 bytes userprog/build/filesys/free-map.d | 7 ---- userprog/build/filesys/free-map.o | Bin 11768 -> 0 bytes userprog/build/filesys/fsutil.d | 11 ----- userprog/build/filesys/fsutil.o | Bin 17976 -> 0 bytes userprog/build/filesys/inode.d | 8 ---- userprog/build/filesys/inode.o | Bin 18976 -> 0 bytes userprog/build/filesys/page_cache.d | 8 ---- userprog/build/filesys/page_cache.o | Bin 7248 -> 0 bytes userprog/build/kernel.bin | Bin 159744 -> 0 bytes userprog/build/kernel.o | Bin 2487592 -> 0 bytes userprog/build/lib/arithmetic.d | 1 - userprog/build/lib/arithmetic.o | Bin 7320 -> 0 bytes userprog/build/lib/debug.d | 5 --- userprog/build/lib/debug.o | Bin 4616 -> 0 bytes userprog/build/lib/kernel/bitmap.d | 8 ---- userprog/build/lib/kernel/bitmap.o | Bin 22704 -> 0 bytes userprog/build/lib/kernel/console.d | 8 ---- userprog/build/lib/kernel/console.o | Bin 12696 -> 0 bytes userprog/build/lib/kernel/debug.d | 7 ---- userprog/build/lib/kernel/debug.o | Bin 6856 -> 0 bytes userprog/build/lib/kernel/hash.d | 5 --- userprog/build/lib/kernel/hash.o | Bin 21264 -> 0 bytes userprog/build/lib/kernel/list.d | 4 -- userprog/build/lib/kernel/list.o | Bin 32496 -> 0 bytes userprog/build/lib/random.d | 3 -- userprog/build/lib/random.o | Bin 6376 -> 0 bytes userprog/build/lib/stdio.d | 6 --- userprog/build/lib/stdio.o | Bin 24616 -> 0 bytes userprog/build/lib/stdlib.d | 4 -- userprog/build/lib/stdlib.o | Bin 11072 -> 0 bytes userprog/build/lib/string.d | 2 - userprog/build/lib/string.o | Bin 18200 -> 0 bytes userprog/build/lib/user/console.d | 6 --- userprog/build/lib/user/console.o | Bin 7488 -> 0 bytes userprog/build/lib/user/debug.d | 5 --- userprog/build/lib/user/debug.o | Bin 5368 -> 0 bytes userprog/build/lib/user/entry.d | 3 -- userprog/build/lib/user/entry.o | Bin 3472 -> 0 bytes userprog/build/lib/user/syscall.d | 4 -- userprog/build/lib/user/syscall.o | Bin 20960 -> 0 bytes userprog/build/libc.a | Bin 107410 -> 0 bytes userprog/build/loader.bin | Bin 512 -> 0 bytes userprog/build/os.dsk | Bin 160256 -> 0 bytes .../build/tests/filesys/base/child-syn-read | Bin 59320 -> 0 bytes .../build/tests/filesys/base/child-syn-read.d | 8 ---- .../build/tests/filesys/base/child-syn-read.o | Bin 7120 -> 0 bytes .../build/tests/filesys/base/child-syn-wrt | Bin 59056 -> 0 bytes .../build/tests/filesys/base/child-syn-wrt.d | 6 --- .../build/tests/filesys/base/child-syn-wrt.o | Bin 6512 -> 0 bytes userprog/build/tests/filesys/base/lg-create | Bin 53936 -> 0 bytes userprog/build/tests/filesys/base/lg-create.d | 4 -- userprog/build/tests/filesys/base/lg-create.o | Bin 4336 -> 0 bytes userprog/build/tests/filesys/base/lg-full | Bin 53760 -> 0 bytes userprog/build/tests/filesys/base/lg-full.d | 3 -- userprog/build/tests/filesys/base/lg-full.o | Bin 3824 -> 0 bytes userprog/build/tests/filesys/base/lg-random | Bin 55608 -> 0 bytes userprog/build/tests/filesys/base/lg-random.d | 7 ---- userprog/build/tests/filesys/base/lg-random.o | Bin 8304 -> 0 bytes .../build/tests/filesys/base/lg-seq-block | Bin 53768 -> 0 bytes .../build/tests/filesys/base/lg-seq-block.d | 4 -- .../build/tests/filesys/base/lg-seq-block.o | Bin 3848 -> 0 bytes .../build/tests/filesys/base/lg-seq-random | Bin 53896 -> 0 bytes .../build/tests/filesys/base/lg-seq-random.d | 5 --- .../build/tests/filesys/base/lg-seq-random.o | Bin 4256 -> 0 bytes userprog/build/tests/filesys/base/sm-create | Bin 53928 -> 0 bytes userprog/build/tests/filesys/base/sm-create.d | 4 -- userprog/build/tests/filesys/base/sm-create.o | Bin 4336 -> 0 bytes userprog/build/tests/filesys/base/sm-full | Bin 53760 -> 0 bytes userprog/build/tests/filesys/base/sm-full.d | 3 -- userprog/build/tests/filesys/base/sm-full.o | Bin 3824 -> 0 bytes userprog/build/tests/filesys/base/sm-random | Bin 55592 -> 0 bytes userprog/build/tests/filesys/base/sm-random.d | 7 ---- userprog/build/tests/filesys/base/sm-random.o | Bin 8288 -> 0 bytes .../build/tests/filesys/base/sm-seq-block | Bin 53768 -> 0 bytes .../build/tests/filesys/base/sm-seq-block.d | 4 -- .../build/tests/filesys/base/sm-seq-block.o | Bin 3840 -> 0 bytes .../build/tests/filesys/base/sm-seq-random | Bin 53896 -> 0 bytes .../build/tests/filesys/base/sm-seq-random.d | 5 --- .../build/tests/filesys/base/sm-seq-random.o | Bin 4256 -> 0 bytes userprog/build/tests/filesys/base/syn-read | Bin 54736 -> 0 bytes userprog/build/tests/filesys/base/syn-read.d | 7 ---- userprog/build/tests/filesys/base/syn-read.o | Bin 6808 -> 0 bytes userprog/build/tests/filesys/base/syn-remove | Bin 55040 -> 0 bytes .../build/tests/filesys/base/syn-remove.d | 5 --- .../build/tests/filesys/base/syn-remove.o | Bin 7264 -> 0 bytes userprog/build/tests/filesys/base/syn-write | Bin 54800 -> 0 bytes userprog/build/tests/filesys/base/syn-write.d | 8 ---- userprog/build/tests/filesys/base/syn-write.o | Bin 6912 -> 0 bytes userprog/build/tests/filesys/seq-test.d | 4 -- userprog/build/tests/filesys/seq-test.o | Bin 6296 -> 0 bytes userprog/build/tests/lib.d | 6 --- userprog/build/tests/lib.o | Bin 16840 -> 0 bytes userprog/build/tests/main.d | 4 -- userprog/build/tests/main.o | Bin 4088 -> 0 bytes userprog/build/tests/threads/alarm-negative.d | 9 ---- userprog/build/tests/threads/alarm-negative.o | Bin 3840 -> 0 bytes userprog/build/tests/threads/alarm-priority.d | 9 ---- userprog/build/tests/threads/alarm-priority.o | Bin 8616 -> 0 bytes .../build/tests/threads/alarm-simultaneous.d | 10 ----- .../build/tests/threads/alarm-simultaneous.o | Bin 9592 -> 0 bytes userprog/build/tests/threads/alarm-wait.d | 9 ---- userprog/build/tests/threads/alarm-wait.o | Bin 14576 -> 0 bytes userprog/build/tests/threads/alarm-zero.d | 9 ---- userprog/build/tests/threads/alarm-zero.o | Bin 3816 -> 0 bytes .../build/tests/threads/mlfqs/mlfqs-block.d | 10 ----- .../build/tests/threads/mlfqs/mlfqs-block.o | Bin 10584 -> 0 bytes .../build/tests/threads/mlfqs/mlfqs-fair.d | 10 ----- .../build/tests/threads/mlfqs/mlfqs-fair.o | Bin 10952 -> 0 bytes .../build/tests/threads/mlfqs/mlfqs-load-1.d | 10 ----- .../build/tests/threads/mlfqs/mlfqs-load-1.o | Bin 7992 -> 0 bytes .../build/tests/threads/mlfqs/mlfqs-load-60.d | 10 ----- .../build/tests/threads/mlfqs/mlfqs-load-60.o | Bin 8544 -> 0 bytes .../tests/threads/mlfqs/mlfqs-load-avg.d | 10 ----- .../tests/threads/mlfqs/mlfqs-load-avg.o | Bin 8656 -> 0 bytes .../tests/threads/mlfqs/mlfqs-recent-1.d | 10 ----- .../tests/threads/mlfqs/mlfqs-recent-1.o | Bin 7160 -> 0 bytes .../build/tests/threads/priority-change.d | 7 ---- .../build/tests/threads/priority-change.o | Bin 6208 -> 0 bytes .../build/tests/threads/priority-condvar.d | 9 ---- .../build/tests/threads/priority-condvar.o | Bin 11072 -> 0 bytes .../tests/threads/priority-donate-chain.d | 8 ---- .../tests/threads/priority-donate-chain.o | Bin 12704 -> 0 bytes .../tests/threads/priority-donate-lower.d | 8 ---- .../tests/threads/priority-donate-lower.o | Bin 10536 -> 0 bytes .../tests/threads/priority-donate-multiple.d | 8 ---- .../tests/threads/priority-donate-multiple.o | Bin 11672 -> 0 bytes .../tests/threads/priority-donate-multiple2.d | 9 ---- .../tests/threads/priority-donate-multiple2.o | Bin 12072 -> 0 bytes .../tests/threads/priority-donate-nest.d | 8 ---- .../tests/threads/priority-donate-nest.o | Bin 12392 -> 0 bytes .../build/tests/threads/priority-donate-one.d | 8 ---- .../build/tests/threads/priority-donate-one.o | Bin 11088 -> 0 bytes .../tests/threads/priority-donate-sema.d | 8 ---- .../tests/threads/priority-donate-sema.o | Bin 11656 -> 0 bytes userprog/build/tests/threads/priority-fifo.d | 9 ---- userprog/build/tests/threads/priority-fifo.o | Bin 12584 -> 0 bytes .../build/tests/threads/priority-preempt.d | 8 ---- .../build/tests/threads/priority-preempt.o | Bin 6640 -> 0 bytes userprog/build/tests/threads/priority-sema.d | 9 ---- userprog/build/tests/threads/priority-sema.o | Bin 7664 -> 0 bytes userprog/build/tests/threads/tests.d | 6 --- userprog/build/tests/threads/tests.o | Bin 11512 -> 0 bytes userprog/build/tests/userprog/args-dbl-space | Bin 51296 -> 0 bytes userprog/build/tests/userprog/args-many | Bin 51296 -> 0 bytes userprog/build/tests/userprog/args-multiple | Bin 51296 -> 0 bytes userprog/build/tests/userprog/args-none | Bin 51296 -> 0 bytes userprog/build/tests/userprog/args-single | Bin 51296 -> 0 bytes userprog/build/tests/userprog/args.d | 3 -- userprog/build/tests/userprog/args.o | Bin 4440 -> 0 bytes userprog/build/tests/userprog/bad-jump | Bin 51728 -> 0 bytes userprog/build/tests/userprog/bad-jump.d | 4 -- userprog/build/tests/userprog/bad-jump.o | Bin 3696 -> 0 bytes userprog/build/tests/userprog/bad-jump2 | Bin 51744 -> 0 bytes userprog/build/tests/userprog/bad-jump2.d | 4 -- userprog/build/tests/userprog/bad-jump2.o | Bin 3704 -> 0 bytes userprog/build/tests/userprog/bad-read | Bin 51744 -> 0 bytes userprog/build/tests/userprog/bad-read.d | 4 -- userprog/build/tests/userprog/bad-read.o | Bin 3704 -> 0 bytes userprog/build/tests/userprog/bad-read2 | Bin 51744 -> 0 bytes userprog/build/tests/userprog/bad-read2.d | 4 -- userprog/build/tests/userprog/bad-read2.o | Bin 3704 -> 0 bytes userprog/build/tests/userprog/bad-write | Bin 51608 -> 0 bytes userprog/build/tests/userprog/bad-write.d | 4 -- userprog/build/tests/userprog/bad-write.o | Bin 3472 -> 0 bytes userprog/build/tests/userprog/bad-write2 | Bin 51608 -> 0 bytes userprog/build/tests/userprog/bad-write2.d | 4 -- userprog/build/tests/userprog/bad-write2.o | Bin 3480 -> 0 bytes userprog/build/tests/userprog/boundary.d | 4 -- userprog/build/tests/userprog/boundary.o | Bin 4696 -> 0 bytes userprog/build/tests/userprog/child-args | Bin 51296 -> 0 bytes userprog/build/tests/userprog/child-bad | Bin 51688 -> 0 bytes userprog/build/tests/userprog/child-bad.d | 4 -- userprog/build/tests/userprog/child-bad.o | Bin 3712 -> 0 bytes userprog/build/tests/userprog/child-close | Bin 57288 -> 0 bytes userprog/build/tests/userprog/child-close.d | 7 ---- userprog/build/tests/userprog/child-close.o | Bin 6168 -> 0 bytes userprog/build/tests/userprog/child-read | Bin 59576 -> 0 bytes userprog/build/tests/userprog/child-read.d | 8 ---- userprog/build/tests/userprog/child-read.o | Bin 8504 -> 0 bytes userprog/build/tests/userprog/child-rox | Bin 57976 -> 0 bytes userprog/build/tests/userprog/child-rox.d | 7 ---- userprog/build/tests/userprog/child-rox.o | Bin 8520 -> 0 bytes userprog/build/tests/userprog/child-simple | Bin 50976 -> 0 bytes userprog/build/tests/userprog/child-simple.d | 6 --- userprog/build/tests/userprog/child-simple.o | Bin 3928 -> 0 bytes userprog/build/tests/userprog/close-bad-fd | Bin 51504 -> 0 bytes userprog/build/tests/userprog/close-bad-fd.d | 3 -- userprog/build/tests/userprog/close-bad-fd.o | Bin 3128 -> 0 bytes userprog/build/tests/userprog/close-normal | Bin 51904 -> 0 bytes userprog/build/tests/userprog/close-normal.d | 4 -- userprog/build/tests/userprog/close-normal.o | Bin 4272 -> 0 bytes userprog/build/tests/userprog/close-twice | Bin 52016 -> 0 bytes userprog/build/tests/userprog/close-twice.d | 4 -- userprog/build/tests/userprog/close-twice.o | Bin 4488 -> 0 bytes userprog/build/tests/userprog/create-bad-ptr | Bin 51720 -> 0 bytes .../build/tests/userprog/create-bad-ptr.d | 4 -- .../build/tests/userprog/create-bad-ptr.o | Bin 3664 -> 0 bytes userprog/build/tests/userprog/create-bound | Bin 53032 -> 0 bytes userprog/build/tests/userprog/create-bound.d | 4 -- userprog/build/tests/userprog/create-bound.o | Bin 3928 -> 0 bytes userprog/build/tests/userprog/create-empty | Bin 51696 -> 0 bytes userprog/build/tests/userprog/create-empty.d | 4 -- userprog/build/tests/userprog/create-empty.o | Bin 3680 -> 0 bytes userprog/build/tests/userprog/create-exists | Bin 52408 -> 0 bytes userprog/build/tests/userprog/create-exists.d | 4 -- userprog/build/tests/userprog/create-exists.o | Bin 5400 -> 0 bytes userprog/build/tests/userprog/create-long | Bin 51936 -> 0 bytes userprog/build/tests/userprog/create-long.d | 4 -- userprog/build/tests/userprog/create-long.o | Bin 4184 -> 0 bytes userprog/build/tests/userprog/create-normal | Bin 51776 -> 0 bytes userprog/build/tests/userprog/create-normal.d | 4 -- userprog/build/tests/userprog/create-normal.o | Bin 3904 -> 0 bytes userprog/build/tests/userprog/create-null | Bin 51688 -> 0 bytes userprog/build/tests/userprog/create-null.d | 4 -- userprog/build/tests/userprog/create-null.o | Bin 3648 -> 0 bytes userprog/build/tests/userprog/exec-arg | Bin 51704 -> 0 bytes userprog/build/tests/userprog/exec-arg.d | 4 -- userprog/build/tests/userprog/exec-arg.o | Bin 3672 -> 0 bytes userprog/build/tests/userprog/exec-bad-ptr | Bin 51504 -> 0 bytes userprog/build/tests/userprog/exec-bad-ptr.d | 3 -- userprog/build/tests/userprog/exec-bad-ptr.o | Bin 3128 -> 0 bytes userprog/build/tests/userprog/exec-boundary | Bin 53416 -> 0 bytes userprog/build/tests/userprog/exec-boundary.d | 4 -- userprog/build/tests/userprog/exec-boundary.o | Bin 4960 -> 0 bytes userprog/build/tests/userprog/exec-missing | Bin 51712 -> 0 bytes userprog/build/tests/userprog/exec-missing.d | 4 -- userprog/build/tests/userprog/exec-missing.o | Bin 3688 -> 0 bytes userprog/build/tests/userprog/exec-once | Bin 51704 -> 0 bytes userprog/build/tests/userprog/exec-once.d | 4 -- userprog/build/tests/userprog/exec-once.o | Bin 3664 -> 0 bytes userprog/build/tests/userprog/exec-read | Bin 55000 -> 0 bytes userprog/build/tests/userprog/exec-read.d | 7 ---- userprog/build/tests/userprog/exec-read.o | Bin 8064 -> 0 bytes userprog/build/tests/userprog/exit | Bin 51560 -> 0 bytes userprog/build/tests/userprog/exit.d | 4 -- userprog/build/tests/userprog/exit.o | Bin 3344 -> 0 bytes userprog/build/tests/userprog/fork-boundary | Bin 53480 -> 0 bytes userprog/build/tests/userprog/fork-boundary.d | 4 -- userprog/build/tests/userprog/fork-boundary.o | Bin 5128 -> 0 bytes userprog/build/tests/userprog/fork-close | Bin 54608 -> 0 bytes userprog/build/tests/userprog/fork-close.d | 5 --- userprog/build/tests/userprog/fork-close.o | Bin 6944 -> 0 bytes userprog/build/tests/userprog/fork-multiple | Bin 52408 -> 0 bytes userprog/build/tests/userprog/fork-multiple.d | 4 -- userprog/build/tests/userprog/fork-multiple.o | Bin 5136 -> 0 bytes userprog/build/tests/userprog/fork-once | Bin 52000 -> 0 bytes userprog/build/tests/userprog/fork-once.d | 4 -- userprog/build/tests/userprog/fork-once.o | Bin 4400 -> 0 bytes userprog/build/tests/userprog/fork-read | Bin 55184 -> 0 bytes userprog/build/tests/userprog/fork-read.d | 5 --- userprog/build/tests/userprog/fork-read.o | Bin 8128 -> 0 bytes userprog/build/tests/userprog/fork-recursive | Bin 52456 -> 0 bytes .../build/tests/userprog/fork-recursive.d | 4 -- .../build/tests/userprog/fork-recursive.o | Bin 5216 -> 0 bytes userprog/build/tests/userprog/halt | Bin 51560 -> 0 bytes userprog/build/tests/userprog/halt.d | 4 -- userprog/build/tests/userprog/halt.o | Bin 3320 -> 0 bytes userprog/build/tests/userprog/multi-child-fd | Bin 53000 -> 0 bytes .../build/tests/userprog/multi-child-fd.d | 6 --- .../build/tests/userprog/multi-child-fd.o | Bin 6312 -> 0 bytes userprog/build/tests/userprog/multi-recurse | Bin 57088 -> 0 bytes userprog/build/tests/userprog/multi-recurse.d | 6 --- userprog/build/tests/userprog/multi-recurse.o | Bin 6264 -> 0 bytes userprog/build/tests/userprog/no-vm/multi-oom | Bin 54136 -> 0 bytes .../build/tests/userprog/no-vm/multi-oom.d | 7 ---- .../build/tests/userprog/no-vm/multi-oom.o | Bin 10672 -> 0 bytes userprog/build/tests/userprog/open-bad-ptr | Bin 51768 -> 0 bytes userprog/build/tests/userprog/open-bad-ptr.d | 4 -- userprog/build/tests/userprog/open-bad-ptr.o | Bin 3872 -> 0 bytes userprog/build/tests/userprog/open-boundary | Bin 53088 -> 0 bytes userprog/build/tests/userprog/open-boundary.d | 4 -- userprog/build/tests/userprog/open-boundary.o | Bin 4128 -> 0 bytes userprog/build/tests/userprog/open-empty | Bin 51752 -> 0 bytes userprog/build/tests/userprog/open-empty.d | 4 -- userprog/build/tests/userprog/open-empty.o | Bin 3808 -> 0 bytes userprog/build/tests/userprog/open-missing | Bin 51736 -> 0 bytes userprog/build/tests/userprog/open-missing.d | 4 -- userprog/build/tests/userprog/open-missing.o | Bin 3800 -> 0 bytes userprog/build/tests/userprog/open-normal | Bin 51736 -> 0 bytes userprog/build/tests/userprog/open-normal.d | 4 -- userprog/build/tests/userprog/open-normal.o | Bin 3792 -> 0 bytes userprog/build/tests/userprog/open-null | Bin 51496 -> 0 bytes userprog/build/tests/userprog/open-null.d | 3 -- userprog/build/tests/userprog/open-null.o | Bin 3120 -> 0 bytes userprog/build/tests/userprog/open-twice | Bin 52152 -> 0 bytes userprog/build/tests/userprog/open-twice.d | 4 -- userprog/build/tests/userprog/open-twice.o | Bin 4704 -> 0 bytes userprog/build/tests/userprog/read-bad-fd | Bin 51912 -> 0 bytes userprog/build/tests/userprog/read-bad-fd.d | 4 -- userprog/build/tests/userprog/read-bad-fd.o | Bin 3952 -> 0 bytes userprog/build/tests/userprog/read-bad-ptr | Bin 51936 -> 0 bytes userprog/build/tests/userprog/read-bad-ptr.d | 4 -- userprog/build/tests/userprog/read-bad-ptr.o | Bin 4296 -> 0 bytes userprog/build/tests/userprog/read-boundary | Bin 54272 -> 0 bytes userprog/build/tests/userprog/read-boundary.d | 5 --- userprog/build/tests/userprog/read-boundary.o | Bin 5976 -> 0 bytes userprog/build/tests/userprog/read-normal | Bin 52200 -> 0 bytes userprog/build/tests/userprog/read-normal.d | 5 --- userprog/build/tests/userprog/read-normal.o | Bin 4072 -> 0 bytes userprog/build/tests/userprog/read-stdout | Bin 51600 -> 0 bytes userprog/build/tests/userprog/read-stdout.d | 6 --- userprog/build/tests/userprog/read-stdout.o | Bin 3528 -> 0 bytes userprog/build/tests/userprog/read-zero | Bin 52088 -> 0 bytes userprog/build/tests/userprog/read-zero.d | 4 -- userprog/build/tests/userprog/read-zero.o | Bin 4544 -> 0 bytes userprog/build/tests/userprog/rox-child | Bin 52896 -> 0 bytes userprog/build/tests/userprog/rox-child.d | 4 -- userprog/build/tests/userprog/rox-child.o | Bin 6904 -> 0 bytes userprog/build/tests/userprog/rox-multichild | Bin 52912 -> 0 bytes .../build/tests/userprog/rox-multichild.d | 4 -- .../build/tests/userprog/rox-multichild.o | Bin 6912 -> 0 bytes userprog/build/tests/userprog/rox-simple | Bin 52192 -> 0 bytes userprog/build/tests/userprog/rox-simple.d | 4 -- userprog/build/tests/userprog/rox-simple.o | Bin 4936 -> 0 bytes userprog/build/tests/userprog/wait-bad-pid | Bin 51528 -> 0 bytes userprog/build/tests/userprog/wait-bad-pid.d | 3 -- userprog/build/tests/userprog/wait-bad-pid.o | Bin 3184 -> 0 bytes userprog/build/tests/userprog/wait-killed | Bin 51864 -> 0 bytes userprog/build/tests/userprog/wait-killed.d | 4 -- userprog/build/tests/userprog/wait-killed.o | Bin 4176 -> 0 bytes userprog/build/tests/userprog/wait-simple | Bin 51840 -> 0 bytes userprog/build/tests/userprog/wait-simple.d | 4 -- userprog/build/tests/userprog/wait-simple.o | Bin 4096 -> 0 bytes userprog/build/tests/userprog/wait-twice | Bin 51944 -> 0 bytes userprog/build/tests/userprog/wait-twice.d | 4 -- userprog/build/tests/userprog/wait-twice.o | Bin 4376 -> 0 bytes userprog/build/tests/userprog/write-bad-fd | Bin 51824 -> 0 bytes userprog/build/tests/userprog/write-bad-fd.d | 4 -- userprog/build/tests/userprog/write-bad-fd.o | Bin 3768 -> 0 bytes userprog/build/tests/userprog/write-bad-ptr | Bin 51944 -> 0 bytes userprog/build/tests/userprog/write-bad-ptr.d | 4 -- userprog/build/tests/userprog/write-bad-ptr.o | Bin 4288 -> 0 bytes userprog/build/tests/userprog/write-boundary | Bin 53936 -> 0 bytes .../build/tests/userprog/write-boundary.d | 5 --- .../build/tests/userprog/write-boundary.o | Bin 5272 -> 0 bytes userprog/build/tests/userprog/write-normal | Bin 52760 -> 0 bytes userprog/build/tests/userprog/write-normal.d | 4 -- userprog/build/tests/userprog/write-normal.o | Bin 5440 -> 0 bytes userprog/build/tests/userprog/write-stdin | Bin 51648 -> 0 bytes userprog/build/tests/userprog/write-stdin.d | 4 -- userprog/build/tests/userprog/write-stdin.o | Bin 3400 -> 0 bytes userprog/build/tests/userprog/write-zero | Bin 52008 -> 0 bytes userprog/build/tests/userprog/write-zero.d | 4 -- userprog/build/tests/userprog/write-zero.o | Bin 4400 -> 0 bytes userprog/build/threads/init.d | 21 ---------- userprog/build/threads/init.o | Bin 24400 -> 0 bytes userprog/build/threads/interrupt.d | 13 ------ userprog/build/threads/interrupt.o | Bin 26504 -> 0 bytes userprog/build/threads/intr-stubs.d | 2 - userprog/build/threads/intr-stubs.o | Bin 39176 -> 0 bytes userprog/build/threads/kernel.lds.s | 23 ----------- userprog/build/threads/loader.o | Bin 5632 -> 0 bytes userprog/build/threads/malloc.d | 8 ---- userprog/build/threads/malloc.o | Bin 16752 -> 0 bytes userprog/build/threads/mmu.d | 9 ---- userprog/build/threads/mmu.o | Bin 24216 -> 0 bytes userprog/build/threads/palloc.d | 9 ---- userprog/build/threads/palloc.o | Bin 20448 -> 0 bytes userprog/build/threads/start.d | 1 - userprog/build/threads/start.o | Bin 30720 -> 0 bytes userprog/build/threads/synch.d | 7 ---- userprog/build/threads/synch.o | Bin 27832 -> 0 bytes userprog/build/threads/thread.d | 12 ------ userprog/build/threads/thread.o | Bin 43152 -> 0 bytes userprog/build/userprog/exception.d | 10 ----- userprog/build/userprog/exception.o | Bin 11912 -> 0 bytes userprog/build/userprog/gdt.d | 9 ---- userprog/build/userprog/gdt.o | Bin 7096 -> 0 bytes userprog/build/userprog/process.d | 18 -------- userprog/build/userprog/process.o | Bin 28072 -> 0 bytes userprog/build/userprog/syscall-entry.d | 2 - userprog/build/userprog/syscall-entry.o | Bin 3776 -> 0 bytes userprog/build/userprog/syscall.d | 11 ----- userprog/build/userprog/syscall.o | Bin 6472 -> 0 bytes userprog/build/userprog/tss.d | 8 ---- userprog/build/userprog/tss.o | Bin 9088 -> 0 bytes userprog/process.c | 32 +++++++------- userprog/syscall.c | 39 ++++++++++++++++-- 400 files changed, 49 insertions(+), 965 deletions(-) delete mode 100644 userprog/build/devices/disk.d delete mode 100644 userprog/build/devices/disk.o delete mode 100644 userprog/build/devices/input.d delete mode 100644 userprog/build/devices/input.o delete mode 100644 userprog/build/devices/intq.d delete mode 100644 userprog/build/devices/intq.o delete mode 100644 userprog/build/devices/kbd.d delete mode 100644 userprog/build/devices/kbd.o delete mode 100644 userprog/build/devices/serial.d delete mode 100644 userprog/build/devices/serial.o delete mode 100644 userprog/build/devices/timer.d delete mode 100644 userprog/build/devices/timer.o delete mode 100644 userprog/build/devices/vga.d delete mode 100644 userprog/build/devices/vga.o delete mode 100644 userprog/build/filesys/directory.d delete mode 100644 userprog/build/filesys/directory.o delete mode 100644 userprog/build/filesys/fat.d delete mode 100644 userprog/build/filesys/fat.o delete mode 100644 userprog/build/filesys/file.d delete mode 100644 userprog/build/filesys/file.o delete mode 100644 userprog/build/filesys/filesys.d delete mode 100644 userprog/build/filesys/filesys.o delete mode 100644 userprog/build/filesys/free-map.d delete mode 100644 userprog/build/filesys/free-map.o delete mode 100644 userprog/build/filesys/fsutil.d delete mode 100644 userprog/build/filesys/fsutil.o delete mode 100644 userprog/build/filesys/inode.d delete mode 100644 userprog/build/filesys/inode.o delete mode 100644 userprog/build/filesys/page_cache.d delete mode 100644 userprog/build/filesys/page_cache.o delete mode 100644 userprog/build/kernel.bin delete mode 100755 userprog/build/kernel.o delete mode 100644 userprog/build/lib/arithmetic.d delete mode 100644 userprog/build/lib/arithmetic.o delete mode 100644 userprog/build/lib/debug.d delete mode 100644 userprog/build/lib/debug.o delete mode 100644 userprog/build/lib/kernel/bitmap.d delete mode 100644 userprog/build/lib/kernel/bitmap.o delete mode 100644 userprog/build/lib/kernel/console.d delete mode 100644 userprog/build/lib/kernel/console.o delete mode 100644 userprog/build/lib/kernel/debug.d delete mode 100644 userprog/build/lib/kernel/debug.o delete mode 100644 userprog/build/lib/kernel/hash.d delete mode 100644 userprog/build/lib/kernel/hash.o delete mode 100644 userprog/build/lib/kernel/list.d delete mode 100644 userprog/build/lib/kernel/list.o delete mode 100644 userprog/build/lib/random.d delete mode 100644 userprog/build/lib/random.o delete mode 100644 userprog/build/lib/stdio.d delete mode 100644 userprog/build/lib/stdio.o delete mode 100644 userprog/build/lib/stdlib.d delete mode 100644 userprog/build/lib/stdlib.o delete mode 100644 userprog/build/lib/string.d delete mode 100644 userprog/build/lib/string.o delete mode 100644 userprog/build/lib/user/console.d delete mode 100644 userprog/build/lib/user/console.o delete mode 100644 userprog/build/lib/user/debug.d delete mode 100644 userprog/build/lib/user/debug.o delete mode 100644 userprog/build/lib/user/entry.d delete mode 100644 userprog/build/lib/user/entry.o delete mode 100644 userprog/build/lib/user/syscall.d delete mode 100644 userprog/build/lib/user/syscall.o delete mode 100644 userprog/build/libc.a delete mode 100755 userprog/build/loader.bin delete mode 100644 userprog/build/os.dsk delete mode 100755 userprog/build/tests/filesys/base/child-syn-read delete mode 100644 userprog/build/tests/filesys/base/child-syn-read.d delete mode 100644 userprog/build/tests/filesys/base/child-syn-read.o delete mode 100755 userprog/build/tests/filesys/base/child-syn-wrt delete mode 100644 userprog/build/tests/filesys/base/child-syn-wrt.d delete mode 100644 userprog/build/tests/filesys/base/child-syn-wrt.o delete mode 100755 userprog/build/tests/filesys/base/lg-create delete mode 100644 userprog/build/tests/filesys/base/lg-create.d delete mode 100644 userprog/build/tests/filesys/base/lg-create.o delete mode 100755 userprog/build/tests/filesys/base/lg-full delete mode 100644 userprog/build/tests/filesys/base/lg-full.d delete mode 100644 userprog/build/tests/filesys/base/lg-full.o delete mode 100755 userprog/build/tests/filesys/base/lg-random delete mode 100644 userprog/build/tests/filesys/base/lg-random.d delete mode 100644 userprog/build/tests/filesys/base/lg-random.o delete mode 100755 userprog/build/tests/filesys/base/lg-seq-block delete mode 100644 userprog/build/tests/filesys/base/lg-seq-block.d delete mode 100644 userprog/build/tests/filesys/base/lg-seq-block.o delete mode 100755 userprog/build/tests/filesys/base/lg-seq-random delete mode 100644 userprog/build/tests/filesys/base/lg-seq-random.d delete mode 100644 userprog/build/tests/filesys/base/lg-seq-random.o delete mode 100755 userprog/build/tests/filesys/base/sm-create delete mode 100644 userprog/build/tests/filesys/base/sm-create.d delete mode 100644 userprog/build/tests/filesys/base/sm-create.o delete mode 100755 userprog/build/tests/filesys/base/sm-full delete mode 100644 userprog/build/tests/filesys/base/sm-full.d delete mode 100644 userprog/build/tests/filesys/base/sm-full.o delete mode 100755 userprog/build/tests/filesys/base/sm-random delete mode 100644 userprog/build/tests/filesys/base/sm-random.d delete mode 100644 userprog/build/tests/filesys/base/sm-random.o delete mode 100755 userprog/build/tests/filesys/base/sm-seq-block delete mode 100644 userprog/build/tests/filesys/base/sm-seq-block.d delete mode 100644 userprog/build/tests/filesys/base/sm-seq-block.o delete mode 100755 userprog/build/tests/filesys/base/sm-seq-random delete mode 100644 userprog/build/tests/filesys/base/sm-seq-random.d delete mode 100644 userprog/build/tests/filesys/base/sm-seq-random.o delete mode 100755 userprog/build/tests/filesys/base/syn-read delete mode 100644 userprog/build/tests/filesys/base/syn-read.d delete mode 100644 userprog/build/tests/filesys/base/syn-read.o delete mode 100755 userprog/build/tests/filesys/base/syn-remove delete mode 100644 userprog/build/tests/filesys/base/syn-remove.d delete mode 100644 userprog/build/tests/filesys/base/syn-remove.o delete mode 100755 userprog/build/tests/filesys/base/syn-write delete mode 100644 userprog/build/tests/filesys/base/syn-write.d delete mode 100644 userprog/build/tests/filesys/base/syn-write.o delete mode 100644 userprog/build/tests/filesys/seq-test.d delete mode 100644 userprog/build/tests/filesys/seq-test.o delete mode 100644 userprog/build/tests/lib.d delete mode 100644 userprog/build/tests/lib.o delete mode 100644 userprog/build/tests/main.d delete mode 100644 userprog/build/tests/main.o delete mode 100644 userprog/build/tests/threads/alarm-negative.d delete mode 100644 userprog/build/tests/threads/alarm-negative.o delete mode 100644 userprog/build/tests/threads/alarm-priority.d delete mode 100644 userprog/build/tests/threads/alarm-priority.o delete mode 100644 userprog/build/tests/threads/alarm-simultaneous.d delete mode 100644 userprog/build/tests/threads/alarm-simultaneous.o delete mode 100644 userprog/build/tests/threads/alarm-wait.d delete mode 100644 userprog/build/tests/threads/alarm-wait.o delete mode 100644 userprog/build/tests/threads/alarm-zero.d delete mode 100644 userprog/build/tests/threads/alarm-zero.o delete mode 100644 userprog/build/tests/threads/mlfqs/mlfqs-block.d delete mode 100644 userprog/build/tests/threads/mlfqs/mlfqs-block.o delete mode 100644 userprog/build/tests/threads/mlfqs/mlfqs-fair.d delete mode 100644 userprog/build/tests/threads/mlfqs/mlfqs-fair.o delete mode 100644 userprog/build/tests/threads/mlfqs/mlfqs-load-1.d delete mode 100644 userprog/build/tests/threads/mlfqs/mlfqs-load-1.o delete mode 100644 userprog/build/tests/threads/mlfqs/mlfqs-load-60.d delete mode 100644 userprog/build/tests/threads/mlfqs/mlfqs-load-60.o delete mode 100644 userprog/build/tests/threads/mlfqs/mlfqs-load-avg.d delete mode 100644 userprog/build/tests/threads/mlfqs/mlfqs-load-avg.o delete mode 100644 userprog/build/tests/threads/mlfqs/mlfqs-recent-1.d delete mode 100644 userprog/build/tests/threads/mlfqs/mlfqs-recent-1.o delete mode 100644 userprog/build/tests/threads/priority-change.d delete mode 100644 userprog/build/tests/threads/priority-change.o delete mode 100644 userprog/build/tests/threads/priority-condvar.d delete mode 100644 userprog/build/tests/threads/priority-condvar.o delete mode 100644 userprog/build/tests/threads/priority-donate-chain.d delete mode 100644 userprog/build/tests/threads/priority-donate-chain.o delete mode 100644 userprog/build/tests/threads/priority-donate-lower.d delete mode 100644 userprog/build/tests/threads/priority-donate-lower.o delete mode 100644 userprog/build/tests/threads/priority-donate-multiple.d delete mode 100644 userprog/build/tests/threads/priority-donate-multiple.o delete mode 100644 userprog/build/tests/threads/priority-donate-multiple2.d delete mode 100644 userprog/build/tests/threads/priority-donate-multiple2.o delete mode 100644 userprog/build/tests/threads/priority-donate-nest.d delete mode 100644 userprog/build/tests/threads/priority-donate-nest.o delete mode 100644 userprog/build/tests/threads/priority-donate-one.d delete mode 100644 userprog/build/tests/threads/priority-donate-one.o delete mode 100644 userprog/build/tests/threads/priority-donate-sema.d delete mode 100644 userprog/build/tests/threads/priority-donate-sema.o delete mode 100644 userprog/build/tests/threads/priority-fifo.d delete mode 100644 userprog/build/tests/threads/priority-fifo.o delete mode 100644 userprog/build/tests/threads/priority-preempt.d delete mode 100644 userprog/build/tests/threads/priority-preempt.o delete mode 100644 userprog/build/tests/threads/priority-sema.d delete mode 100644 userprog/build/tests/threads/priority-sema.o delete mode 100644 userprog/build/tests/threads/tests.d delete mode 100644 userprog/build/tests/threads/tests.o delete mode 100755 userprog/build/tests/userprog/args-dbl-space delete mode 100755 userprog/build/tests/userprog/args-many delete mode 100755 userprog/build/tests/userprog/args-multiple delete mode 100755 userprog/build/tests/userprog/args-none delete mode 100755 userprog/build/tests/userprog/args-single delete mode 100644 userprog/build/tests/userprog/args.d delete mode 100644 userprog/build/tests/userprog/args.o delete mode 100755 userprog/build/tests/userprog/bad-jump delete mode 100644 userprog/build/tests/userprog/bad-jump.d delete mode 100644 userprog/build/tests/userprog/bad-jump.o delete mode 100755 userprog/build/tests/userprog/bad-jump2 delete mode 100644 userprog/build/tests/userprog/bad-jump2.d delete mode 100644 userprog/build/tests/userprog/bad-jump2.o delete mode 100755 userprog/build/tests/userprog/bad-read delete mode 100644 userprog/build/tests/userprog/bad-read.d delete mode 100644 userprog/build/tests/userprog/bad-read.o delete mode 100755 userprog/build/tests/userprog/bad-read2 delete mode 100644 userprog/build/tests/userprog/bad-read2.d delete mode 100644 userprog/build/tests/userprog/bad-read2.o delete mode 100755 userprog/build/tests/userprog/bad-write delete mode 100644 userprog/build/tests/userprog/bad-write.d delete mode 100644 userprog/build/tests/userprog/bad-write.o delete mode 100755 userprog/build/tests/userprog/bad-write2 delete mode 100644 userprog/build/tests/userprog/bad-write2.d delete mode 100644 userprog/build/tests/userprog/bad-write2.o delete mode 100644 userprog/build/tests/userprog/boundary.d delete mode 100644 userprog/build/tests/userprog/boundary.o delete mode 100755 userprog/build/tests/userprog/child-args delete mode 100755 userprog/build/tests/userprog/child-bad delete mode 100644 userprog/build/tests/userprog/child-bad.d delete mode 100644 userprog/build/tests/userprog/child-bad.o delete mode 100755 userprog/build/tests/userprog/child-close delete mode 100644 userprog/build/tests/userprog/child-close.d delete mode 100644 userprog/build/tests/userprog/child-close.o delete mode 100755 userprog/build/tests/userprog/child-read delete mode 100644 userprog/build/tests/userprog/child-read.d delete mode 100644 userprog/build/tests/userprog/child-read.o delete mode 100755 userprog/build/tests/userprog/child-rox delete mode 100644 userprog/build/tests/userprog/child-rox.d delete mode 100644 userprog/build/tests/userprog/child-rox.o delete mode 100755 userprog/build/tests/userprog/child-simple delete mode 100644 userprog/build/tests/userprog/child-simple.d delete mode 100644 userprog/build/tests/userprog/child-simple.o delete mode 100755 userprog/build/tests/userprog/close-bad-fd delete mode 100644 userprog/build/tests/userprog/close-bad-fd.d delete mode 100644 userprog/build/tests/userprog/close-bad-fd.o delete mode 100755 userprog/build/tests/userprog/close-normal delete mode 100644 userprog/build/tests/userprog/close-normal.d delete mode 100644 userprog/build/tests/userprog/close-normal.o delete mode 100755 userprog/build/tests/userprog/close-twice delete mode 100644 userprog/build/tests/userprog/close-twice.d delete mode 100644 userprog/build/tests/userprog/close-twice.o delete mode 100755 userprog/build/tests/userprog/create-bad-ptr delete mode 100644 userprog/build/tests/userprog/create-bad-ptr.d delete mode 100644 userprog/build/tests/userprog/create-bad-ptr.o delete mode 100755 userprog/build/tests/userprog/create-bound delete mode 100644 userprog/build/tests/userprog/create-bound.d delete mode 100644 userprog/build/tests/userprog/create-bound.o delete mode 100755 userprog/build/tests/userprog/create-empty delete mode 100644 userprog/build/tests/userprog/create-empty.d delete mode 100644 userprog/build/tests/userprog/create-empty.o delete mode 100755 userprog/build/tests/userprog/create-exists delete mode 100644 userprog/build/tests/userprog/create-exists.d delete mode 100644 userprog/build/tests/userprog/create-exists.o delete mode 100755 userprog/build/tests/userprog/create-long delete mode 100644 userprog/build/tests/userprog/create-long.d delete mode 100644 userprog/build/tests/userprog/create-long.o delete mode 100755 userprog/build/tests/userprog/create-normal delete mode 100644 userprog/build/tests/userprog/create-normal.d delete mode 100644 userprog/build/tests/userprog/create-normal.o delete mode 100755 userprog/build/tests/userprog/create-null delete mode 100644 userprog/build/tests/userprog/create-null.d delete mode 100644 userprog/build/tests/userprog/create-null.o delete mode 100755 userprog/build/tests/userprog/exec-arg delete mode 100644 userprog/build/tests/userprog/exec-arg.d delete mode 100644 userprog/build/tests/userprog/exec-arg.o delete mode 100755 userprog/build/tests/userprog/exec-bad-ptr delete mode 100644 userprog/build/tests/userprog/exec-bad-ptr.d delete mode 100644 userprog/build/tests/userprog/exec-bad-ptr.o delete mode 100755 userprog/build/tests/userprog/exec-boundary delete mode 100644 userprog/build/tests/userprog/exec-boundary.d delete mode 100644 userprog/build/tests/userprog/exec-boundary.o delete mode 100755 userprog/build/tests/userprog/exec-missing delete mode 100644 userprog/build/tests/userprog/exec-missing.d delete mode 100644 userprog/build/tests/userprog/exec-missing.o delete mode 100755 userprog/build/tests/userprog/exec-once delete mode 100644 userprog/build/tests/userprog/exec-once.d delete mode 100644 userprog/build/tests/userprog/exec-once.o delete mode 100755 userprog/build/tests/userprog/exec-read delete mode 100644 userprog/build/tests/userprog/exec-read.d delete mode 100644 userprog/build/tests/userprog/exec-read.o delete mode 100755 userprog/build/tests/userprog/exit delete mode 100644 userprog/build/tests/userprog/exit.d delete mode 100644 userprog/build/tests/userprog/exit.o delete mode 100755 userprog/build/tests/userprog/fork-boundary delete mode 100644 userprog/build/tests/userprog/fork-boundary.d delete mode 100644 userprog/build/tests/userprog/fork-boundary.o delete mode 100755 userprog/build/tests/userprog/fork-close delete mode 100644 userprog/build/tests/userprog/fork-close.d delete mode 100644 userprog/build/tests/userprog/fork-close.o delete mode 100755 userprog/build/tests/userprog/fork-multiple delete mode 100644 userprog/build/tests/userprog/fork-multiple.d delete mode 100644 userprog/build/tests/userprog/fork-multiple.o delete mode 100755 userprog/build/tests/userprog/fork-once delete mode 100644 userprog/build/tests/userprog/fork-once.d delete mode 100644 userprog/build/tests/userprog/fork-once.o delete mode 100755 userprog/build/tests/userprog/fork-read delete mode 100644 userprog/build/tests/userprog/fork-read.d delete mode 100644 userprog/build/tests/userprog/fork-read.o delete mode 100755 userprog/build/tests/userprog/fork-recursive delete mode 100644 userprog/build/tests/userprog/fork-recursive.d delete mode 100644 userprog/build/tests/userprog/fork-recursive.o delete mode 100755 userprog/build/tests/userprog/halt delete mode 100644 userprog/build/tests/userprog/halt.d delete mode 100644 userprog/build/tests/userprog/halt.o delete mode 100755 userprog/build/tests/userprog/multi-child-fd delete mode 100644 userprog/build/tests/userprog/multi-child-fd.d delete mode 100644 userprog/build/tests/userprog/multi-child-fd.o delete mode 100755 userprog/build/tests/userprog/multi-recurse delete mode 100644 userprog/build/tests/userprog/multi-recurse.d delete mode 100644 userprog/build/tests/userprog/multi-recurse.o delete mode 100755 userprog/build/tests/userprog/no-vm/multi-oom delete mode 100644 userprog/build/tests/userprog/no-vm/multi-oom.d delete mode 100644 userprog/build/tests/userprog/no-vm/multi-oom.o delete mode 100755 userprog/build/tests/userprog/open-bad-ptr delete mode 100644 userprog/build/tests/userprog/open-bad-ptr.d delete mode 100644 userprog/build/tests/userprog/open-bad-ptr.o delete mode 100755 userprog/build/tests/userprog/open-boundary delete mode 100644 userprog/build/tests/userprog/open-boundary.d delete mode 100644 userprog/build/tests/userprog/open-boundary.o delete mode 100755 userprog/build/tests/userprog/open-empty delete mode 100644 userprog/build/tests/userprog/open-empty.d delete mode 100644 userprog/build/tests/userprog/open-empty.o delete mode 100755 userprog/build/tests/userprog/open-missing delete mode 100644 userprog/build/tests/userprog/open-missing.d delete mode 100644 userprog/build/tests/userprog/open-missing.o delete mode 100755 userprog/build/tests/userprog/open-normal delete mode 100644 userprog/build/tests/userprog/open-normal.d delete mode 100644 userprog/build/tests/userprog/open-normal.o delete mode 100755 userprog/build/tests/userprog/open-null delete mode 100644 userprog/build/tests/userprog/open-null.d delete mode 100644 userprog/build/tests/userprog/open-null.o delete mode 100755 userprog/build/tests/userprog/open-twice delete mode 100644 userprog/build/tests/userprog/open-twice.d delete mode 100644 userprog/build/tests/userprog/open-twice.o delete mode 100755 userprog/build/tests/userprog/read-bad-fd delete mode 100644 userprog/build/tests/userprog/read-bad-fd.d delete mode 100644 userprog/build/tests/userprog/read-bad-fd.o delete mode 100755 userprog/build/tests/userprog/read-bad-ptr delete mode 100644 userprog/build/tests/userprog/read-bad-ptr.d delete mode 100644 userprog/build/tests/userprog/read-bad-ptr.o delete mode 100755 userprog/build/tests/userprog/read-boundary delete mode 100644 userprog/build/tests/userprog/read-boundary.d delete mode 100644 userprog/build/tests/userprog/read-boundary.o delete mode 100755 userprog/build/tests/userprog/read-normal delete mode 100644 userprog/build/tests/userprog/read-normal.d delete mode 100644 userprog/build/tests/userprog/read-normal.o delete mode 100755 userprog/build/tests/userprog/read-stdout delete mode 100644 userprog/build/tests/userprog/read-stdout.d delete mode 100644 userprog/build/tests/userprog/read-stdout.o delete mode 100755 userprog/build/tests/userprog/read-zero delete mode 100644 userprog/build/tests/userprog/read-zero.d delete mode 100644 userprog/build/tests/userprog/read-zero.o delete mode 100755 userprog/build/tests/userprog/rox-child delete mode 100644 userprog/build/tests/userprog/rox-child.d delete mode 100644 userprog/build/tests/userprog/rox-child.o delete mode 100755 userprog/build/tests/userprog/rox-multichild delete mode 100644 userprog/build/tests/userprog/rox-multichild.d delete mode 100644 userprog/build/tests/userprog/rox-multichild.o delete mode 100755 userprog/build/tests/userprog/rox-simple delete mode 100644 userprog/build/tests/userprog/rox-simple.d delete mode 100644 userprog/build/tests/userprog/rox-simple.o delete mode 100755 userprog/build/tests/userprog/wait-bad-pid delete mode 100644 userprog/build/tests/userprog/wait-bad-pid.d delete mode 100644 userprog/build/tests/userprog/wait-bad-pid.o delete mode 100755 userprog/build/tests/userprog/wait-killed delete mode 100644 userprog/build/tests/userprog/wait-killed.d delete mode 100644 userprog/build/tests/userprog/wait-killed.o delete mode 100755 userprog/build/tests/userprog/wait-simple delete mode 100644 userprog/build/tests/userprog/wait-simple.d delete mode 100644 userprog/build/tests/userprog/wait-simple.o delete mode 100755 userprog/build/tests/userprog/wait-twice delete mode 100644 userprog/build/tests/userprog/wait-twice.d delete mode 100644 userprog/build/tests/userprog/wait-twice.o delete mode 100755 userprog/build/tests/userprog/write-bad-fd delete mode 100644 userprog/build/tests/userprog/write-bad-fd.d delete mode 100644 userprog/build/tests/userprog/write-bad-fd.o delete mode 100755 userprog/build/tests/userprog/write-bad-ptr delete mode 100644 userprog/build/tests/userprog/write-bad-ptr.d delete mode 100644 userprog/build/tests/userprog/write-bad-ptr.o delete mode 100755 userprog/build/tests/userprog/write-boundary delete mode 100644 userprog/build/tests/userprog/write-boundary.d delete mode 100644 userprog/build/tests/userprog/write-boundary.o delete mode 100755 userprog/build/tests/userprog/write-normal delete mode 100644 userprog/build/tests/userprog/write-normal.d delete mode 100644 userprog/build/tests/userprog/write-normal.o delete mode 100755 userprog/build/tests/userprog/write-stdin delete mode 100644 userprog/build/tests/userprog/write-stdin.d delete mode 100644 userprog/build/tests/userprog/write-stdin.o delete mode 100755 userprog/build/tests/userprog/write-zero delete mode 100644 userprog/build/tests/userprog/write-zero.d delete mode 100644 userprog/build/tests/userprog/write-zero.o delete mode 100644 userprog/build/threads/init.d delete mode 100644 userprog/build/threads/init.o delete mode 100644 userprog/build/threads/interrupt.d delete mode 100644 userprog/build/threads/interrupt.o delete mode 100644 userprog/build/threads/intr-stubs.d delete mode 100644 userprog/build/threads/intr-stubs.o delete mode 100644 userprog/build/threads/kernel.lds.s delete mode 100644 userprog/build/threads/loader.o delete mode 100644 userprog/build/threads/malloc.d delete mode 100644 userprog/build/threads/malloc.o delete mode 100644 userprog/build/threads/mmu.d delete mode 100644 userprog/build/threads/mmu.o delete mode 100644 userprog/build/threads/palloc.d delete mode 100644 userprog/build/threads/palloc.o delete mode 100644 userprog/build/threads/start.d delete mode 100644 userprog/build/threads/start.o delete mode 100644 userprog/build/threads/synch.d delete mode 100644 userprog/build/threads/synch.o delete mode 100644 userprog/build/threads/thread.d delete mode 100644 userprog/build/threads/thread.o delete mode 100644 userprog/build/userprog/exception.d delete mode 100644 userprog/build/userprog/exception.o delete mode 100644 userprog/build/userprog/gdt.d delete mode 100644 userprog/build/userprog/gdt.o delete mode 100644 userprog/build/userprog/process.d delete mode 100644 userprog/build/userprog/process.o delete mode 100644 userprog/build/userprog/syscall-entry.d delete mode 100644 userprog/build/userprog/syscall-entry.o delete mode 100644 userprog/build/userprog/syscall.d delete mode 100644 userprog/build/userprog/syscall.o delete mode 100644 userprog/build/userprog/tss.d delete mode 100644 userprog/build/userprog/tss.o diff --git a/userprog/build/devices/disk.d b/userprog/build/devices/disk.d deleted file mode 100644 index b8115be..0000000 --- a/userprog/build/devices/disk.d +++ /dev/null @@ -1,9 +0,0 @@ -devices/disk.o: ../../devices/disk.c ../../include/devices/disk.h \ - ../../include/lib/inttypes.h ../../include/lib/stdint.h \ - ../../include/lib/ctype.h ../../include/lib/debug.h \ - ../../include/lib/stdbool.h ../../include/lib/stdio.h \ - ../../include/lib/stdarg.h ../../include/lib/stddef.h \ - ../../include/lib/kernel/stdio.h ../../include/devices/timer.h \ - ../../include/lib/round.h ../../include/threads/io.h \ - ../../include/threads/interrupt.h ../../include/threads/synch.h \ - ../../include/lib/kernel/list.h diff --git a/userprog/build/devices/disk.o b/userprog/build/devices/disk.o deleted file mode 100644 index 232df281f27230d8a3c99d1396903b9fce208d04..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33424 zcmcJY31C&#wXn~*H^WUr21tS+s8=KcDj8%DFlYdy7py{2EGTWraFblkbF{YN4*B%d7s9=RP(kir;1UlafbR70| zwhwl+5Bj60!+BVA6r3}oBjB7J9R}x&Xd0ZeV(Cw!?n9|hqJ|fqrOcx`kJWcp9?sof zdAM`W;Z2ptbGKC-?Y2BlVq21~*k61I5Qs!H4l=DEx%#QFp7-jW(Ey{ekBzk6}d) zc6%%<(6s~%G5U<6a7tL( zK%k>94@?O-RwyH&qzb4c*x%6?*o7K|%=48;ksjO%r>@GQfm*0-+#M-_I~TR7?8*!M z;4bt;f7ca9=U~Gn^@UT5ImchY3@T&iBA?2<MSgYdeC|Yj42?tE)_$*}au7m;_S%lPLH^G6!=15#j`jg7S_x-6dU1R_ zB<$0@=x5QV&0f>de%M~O99wI1pmR^ael=k4!LGTxKLz4lm4^eh&;j?Vk-JxqT)d>< zctvMB<3JDKV^BqyNL2OHFf6At7(DIA(EC>GWTwAx64OzASH&o2E-MAq1D&x0Fd6QL z5(Z9Q!W${`~f?7DU^PJkfA01QUq_!OcYEKiB~Z0w0$vn& z|HcM)15-9e!B}6Y_+d$x}@+!p6_$-df@MP z>($PxPfb&nf-i)(p2-9hpMTXlMERGqr2Ox*Bq-&3q7+yqeh4#4F&YS+rY%7uC%};F zqucs&Z|gyAm@{=NhTQJqo9q&jKhvkUd41U|N-{vocxyXuDaW81SVYweE? z+4m$hA>QZxcsBt#bLy7E7?NSdj6K>O($`O|oEdV=Jm>)SuK zqa)zFA$A6c4s=!I;Tkv}JbkpIzXBJ<7`&}-&2UV{H6RM--rIL*%KG-ttXSIm_D`+o zFbJ2&vLXEJkiLn_zfE%s)ME+VWj7r5<8r=p=K!pn0$m&Rh3{=Ds_*_My}N${rjZjZ zOjx&m4RUt-15wW2#n(ZgRQXH@3mBgqFzN zes5TXUfum}UdA5M(z$39g}R(jV8~K0e&@yYy0Q&cFtaVoZ>=negWUs#L$f;5{_$52 z{t!K2b!V*q5U$hv104hKBmmEfu=2%`ZtsIfi`-p( zoiK#jk6O_}c*Jmb9T-+QfsW>We1Pb;Vmojy;b{xJh@CKjI@fJgKYyU;g_Zr`m&A;N z>sK-9Ko6N&c_4hU{f zVrtqJ&rl$4E$@XNfeDvh5JO(=lcJ8(%N8`>>)BTC9QJXU4bg&(_ ze0Jc@6zuu9TSnC4AIPVM3_l0YLATZ``2)t57`X9)afDZ+xCR8BPs3d)Htys)LE;G7PHQB$vu^8KJs))Sg08hA<8zSN z>L<((mG9{HZS2E)?CfN<$2CaqUGs5w#d$0@OHf@bdA*;jJiZmHNqswI{T0VyFf76K zqN-R&U!u;;sR^t7%stq1jIJGbyXyLo8J_ywbJ&+caXot8b&9|z;e*&suqJ`7dnkw- z2Wp>b=AKv(ONDp^tTm^puv%vg?QzPwp?Cg6F_m!Q4))c+hRS36(2lriGojd9>#%v8 zhs*e#Yu9jG{W$HWa>X}bU_&xt!>yp(OIO8GIm-Y|V%5az>w{q@3U*>qShgyPa-8Rn1Z$(M;n_v8c)BV+fk55li$amA>S(nV4Mrg= zRJ&+GjI{VCT17GcWpnX-g*xA$&NXYIL2HsK{5*eiYhAF(Kh7G5Wrsu6Dr|unSk-br z6jEE=R$Uv4u8G5mWlO%|FE96>KVy;=YKexc8iLWPrr=6YG;tF8Xa1E}FRog6r7|p3 z2hNX%nuD#eXr>}HvB;Y9{Hv-%(NIf6adENLdV{4srjlbV!PRZLE}%RZ4#(Oc~IOvh$7mvy)~edp=H}`a*2^MJ-KrWPu_+j~M#CBt zpQA0yhpQTE7@o}I;K+E)W2a%n<4MJfHzgJHSstH?DJ3ZdS7W;E!*oqfsYl{TkCRhZ zBS|sHX?Gy;8D#uAAWA{%u;zGTs?RJfE%T?4q)bXrL8a-wemuhuoo!25vN}C~3)C(n zTsF;0FF@58o@%8RV%P`aDOUPO4Cg`kd@KDF43C0vnUy{Y!+r>tTIr)PJTW6Y(@H-T zgQXea8CLoj49>_1M?zNmSPWNWgzF%D8ioTI;hHup{d5d30>0WxKLf){Gs3kH_G5Sj z$Uyi^3^!(kt06oN!)@C9zVxECFfC^+w$dl|1GX}P5i5Ptbr4#Odn8u+IT*f4htEZS z-I7rUBIhAqukmCI->SpKC~}()mtsMiba*O;@5u; zhi9Rhf6?I!G3!I%1ISvASs%}cK-SqP{-hSU2*W#c_+rfZw3X$T({06aM644^M|0sa~FqNLjGYI~R-6Ip-M`T!K#a zWrV^vTHea}5YE&xm!TKPngCi;q4@%=VL*q!G8$C2fv2AU*&MWE5&&g_ZRH@G8IR|I zZp-^sl*oV-eGJEocLJ!?2hVeM&o@DC1mmyfi--jPGLCUF21wNI`7LBDsK+!M1D@`s zg>{y9tOv2DyU|hkZZ71=@}bdMS78EOqhY2(U4^Euk%@I_Eh&zcj~$D?Pg+tOEwz?6 z)r0K;7OCm-VGxOX#WC_d2sx4ErV|>>$Vx0b=TWE%>QVk5Ze?S!+NeP_Q=>g`H(>`U z0M88C7&1MR1M{I%XgVZ15ljJ}VOQ3QKXMe~XvV|tSxJgNBE?G!p|(eCUE39fa8t6p zf3>lvdAeI2)wK|EBCcw0z@kn;-QKrs?1+3Eqk!Fmc41xKGK+lMDKcbv-?4FUdAggN zGF%RH75FVE&=GT`{J=~>F>=ETjvH=wY-%B!UT|yzGhQ5GhD-m0rhYV#^zU@^&v5i_ zL;c{{om9=nQJ4f#Oz?ECaB46HLs`D30gpzNmUmkMb*V5*pt@~tb=&O6Acv{$epILR zJmToN3-!Wb_uNE!9&zh=gc`i=M7{lA&FW*HcItq=g9_d36v`pHXLg2e|IM}@I>Z)wCF$|L#N4JB3r+ZN$bgJ8J9cerjb3FrcSl>IStJOJ%o`nTDv8OSX<-;3< zHsD&vfSokR?4IK=&*Q+lRyo$&z5ixZeI2{9Fa&AKZItqM58SLgdj>qspUkr^XJXHD zta=G-aUwXAIFX&uf1QYH@cz@0#o)5Us$D5+z~|uYG8cC&ehPu(x<#?hDxPm;W160= zDqOSGC~~je^B*9APOaeHiawpgJ{<#UE$>_!FAeT!y*nCoN8?THnzdb1%!wn^6;hn8 zaMbAv-^$h#L<$)i&}FCEnBeLDhK{E31UD9|fydRP>ls)R;hi{(YQ4hoxXW1Aec+#t z45_W<*o9LA9%q61IEsqN^7snDW!Df*j`^;e0(RMWUvk;+n%uu+ic7c49#v2d-VS@9 z0;==b)@fKF?;$+nft#&(*gYLNmUTKf{}9cOXCU?-qUn)h`otLaW zb$`uO_t#u?f9)~I;^|g(f8DJ6-H`eJN8MeOO6~~Pq!+I{TBYiqVP#|W&cqsf_i~rU z*mZb%U!XhN_!ZD;$9oe zT9#AbYDo5jMZ3tNcw1vH(9Me~R26+zHkPTI_lK+s9~kkld%l1~_y_g>kv6Dl9LDg7 z=nEzPL?<^o$tx%sO?gP0vcl}o4QS}ALIVowdjpIay zn-RP{IVt0lMqY!PW?b${>?~)YrJir%8IM`|0{+3-PIVK{H?IQ-%W#U(TJ`i=+!p$# z_T5s_(@fcQPKek&xc1aJn_YUE=PRv^lyf2Hte}A1gVVRpxzLq!p&s}vv;_;VBDH%Lroy}tD zmpZ|Wya`P8{+g4Lndbzv@{cL~9HER;7>zZk7sT`XH z{vMHzDW^GxX9>ekC#%3ASn?U9pQ3&;lA>ptYJ_FubZIcm$#_}Pc;Kp0CX5zYi{d#% z%Gt%%#iPqdx8&&dv#bej&;s4YIuCyIoC!V0ILw`916w^XcjNH}T@TRpJ-X`D`1!}U z5d&*^7_{~mIoWVlzu^F@CtJUT3ANNV#p;43O`#fkFT*6-sNTW2-_{5jy$v4`6m*r` z5Dd2jn=Gp~x~45y+-O0Gp;ov;WpU#lUiiS%StMEqyXHDo(MH_o23i-ar#$=uLT7CX zMNk|bSR-p%Y8y4I3)aLMv^c)z2tyFGl-I;UP0`7rmW#AEGU(O>V>QcuEC`$Kc3M50 zJ!uVa_Ns6y0u@S!NjoJoZCQ%PJFfVTTQ2vGF7{pPnK05js@zxF?LDR3cdhTU6t8z_ z`NkJKlSX<<@_hwcI!fW6XIg=;p~LqJRN9Lt&$xVbnWioZZAH+5r^oQ*UFG{ZTiDTbkyb`g31?#m4V+`??j0ruBX@ zA7y;6skoM})!{U6X1#Y<`I{=H>Rq4axwxRgvmn2>aoH3!%T9|TicRyCIWaVVc(1R) z7lZ#AeBGY8`Mz%7Y+u7ACl)2a1{C#Xl=t;|#ufNVeV_P_IzNx90?<^i?*N=r(D7+Y z@sxHUp1t7*;Nn5w6g&XF^ySm3z*pD-#$3PC*P-jL@_W*J@1y+R;Dio+>@44Hm-Oz0 zQr}en?N^)}(EDgd$G07jf>d>ZbPV}a7eGrg)3#hY)pzCxO7Z~s=oH^F<%r%-eLFp8 z6{^<1-&0foww;&%p6A>G&pG+ff^VvyWm7*Z@sZ!td;z6oY1((jL%_QQPoA@f6WluY zy{A=h2Na@Re-Ac^uf+F>XM8^N2hW58EdXZ^8km9xrlf7av+w8}Um*nSG~Wo!)&ZWH z^NFWOpS+pnJJC@d&v~fB@zD1?<8z9p_3rHLM#p~A?OUdV&QU_%)xHr*Be*|nuW#A1 z^Lu+Q@4Xx)dwuzHdciXIuVN>hxAgiR^@S!w66W`=DOUMzg^uSd_e{$#>-C(S?<=`j zU!XT!4sOGLUYL|Z`sHGkdfiurOD3ES^t;XaaCLLg3I`jiYN{ha3twAS!HdUGQx(41 zw5qDqKo7N4wZ)-g6u&pVGFN>>C znOg(AtPZQftJ=bly9(c0M=Uk3RJBB!g26T`27LO|s;CudYz;^K5VP<#CIHCXg0o(* zzNxw)Vl~xNH(T)56%6ColWMN2YO8Ju)#}0S3d% z-PSO?AFT`OI;+>UU~!F-XoEM)QBa{?{DSK0I@L7vrWMO}%Bu>l*5+5m+Q8NbypLvQ zTz2IW|Gcs?{{_X)KD((p+<;L? zgxC5Ih{7xB*$u%Kct2hX(duw*i)xR0tGccZg(Iu5S>fE&+S1@x zCnye@KUjMMy_&AV`yO_PFbDxvo^>QuBjUSoYF*vGnsxtLsowoVXHf68^(|KSRQlXN z<<_l$y-fQ)KwCU%0_e)etcr-MUH!o!(XIO zo5$xQG!05yioQ(MmudPkU0*KHml-rlue9p$gON6vIOvlUo-|Yo7+-Se zzU8u9`9ggm0bLZn2??rs2Zoz7FwHL^;_h;~FAhogtORBk7@=yuF}fJ~TlEOtz3{^f zH9e?Vsj9AZRg0c`S2e=7H8AN$)}Wr1x)s9EVmLeVrxx%DNz}3~n>TNkf8r7~8SC*s zd5WHz%hs07C@!5kNmI2#g9mkW*f%YbalOWAXH-DP8TGaJsk8 zgA!vQ?Hx*2dpn%&`Ib_E>4TKM2d_^0PA7dV_yG@mD37OKg_O#Ur}xVZi793Di=2;@wgj)ke3R3aBLy35d3GrQU3(B zl?UH3QGM}?SLDyA4^=EnjV)j=5uXQpFLw`^`Yh#;Fpk|)uacv zS@2j){2t?EM(0FZAZ`NxI)T9Q9X?aubxO}t!fkjKAA!Lq&j%RCIa4zK=# z$;B|@wYat2NnVS+D>-!@HwHaidv}6Y@9DcC#Jm=D29e^mhVC!@5b8SuTI?vv@;if{ z0jI9!((KR5;1deAsiikH5=ht&3z!T{yPr@%v!mlFz1?jpx*8hzp@;4;mI35z&)1HKH zOv1mLg#R!J$4?d$mCO5pyq3lH68vaYL(f;ZV1)knBoI@YP z5)ILq054dlJUF*!4K+C_cXwKBskW2e_W`%tEK0 z&xM-Le?xW!4BgX9&HU4+CDKVizchqx$dTw>!U60r5 zv67#4(2)4o^X`2fRS0ZnC>f_75YyxEESM+oz>B%Mx!B<5Y<-Qvi&aj2;7rrjvxBsf#qU-D=`Ac zM1xP)NS*5qj`B5>)+Ts6@tXwqQ~f&y=XTs|aI+l`7@UHtgfr>B!}fod$~{+bwr85) zrDV?~g0nqW8Qip|!{F!#F85Bsx!n5%ub^@t6r9WbwZYADUobe9`vBGVHNm;ue;1s~ zJuEnv`-Q>Ha?eQ91)-m3Qki(Uz~ERVUS}^9oY&d)2IprI)U(FmsE60z-#0kc_i+@4 z$Th9X1(4qIF`%n`*d1wV14mfhmTT&o9#YJaQ6Qtf-jOUKybGIYX&#%4;viI<>#?ZgPZ;ER|YrRJ%t`g*nWO~D-!$%WdEf}ctaAtDG7f# z34bvOe_!y~WKUYA4zT^quM(W?uQNEyqK4ZIj{ao%`wVW%KV@)J{zZddq)k)jg9b-= z_A@{FvHd(h6k(@cF+v8cad<>7!2XViiEk+CfGQ^E{kFkMLZtFUZb(gPZGJp^O+3Wji9WN_4f1?j(5aPH4_g7ZFCL~!oU zw;H^}D0j2LvD_Le_eX+rxjz@2%k34M%YD({X1V`iaP$w4qvL|}ym}UGNuhZt&wN1= zeq$2;L=yh0!RLT}KK^WQ^v^2t&tC**|9md^J=FMVw6BQSQ4jm4(BP(jDhzJcceUWx zk)e+ZzJvIH;IoOR(!MU*!wi#(432hwm+Cv!;O2N)V{nw`=haOHH|2j~aI6=Xz02UJ zrf!zUcMNXop~orp`^ZIxep5F4$ zGwEM0xQFT$5_}o)7Qqjbo|^^#l=ynVAEo%6g6}2yZwvlyvj2X;i%I?w!QmTdb^KEB z56C}H3f@QYX9ZtI<-RWXY~pVT{%7*fe+qsn$@946c7YGm)v=q>ng5LR{8sQMh#wIA zDdI;2?<3Cd>{)*{`OQcEV7{92pDXzDq~`*`e@A?t;J>GO)eHUyk`D|14sm>sfd|`@ zMI8TBxyiRv``$13E5vy|V?7U&9)9=FypHO-SLkUZ|GX*qJkrD82(X@X(la3BuOiOx zm0A8~(r?q1`8{%RO80HDqU*;Iz!JW(&TM;`0T6Uc22|B6xt})q+o; zIL|9=|1-qb2>IF6UK<7PA^RT|d_Vb@=S9}fc5*q)xn3^`J>#fee-@nm|B>KVQ~V3T zn@LYP*~{hLNby;M4^sS6x?;0ZP-$8y+{rndzDBdsGp z5d1Llqkf2IuUF;%b|>jsF61919uj;z@l~SSpHjKE3VGgl>J$9i z^gQre!GA&gEx}(U{(;~h5kD$;HrZ*5ech?VbBVLx&V@dK$4DX1>-ozB|ClDws|C*` zd#VM$hpv#s zZzcU{^x(ku-%0wjjs0gtyq{Jk@6ZB#h2Va&vsv&3 z#BV0f_Fu~VR><@Fpa+FKf3vqoaJK(tLl4@|`z?PkINEll6knApiFm ze1cZ3&QA#aujcB+KEVsgKd&2lCV}V{nup&O^8DU;ELI2(t{1oC*~IxivV!a{F*u@f z+W##Vd@=F)f?rSk8o@UZuNC}0;%$PzM7&+_(`bM84#AfaH{W-l{hNvFKY|wTKd%!1 zSE1+c#CHikn%d-N`=TzyUO65@4&FCu=U;5=Wf z75v*I-zE4jiEkF1$Nx_RKSJ_P2(JI2oMrV1K9cu#xeW(3F6}g|2j4t9Oip2)YC%zA|Zbd@yiAOA@QYxKTA9)`0K>Of`3AMo#2^d z|NX>KY!dvOO5^3nLY}{md``&oefD+1KP5dM3eNNPF+)F^vWVsfo8~R{b2F`Pas>Y+ z@iBtGL42a%9}=G?IIolD3O<^~(L%v%h%XoX7UChnze9Yb;Oc+G2KD|varXb&G~Txe zdH()&kC12o?-QK;|6hW$|IPP<=>H1x|KCKpePmB2&FkDQX|#?%Mes?)#|u7(c$whK zh+ial8}Z8p?;yTZ@Rx}P1%ID7->=yI;nW}QC3*Hge_ypl=;7z#Jwl%S`LZF8{wyVb z{=wjgzCr%{v(R&d5=;8W?g#1X-bBEx~#5W6G zP5OT#`0t6!_qO<*KOX#Ch*4CXN%~(FdU${SkAnXX$-gi7aB7!N1n2hx@Jj&d;Bvc2 zK1c9v#K#inc6oxz9Vg`Zz3ogPe}wwOWr9CMdiYP{vHm;BKi3QW{N8+n(8K!g7W@#E z`+(q&Qn~*k^z-}ZULnu=Ul5$_KO*$-d)0K>=iqv=oN%#|jr&9ZFOTu>wzLDg23*JukdR}mre_8PR zNzc9{{7u29lRw{1!rvAAY103G68;y#x6pX}tKe6Yp3enm`9Z4xInmNC3st}ytXRQ#N-=kT@ku}ZHYWTBS@JBxMwUI;c3rp3-QT!VT#p>@t z6xYE2AfPzhsv{~@|Eg7}rM?wp@Go3dRoB$u-&-g)lB>hjEe-HzEJ%W5hD1}SCCJH8 zx>bySp+WsmSX$tZpA^F%XVHHQh13QctMuR7p-%fxT>Ow1yAF?QR#ia(`6te(o3WTR z20}P>RyaflN(1^jiq;J{jbUDTjMaZt8scXYr{;l}J|^)85)9}n%Rdh|>Xi8_DF0TG z!B2YlQU(DO!G2^OoPUo<;CYT^@f$W#gi7+9swGaNd6ea)EdH)SBL4-h)j4LIp|9va zY$NHv1;C_E%yC9Bo-OMdVZW69I><E}yU8gM>u+7t=!S9L`8r&d1j+lwXKhw@`k`IUn<1QGU@)to4+CwHR1jf6o64 z2qf~~Uh>~2QjGq?M>WpRenop^*?_EL^l|8FnwW4HO@<$tAN!Or5eWQUfJ$|-dWCXX Uf3zu4{zbRw{JZqUIm`V27bb`|KmY&$ diff --git a/userprog/build/devices/input.d b/userprog/build/devices/input.d deleted file mode 100644 index c214522..0000000 --- a/userprog/build/devices/input.d +++ /dev/null @@ -1,6 +0,0 @@ -devices/input.o: ../../devices/input.c ../../include/devices/input.h \ - ../../include/lib/stdbool.h ../../include/lib/stdint.h \ - ../../include/lib/debug.h ../../include/devices/intq.h \ - ../../include/threads/interrupt.h ../../include/threads/synch.h \ - ../../include/lib/kernel/list.h ../../include/lib/stddef.h \ - ../../include/devices/serial.h diff --git a/userprog/build/devices/input.o b/userprog/build/devices/input.o deleted file mode 100644 index 9414475a292af4d8063da44a47336d7ed9f4ba97..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8576 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 diff --git a/userprog/build/devices/intq.d b/userprog/build/devices/intq.d deleted file mode 100644 index 29aa263..0000000 --- a/userprog/build/devices/intq.d +++ /dev/null @@ -1,5 +0,0 @@ -devices/intq.o: ../../devices/intq.c ../../include/devices/intq.h \ - ../../include/threads/interrupt.h ../../include/lib/stdbool.h \ - ../../include/lib/stdint.h ../../include/threads/synch.h \ - ../../include/lib/kernel/list.h ../../include/lib/stddef.h \ - ../../include/lib/debug.h ../../include/threads/thread.h diff --git a/userprog/build/devices/intq.o b/userprog/build/devices/intq.o deleted file mode 100644 index 03bd3954226b80b94d07ed8adbd69125962519fa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15888 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 diff --git a/userprog/build/devices/kbd.d b/userprog/build/devices/kbd.d deleted file mode 100644 index 3aa6ae7..0000000 --- a/userprog/build/devices/kbd.d +++ /dev/null @@ -1,7 +0,0 @@ -devices/kbd.o: ../../devices/kbd.c ../../include/devices/kbd.h \ - ../../include/lib/stdint.h ../../include/lib/ctype.h \ - ../../include/lib/debug.h ../../include/lib/stdio.h \ - ../../include/lib/stdarg.h ../../include/lib/stdbool.h \ - ../../include/lib/stddef.h ../../include/lib/kernel/stdio.h \ - ../../include/lib/string.h ../../include/devices/input.h \ - ../../include/threads/interrupt.h ../../include/threads/io.h diff --git a/userprog/build/devices/kbd.o b/userprog/build/devices/kbd.o deleted file mode 100644 index f92ec167aaeadb9fd17f295b4146695d408a4665..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12648 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 diff --git a/userprog/build/devices/serial.d b/userprog/build/devices/serial.d deleted file mode 100644 index c094a3f..0000000 --- a/userprog/build/devices/serial.d +++ /dev/null @@ -1,8 +0,0 @@ -devices/serial.o: ../../devices/serial.c ../../include/devices/serial.h \ - ../../include/lib/stdint.h ../../include/lib/debug.h \ - ../../include/devices/input.h ../../include/lib/stdbool.h \ - ../../include/devices/intq.h ../../include/threads/interrupt.h \ - ../../include/threads/synch.h ../../include/lib/kernel/list.h \ - ../../include/lib/stddef.h ../../include/devices/timer.h \ - ../../include/lib/round.h ../../include/threads/io.h \ - ../../include/threads/thread.h diff --git a/userprog/build/devices/serial.o b/userprog/build/devices/serial.o deleted file mode 100644 index bc1052f2d753c8b3e7b76fe33c7cb7e7ef6ff81e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17808 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 diff --git a/userprog/build/devices/timer.d b/userprog/build/devices/timer.d deleted file mode 100644 index ca70799..0000000 --- a/userprog/build/devices/timer.d +++ /dev/null @@ -1,8 +0,0 @@ -devices/timer.o: ../../devices/timer.c ../../include/devices/timer.h \ - ../../include/lib/round.h ../../include/lib/stdint.h \ - ../../include/lib/debug.h ../../include/lib/inttypes.h \ - ../../include/lib/stdio.h ../../include/lib/stdarg.h \ - ../../include/lib/stdbool.h ../../include/lib/stddef.h \ - ../../include/lib/kernel/stdio.h ../../include/threads/interrupt.h \ - ../../include/threads/io.h ../../include/threads/synch.h \ - ../../include/lib/kernel/list.h ../../include/threads/thread.h diff --git a/userprog/build/devices/timer.o b/userprog/build/devices/timer.o deleted file mode 100644 index 9473e6c23b4dc1e77b2230e6bd95756781420ec5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14848 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 diff --git a/userprog/build/devices/vga.d b/userprog/build/devices/vga.d deleted file mode 100644 index ece73b2..0000000 --- a/userprog/build/devices/vga.d +++ /dev/null @@ -1,6 +0,0 @@ -devices/vga.o: ../../devices/vga.c ../../include/devices/vga.h \ - ../../include/lib/round.h ../../include/lib/stdint.h \ - ../../include/lib/stddef.h ../../include/lib/string.h \ - ../../include/threads/io.h ../../include/threads/interrupt.h \ - ../../include/lib/stdbool.h ../../include/threads/vaddr.h \ - ../../include/lib/debug.h ../../include/threads/loader.h diff --git a/userprog/build/devices/vga.o b/userprog/build/devices/vga.o deleted file mode 100644 index 645cedbd195429ef780cf6bbebd6b7792a0850c9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10416 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 diff --git a/userprog/build/filesys/filesys.d b/userprog/build/filesys/filesys.d deleted file mode 100644 index c3caea4..0000000 --- a/userprog/build/filesys/filesys.d +++ /dev/null @@ -1,9 +0,0 @@ -filesys/filesys.o: ../../filesys/filesys.c \ - ../../include/filesys/filesys.h ../../include/lib/stdbool.h \ - ../../include/filesys/off_t.h ../../include/lib/stdint.h \ - ../../include/lib/debug.h ../../include/lib/stdio.h \ - ../../include/lib/stdarg.h ../../include/lib/stddef.h \ - ../../include/lib/kernel/stdio.h ../../include/lib/string.h \ - ../../include/filesys/file.h ../../include/filesys/free-map.h \ - ../../include/devices/disk.h ../../include/lib/inttypes.h \ - ../../include/filesys/inode.h ../../include/filesys/directory.h diff --git a/userprog/build/filesys/filesys.o b/userprog/build/filesys/filesys.o deleted file mode 100644 index 914b57c08a12be5eed5eb5e324859d349f91dd46..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10904 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 G<^K;^^(1Ei diff --git a/userprog/build/filesys/inode.d b/userprog/build/filesys/inode.d deleted file mode 100644 index 061c819..0000000 --- a/userprog/build/filesys/inode.d +++ /dev/null @@ -1,8 +0,0 @@ -filesys/inode.o: ../../filesys/inode.c ../../include/filesys/inode.h \ - ../../include/lib/stdbool.h ../../include/filesys/off_t.h \ - ../../include/lib/stdint.h ../../include/devices/disk.h \ - ../../include/lib/inttypes.h ../../include/lib/kernel/list.h \ - ../../include/lib/stddef.h ../../include/lib/debug.h \ - ../../include/lib/round.h ../../include/lib/string.h \ - ../../include/filesys/filesys.h ../../include/filesys/free-map.h \ - ../../include/threads/malloc.h diff --git a/userprog/build/filesys/inode.o b/userprog/build/filesys/inode.o deleted file mode 100644 index 1acbfb86a830aacfc11b91a064b08808308e34cc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18976 zcmc(mdw5jUwZQk8A>lxP1cE>Sb*vzwW|9EP8>28f5zthd3axd>V-lt&GwD3!aT|dK z?VZL4>8)04ykhM`zKUA4N`Vie_Jdk$i;vsVdu^Nc)`~)VX>BdH+UBmc_gZK6tYp-F z{p0SBoU`|Duf6u#Yd_9Ddk$Mdt1k07j^f~`Wh$3qs?^RExp=LP)~ZSBG}RE!z8>yA z;byzu>j}MAGzevH+kw}c`%A;mK67eR`0nSQBcZZzw(C?j^QUlk*C~~`xNZ-t41d>) z?d8~kN{EFIa#G9Id2*Kwz7*~Wo$9Hbu`u+fuIV~nALt4F>9&96%AbMCog>GK_6$NG z8$5MkukOJkJ3hq*R%g3j%Vv&-4~LFny@x`Bs=Mo`+VnxDhCjg61Ink=L3FEKZ#Ww| z2Cg`!O1J+EvU);Cvxi0g05t4aPs7n{{RoU5u60*jb!A<+r{NeR2g2E(g!7AR?@!;9 zQxWb_DB837wd{|CAk;gc(pN%DPeRq|_##~qil4k~Oj*7PuSePYReXePGqo` zPYT_L-uxjt7R%*30~HpiYGLS9=FWow=oMkXNpQ?bl^Lmr$MG9YjfV~QTw-N8CK9i58wQ0)|b58qZFz;sVI-?>9w3PRq50S|P6H(<7;$3tlt?h|jTM;D*U z)=$Knkkle&9@O(q7cbrZ74nf*F=(j(aC3iV3lix+K&4OBPJuyn1!hAx9Ka?DFYBBc z0%o5zB?2%;Mb^-YjypSsvH1fRh)1zW-i#i8fdKzo%Im?O-w$Uq{n>{7+0}c%#D1KF zhePjyD#erG%}bz_Jq?)s{UI|f8~RO8XwN;*yfxW5G831Y*+;T46G2pX@BGl7Z0NN; zIP=dB4P-+{dqS@*3>_`K5~g|R)t=D)g`rm=@oF}7q`T{gD!u)uU;@s{%))JuhGLm& zSW&~xM?m?pu=8wgq{6)JS^b+KL+AKrGkB*T#L_u&J+;ihPH)U%vpSp{PE$|lNcira zhJkSN4{${Y-!^Z2PXm~ODKO=wFm!MB$2nDlN1(*)(0;f&p*{NgUU%1iReHyF{ysQ( ze8djuVQ7V%ywE(a-#=W}pr3ncr^B;l``5tty3gP2|9|POYN%Cr*Aniox&K&qy?F%3 zoL+7Mg?p@Y`wwVbY;nP{i$h1dX5}3JK7DxnboBUM90~_OgA&6NbYT~JovORo>+s>a z_(RnSYKI*M*L~P=VAd?XrcC$NI(ojFTkXV!&))PwPvmoDnb;0s!`r{_#Jj|Xk~jOU-jP97R!@kC2BaMseml?|&_sm4?) znoP$M@xZ#7sab*6##no_C8&bID)`q5iPWZ4l`ax&R_)PvTY7z9+0sC@QW{n+Yl+4; zMK&a3>1d=mo(?Qo8la3sXEctefZ#IJfuU&=6ip{0sc3ULktDs5=47-n9mRaDE|QFP zByP0QxoT0y4o1GQy*;tP*rl!-t<(rD;(}|H8e@xN{0pOU#OD-a!sjc(n_tJrTn4uh zBZ^|s8lP)rOl*OSqL0DF=eSzbHxh5A*wik}7@>*J&1LvUEoPY!W1z)(I*Ud>p@|mP zrj!+5`%6FutidS7*J9jNu8aFIEgC5P)M#j;5xrh-(@Z>q@iMRyCcjdnT=0leC3qP< z=4>e8y5(>+j`2CAZLGv8y9N605*YXOu7_5mX%jT9f|v>W=6?Dn7ISuxq2s( zyt*BRQC$2f__{k;!U^0-Mpw8eDC ziB=Hy^{z3g-(jY&x80&o4O~zV23UPz~jAOvp`!SPx2YcJsTW?bTYZR<9slS@M zut~jZQY%dA?Lfj?-6@O zmKJ}&d_Vy`AI7L6)L|+>hv@Jm-JQN|AZU8$E~>yAJjd;U@Q$6h-cID@=n-Ou!|h&e zP+4wa`nFf$?Yu4-`CG7l4(CzC>HC!@uLW=&GxBY=e5E(sZh_^~G^h;?@bz9dHL9HT z`0RkPW@N-nQ`dP-b>IQvCD1}IF~-iBY$x(M_#<`>jsr4s1+MNKnmr?T!HhLVt}sTf zqLdkyH0?tu=B+T7p(KD(9g5bs(?*EA6J|EjW5Gc%ICATr7Y>u#(_2ZY(|$`oV)hq2LFYLapbt50r-;*62i;)YdI62JGddF~H#+@c-17KCzb&okCM zSx`XFq;aYUHJU0b&_Nt#QpD-QHkv9cXoXT|ved{jFFImMfGM;aLM~@=Km)j#ocB+9 z<%+j?(NU#dv^buNCUVivT(rxJjv6Pb@^XrAP|kQ~=D6|_|F~)6#yb;6mcet)H$#<_ zECU2<_$1{Yx2R-sNgcR!1aUCG=p2QlxZLrND=9$%2a+SldeRF@pqZth2gOEV1U6{p zki7)PK*>B$?&1mrW3-+k)-%>|>dH~!xU-;|Dkxf-E8&|08>FCfafLRlXjVmCIT~I& z<;#~=V43knMtMlL4{6> zk2B)1lgtNk=r(l${Fyb^j5SE=V80(Q!~0Qq?qjHc1rozdy3eM&p}FhliJwL4E9qX7 zU!7OraxliHeh+EKd3W4cxaxCxSRD>!n{Gi5Ex&>Z;g6q*iiPqK#Mq%sS5=-3xF>nM3v_xBtKzl5O`OrZv z(WXqBflHb)vG#OjEWQjI*qV$+D?1uHArI7$fhGY%-}C~A`KLI$-Hd;H@O5~Ta*ET% zzKhHExsR;9Xr;S$#ZS9eY1#^Oirc%}U3vd*_j%vU@{NG~_v6KP;dm{wruczXZuQD} z-*z8)d!Ji%D?&HwAMHNuuFPz3_uapHcek&yeC3>d8CPHD?SIUD#I4!q_WG(P`IGJy z{<6T_eOi|`qWe;JZFgq-C*1qp8n=7*3(r5G^ID6)2=WiwLZ}it;#fI z;^|CPCzQDAnyL((4|FCIZB;1SqPr~u-3Bk@?a{_mRHb5V@n}n+d3|G2=}X@Gx=FM} z(~(#_)6o=7g8XK9-B%s>g5GR~N2Iec9)maxB~aVgqFNf$jf!katxqJ=aHf#XH#Zec ztMw>LBPW8T6}EB#Xs5FTakPNRl&Jv+Xrw9H7K_vQ0-ZNpeq}>oc}-1Ve(=Izb)d2% zm1s>@wzel4(~yWKDwENc%FT&*6jIF{aE{Wxw7oIehDpeTqZEjwGx6xswrD(>j5R~D zG1Ba>YRbDhNP}vr!yb9E|f^ecE2AY$N9ns3p1ehI78s6CsRiQv97RN{`-Pn9X zCGKwr>Pxl|@j{e#%F-#cnaDeZ-5yoGed;xQ_V(x&U$qpfM2 z@96K%(IjjabT=6XgQxXUU}Tk7nH~peI7%`#XuXk0YbM?tiI84%V${ghB%^vn4n4au z6{V<@>14Z2nwWO9M>|Y?bXLRzv9Tor^mcR>iTHtMG~zk)s$&%g%NMujtx%3q%$yLjb>dl zUi7@u3i0R*=2r*I5Bqe@bZnm4x;L~lP1`#&sr8Z8WCB`5eWZ=WSx4*qkV8G33i0Sh zXw3Rd{Dz1Yg~^9KuKl6gm11?VmW|3dxCJJ08_e6zWb{U>IpmU5rWu|sDJz4fyspah zO|EsSDFLG+s?_DnmoEyO+n|>qGYc!{ngyxmrkVx8>Upyb&ApL0o3B>R#xiHxn33)d zcu?UlZTi$fm3|6DJBKjoi?cg~OI^uI>=`o)g(>vQ?Lu_I;M}^+6Tq``W$w`zT)@rFr>J zdHMS(f4KH(!-u(GkrC<-gTrLO4uTYlOuspa6%=+AbRKMHz?%x}ZE||_*dYNwZe>K6 z3Tc#QIeyQY4cr0w9VD+`J0U(_bJ{UNJOF$W3{V<3UKp-} zKa_t=r*iV2Cf-k69~(k^Bk=*^`mmAWesgS0soc#^FIzccVt$2Q8XElOEO|(Vf9P4e zmhmgxZVwH9bBH@6!*32jhvDqqT-GfR)kncOq+?%%>jd!JF5>(eeIKNUlm8~kA0l}^ ztiU-poIH;8;rNRM_UN0om;&&3)YZ~xK0X;Vq;J7BC{yLgsdhG)}S>oRy&Ihqy zCZ3@o&Gz8W$iw;PTO@x8y~OeH`Q8HZ&yai_z1-=w66|@I_+H|AjRbCX8}PClQo)+}3+LxOqH{S5su!5;TCiq8O*K4(&E^YIb1$@0^Yc>+^ETw>A#HYrxJl44 z18KWV&-$U8m%LrMwMWr=9iu{T_=fDmX(On)-YJ;99qdtQ`=Ha-E=McZZw*GR{jNc_ z>iwH8M>|8$UVe!&g2V0`O%`pl>7B$dZwpJCB}1(}jRE#Ak=V^k@d5#cLEh?nxu!YJ zDI&YYh^35&z2i5DKVc-mGlXIb*|Xx+y4+J3vt;^$iOFIoJ2i~q&qco4^73>ks?$poD>%i^~D zB8vxD3EZ!@I4$8icfH^|o|A$v_TAww}LPyxOv74mk_$3|Rb5i`(rwU~#)$)8Ka~45-Jpr`qE7 zJX&pWyInV0+}3l4#qD-IV(~fJ0&^L#xZU0p7Ps{mxuzW2Z`--Z;sGO~ubVB7E(ufK zcENeP;ZIZ;P(RA|!yktG1fOZJdf4Ljczea-sE79*KNps=r?*L%6(T<^y%Zr6)-VHgd6WjbaqV3!V5f>SkGF@!S_E5%=x*y#9)tKLhE3?;J+mM8wCF?rP~B= zA!Fl$k0bpl!6~V>3jPA=`Mlu2BYSQYd=1HeS@0`}e@$?HpV=jNmeNlNeu(VneKY&> z=cNCzkpCq0?<<0TfjIk*^;}K*d7s1lRVx2?p(jc8;(HYamaif``Xg|QA0_z;A^$U7 zTB-8{?HPBKSq5hvx@o6VfG)33+_~!eH;;u&MkWIGWnc^|BuV zf`5b3v*?a$G0N|C%Y;1ZSuOZBN?%KN)Prl<0Q_NCXK{>{(K^^6cq8${{@mOCC>ij_iY|W zEYJ2_DD-40y+ZIoN?#-RQmVH}@HC}61^*XH-z4}>^5?AF^k{DYP} zKBr=o{V1F9aWfj)ibSa2{8GwK$F|4*nt&0vRSM4IYO&xv zuIdEmadjw|3Un2AwQDF?KcEpLi|bM?4M5? z^=hw>=kvsugglRvUkc9a;hUBotnx9^|3{1C(7c!Ya~j#j_VBtkjX1ZL*Aad%V|lix zR><@GUoE&p^?pL|NyOU(uOXfmoag7~h_gK#sJ*uec|QMrP{_0Wj|+Ye&ENe(51(tl zBIH@muLY;aqdFn<@cz?J>kZq_`LzQ-bq8^Lv6{PxZbm_-APR@OwAg!}EpL zd-NxE(N41GZPMfU86yx}TJKrU9`eH^;w-QKha$+IFXUH{{CrCuO$@*vhE*0v(Z5l> zpAek)(`|y^PV#BNpC-Od@UzLDI|S$d7SJd7V$$;rarVO*r01}Z-=$ln)Gq{oj`#_o z=g-9La{yF5llWMgP+Tw1i`jy6|IQ_jW@G>EAU#Vgj`}wfj|e>@s9iB3PvUB;kmu*} z9fI?F>Aw}=UlIH$jpu(az`rgyw`-T+n`rz$DmcqODfolbussF%LBXp?|8s(K|2{7` z%l}C5$En_z1;@Q9hNFVB{LckHi~RO0!F!3nAvnvQ5S-7WPZr>R5jKog_b}0ADEhwIsh(@O9L# z<$|+(Snv(hu2ls%J!Z9^OO4C*wT$BEc2c3qy9IcFILg}cwSx1yv`+9{l-?>hKks%5 z&ijFW!Fj(iAUN-5^uaCUv7Nk63()vt&ilz)!TEh;o#6cbyH#+0Pv0pxpFi{q&gUB{ znA+5lZiG*SQ|Y9+ujd&29@-d8cAlMS`2U~{6QBMM)w1>^9YV-UW>G~Ydv+9-b1 z2H#4O@Bf)w01BgPczm+1T8hYzy~&L%rlvs*r%J6yOk~|GbFZiU3Z4mLS$eE`XXWP* zr)g*k!Sx5UUU`5bvVQ!n3w6r!15`d>PZE#|z@HszAb~oCnBww(w1pwg^Of;3h)A0- z?`2vCuAw{2OWB2xF`WM%3z`yl(_uQ^u#cqwt^g)=V#%3wfd3PbDU$k|ILWa5yZZmB zuepnq-2z#Xp>z+GUnx3P z%HsZNIQut}{ruYs+K<1XNc($$q0Vafv%^m+OzNAc+zMPj-|vFF;mUW>k8S5!WiiU- z_l2oFpln8|UG%CbT*93G{l3B4vtQNDm#owK~ z|3w^fkNt5txA@4Li><%q7H40}otb(w_q?{sEn4TUX|)8Zu->`mD#^Msu86tv?i3Df!+SoXaJ9sVuIqPy7e01LkLH2 zO}EKyXWQiV3qY!zQqkNph*$+by$f?v^nnioO-bEez@!v@5Ca$%t8k8(g|;%sM077^ z9zTi&$;tvM{c)_Q1*$7S91E(A?qx;*P5`|c=g`21ftG9Eo5ba%T_o4O_hDQo`Ro{d zIDMbqm|`smgpnwBfWs0T!yem!8iaA_6;MlJ>5VZAH*&rVX+bkKlS)Xp7v>mILQDsB z*GYCG2BTZxdwW}dW2gRxu)bU(Fg7l=+WH$vKZ%7jHmJxR5bJRcV_9&lBauLJcpip8TNw*6xYh{# z3WU?DFB9OJMV7+i>!mfn|YY=MTH*N?PzXm2Eo`c>n{snb2pdkbQ zGnrBNKUb+b%@a+bxJtcPZIztSYNf!Cg&G6=vgg>PrVtH#-pLp3V%ft6wR{h`6)b|nw67I-iLtm7=6XA0`H0DF}neP!1x7*E@1B2ndzD7yQEuL z0%;MRrQ|ey&pknv$YZg@{+Zd-m7Bxk}RbviHuR`Vs&iI(T)w)sy8e1b*GdnmTgZ> z8IA~-TYAh_E0B9Qa6M_*K1iVL7c=osG#pql(nLgUWD&|vZI=!u84^Z=)f=BVG$Zm8 zu3Hs;r3Bk4*r`)9A3$#3^udnG;`3yep;JZcaE<#-RZ4C{wsIty=itf4 zBS;=YFv=U%csy}BGTFau;)kH2WV@6LA!dvFLDws8Ssr56>q$~L;wK1W4ghB!z-;zGu5qSiNqB0?$Uw7i3;8WJVny=Fh)R< zAzs!BXuQH8K2Er-5zzYxKg{rZ2+uPdS+jlWlaK~e^mPJleEB=z^76MtW(v%1X){G) zDF}#3*H|tz+jp=)QUh|O_{-bs8-(tOfSrQB!O(iiJqp-a!Zk1VCSakr0~}qU=Ln95 z5End`AuxEO&TO=eq#POKa`$b<3G(JwM zy7C&=`$c|6fex;4cr`VRIPSG?z#lgCp`r8HmY_7b%_yje6cX=_eWfBjPg*ze0X@GWqAvPV)cZh$A;lC$8R~SA|__GZ6lw0v#hU1SP*j{4z8RCD=@CTK;c$MLA(7b@gHOOZi@dj!$%2!f^ZBs{64(M^xsAN z(;v zSFqT`^tGQI48KbAO)x+DT)2nnYd;GNpQAdQVt(}bd4cI`KVM|H-akKJ_-V@P$IL&$ z>SsM*us-lT-){W;(t;O>&~?*ziU=$Vl|~|2hU>f@V7RW^DTeEHxy*3A?pGPE_m9Xl zPt<%HKCR)KP>p3xc}~^N_|9=(WJt)-BA`a7~0e)tY4WDha)%PEb-$*!ZH>r!=*V|Ml!ROx$ zV)XgH+HV6}^cmiRz>2HbK}*R#=s1t}{%-k~DgPXqV*dC(Ib+TBO<>iZ&M*tqWffOU&M zOBYsckMZL>hsVFr#V0`G49)*rWI~P4{}9N!&EKH;^*+V<@y^WW{{&#@Q^yIUY*l)3 zz55;3Psi~%Xm_(ei^)Q}Sq<%8+v)L1kZ8KC1jO@XAI6a8x?d%1$^Iw%UorL zh;H@!B-QU6DPsNb+eF*zx?((hZZvs{4wnQ8@pljO!R_&jn3Wh1A+GexL1290#`DLR Ry4eq}QC8m!8w1Vl{{yoZ3Df`p diff --git a/userprog/build/kernel.bin b/userprog/build/kernel.bin deleted file mode 100644 index 9a391e851ec8b126ed17b9bdd92eeb30b647d85e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 159744 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

qpUr&?6R1R+_XT71E^>&|ptM2bSjY{BtS^7C# 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 z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF 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 o{x-TeI$Z8K)e$C+``WnY1&iF!T5>l-;a zm_5#z>(Qe-u>vbc3x(Y7lpz=ZM6uJTgRD`AoTQICB2J3ADf}APm7B2xKL}%fvxd80q&<^Fe^w07g8OSvZVO*87cN_~tb6U$jmzZBrzOXb ziZvLX49R-7c(56~_&nZn3*Q)~geV&7fn44vsonW{KS5TUkFP&!j_DN1wreWf9&S(G z+>RieS&73YTDW1@-e}qa<;EzVE}CzsaDAD^w`!)Bu&i_IRHBb5EbF~tO}FCtXhXH> z=>0EX!OJABYzo9&02WlEZ%NCHNYq~!J;J6z|EHhXhKXrIJr#{kPDskd@lSyjuok%> z(#Ed_y`TarqW4-hT zcBc+!Jl;&nUDw^wg?XGy4z!c@E4{AgUW2&0>ni-p$X210?K7MX*-7dNS)6bGs0F7mnxh7!zC#SaHLp($9D5Hf3d;1Cwsv!+ z4IS%<0399T(lCRQW8JkI*tLVrY<5@E-BQcz|BkinY;9ZC)3KrTwbayI_#riIv^D*q z)byU$S5q3)VQA?%a_WlqWu0wW&HZ~cVd4&LCrEO46Nz6ISt1;ytj0-R&Uj%Qm$83E zR8J65{rMZ+#@v>Nd_^zY_?2Cq%X(U;c6A;w0ro4Id3JSpBDw2V{OYhgrY*fV6M=I> za&idAm|!}2mSc{{PjPMkTgdf>u`^R$mjmq>5ZeNyPRg9)SL#w zO%qzC?Jo%l^=1F0LgWkug|g=fWqj zM{pc1PeTZCPyI&|cYW(x?uth>-b|I??uYWn?t^c6=Gy*;_n%d$2vR3d3uK>S$F%4P zA70LJLQ&jg_9i)(gDlpXu8p|5=S?T6yFv@zf5?Z-<5!+`rQmaE%Ni}^RGKd;TvG7A zg@U--?MiiAAe(LkX(A3IPl!V1HYp8JSkJg%5pObrXS&0pfs#N`n|eg7vtnIQup9ajouDi8$EiQ~YK)ydPXVqQX=2wNC)i6(s z*J_W+a8lF9EGz%~hfon$Gaz2te~R$*kKgF_AAleGhAP;hUDjNFrkC&Tugg^iDat*` zv+n^VF@%^haqOFqIAX#j;3V9r#6ubrPEe>Y>R7yk&|?-siM;U7SE9gtyA+R=HSV*bVqA_f!R-Jj@BjXW;I z(ow8Tk%-E5=cN|MJIJ)D$Dohx@;f)fM5E)Y@W<`6B=KX|K`MXb7K9i!wF)FVBxATa zLZ&FAJgQQ48*)4*_2BL;SlyD$@iV^~0G@7Tmq}0I@=2)NA0A*&HLhK=>Y^cT92{nn zAXo9^PR``co_Uh-)HPkpR!*IMp#3(SdJc|Yxmg|EJL4{>gr-(+*$$I;zCxD985}M~ zVClClx-8wk11o^HT{saZCCv*^NvXYX+mhT*)D%v&Rv!K|z$m`|vC~33#ZRr(J8l9X*i@tEyd2`1?8sE9v}8qf4_B z^F_DK&-Cqi7Ea*oWaA-Na>ZZa*^7npzx`+8*<~Br-XzkyOHg^2<$g&&HHY-rwES9# zzq>cnzX9vnp#9+~{FUihJ8(Hr7v=BG_1T047QpT-!P?ejE-yF%9gwHMj4K{;Li zU>_;}+Pen^7>u5rHtnz2b?kU_a#j41y?dcAwneJn=Xc}i-&CFob5GU$a$Rj>~&_-Wm0L<43Hn^M_tYii6GJ z>ARbf{Sj{1Zw)Vp^VpS-@jgye?BHV1?dStM!Kg6@7INcq*3LDpo!;8kwJoikE0qUZ zgvefZZ)eN06+IoehuG^~zpSm*YiW@yhdVl3aNPwQ!fw0X)3Rb2h}n&4doE#jw{T_C z>qYR$SuH&-PwVHbZ|~~vsY8^vzT?tX#?rO0DRf_l1=cO=UfGNrZ-$!v~GPXO6=+G=~~^=?KQS{ zt!-`WUEbT-)7!WXIh}T<+y2nV2CfV@lqIcljgXd|zFY2I<&Q}kB&aSE5tt+QqiZu;DE7o?cY+W-K+XvbR zB69tD26}osTj#d5c4Bw(3V_SHSG3Q)_~;|29yzOSYFpjZ(~#{dAa||pK+fIE*0xSv z*M+*ZcH8Ic)}SaNtYdNpK%Nz=r>^Vn>SL9bcruIcJ*tCJt(;C1!(Y}Ab} z65Vo9Zz~A6juTofU8~S~>7+2x$s0Y(*01&~gMML_&n2?8W#h6ntG!;_P~6tpy0T8#2{c&&UPH0#z;7*UI?z~e{jv>6*VF9qjlCA?_3LdG z+5TwR*xuUNf^ix8NN(?LX>08fiUDrJ)!$mAWYU84-n!QAwH|LoZ&}f`b}g;}2WgR7 zN@qMd`R!n2y$xK`hoybJr~@hnG;6IC2CV>sqhkUg@9h-L=wTavS2xO9+3K}-ty$UH z4fa~Q3{~FP>2sr^c zs=Eta&he$KWG9H$($ldLTV&R+uw248KF-O!#bvjCO>65qV)u0SO5e3~w_fBTZS7gt zbx>5T-dQJ|al(Q{EoZ#_)KgDB^{tNDt1#zf$u0HhZe828q1BU&L03=+d9PWq?h^0h zQ_ni1<+Kw|v@L7xT(*3Tsz`R2ZKdn{juord1Fxe8_pG2YN!R|Rd2-JdW{#}z`5PAW1AR`!PD2x^VUuo|GCs$GB zkKd51AhHq=U06YHB2OiudmcSKfDj-&f&n4{4KC8@*UU7TneKGYA@_uNzGoH}*t zRNdQCi1#oQA`d6jM(O@~KZfvHv(%}M)N7Mynv8r}kqF>?V8JQk0j{-ldjT^|rH(F# zjx&t0i3~(r+HGo3t)l6kA3ypSD$_L+gHK9 z2JEY7Zm2Sezf2>8#DyZFf~tl;0;7I!bZR(}79$Az$MMl{3#~K^KNC05o7Oby@P_6% z@QKOxxV2=tx?&Q#IV+pK?RKZ-5DkOQr6t_0vHqwm_0QKkdmO&#gd^U5jb`E}8VvCoOFeSrMp>I2lh`PsQkdrZOF847FXan}{AS#elN~vN z#{TAz)Mlba?P|NnxJfM-G(e=SjQpS?V`>dUHik7l(hG8gfQ9i-d)h>M4TgMcBMnso zXw0`RZg~()*TG`sYo%-mIW~x>>xYSCOH4?HU zXt@5!G%1QW6nCbS{8rnU%iaui%$T-x*pCB!_5LysyC7GZcT8-2o_AY^fH8>_vtt68HSOxo? zAk{0Q=Ndl|d!!MmSt`w@4Ed;~n;&*WA*~M66AZ1TN^=tN7HPuds6L|&N9$?CZKBLKyB^_fhwO;WZzx&64wb8|lQrAlVN0)L`tBYPj4`Brm92ROHyOkWW14z?6gxt4TZZ3G3zRh=tb1_{veZmJwluwv^w_r3FQjAvHy;Dkn1=1#!-Q6@PNt8i4T#2O+d2y2t3Rd?-MuQpxdsdwibTGb?Cbd{b zEY?-brfcJt>DozswA`8scYJPefL?>?Mw`u+HKArMmC4Q;3-xyMSeDad_Qa0G^N^K{ zA(PkSTBAC`PlO4UWMekNcf(ArKHfy)+H4{gjAMY7x=G}+MD#KVY9-+@S|5@iBZDuV z{x!-7?aS+HB#h{lDpGBWza?A-k<4*rbpl-&g8}+Q6`ET*h`HTJV+h{lI7qkxS=2^l zSWb|Ok<3Fo#@hh>U&xSu3x(b>)hi^|hrC0LHij|@C_3wDbS7Ies2OJ!(nK4Yl=!dp ziBi_tU3=J{8l7nBt0ba8rCDy*;91UgRqZHkL}!UY@L~K!#k7?vh>U$5O!SA~tnPS9 zP;_6Nr}$OcAIC(W)d?YLS|O83&01D4>wm||N1lA73wsjnWm>0`dAH=V0$myx?6)%r zrpPd(lQCmjcoJ>{M{N&1(zHR2qH%C?9SI`@+o`(1irEV* z*QyquuxOE!25cHbYoc0XWkYPU3h#VlI6%{28h(JSJ-?5CQV)l8Y@slqbp<>*cQqiFb`-BQeaTT}q~G zoGehMtzw|f;rkAjR91Z%LnJynnc#A!sz#?Xi6O7ibW?n}dzHw8|1rVAG{W4hB!A-8 zDnU!bOrv52Ueg3mg5*TmNK6sr@;H!W0d(?JUoEz?r3Tjm-L~kanGN)HvA(cl4bmOU zRlIj^?A7=YEH@&YGn=pR>;N$jA{3H@A+(tqORNz=UGTxI+r+26r@Xy0uC^aii))r6 zwnHO(`cg;9K6J@K=b~6%X-G1GC`c1)kMP}8Z4bdhRR5Y9tTT#LN%T)!xRlw}L|eo) za#?z|S30V0k*Kl;QPZ7F%1W2$j8&;sl2YL!1h3ax`hSK?_s@DYI<>|yT;}K#PdIsT zh5*ac`d6@q+f6JSV7{k*G-aoiG!y1oST;pYu(GUkCamraN99hn(a7WpE4x;uo7cb- zw~$BovPR6 zt?P-BWJV+P)g_rZnFMMXEZH1)*wSdx3CABTANZLnmoJ2wc!a3i#xn0JEoC=H+X5VPZF()9C zH}hui60I=m48yvZ#M=_J*&sS@;qfpaUdyUBv;rM#bUgFD0zL@$mDLY;ShNDM5e=ci z12SU8w%smcV3Z#sXygNiDb?gS)-`1QgajQKHPU|kKh~&8d>pBlTM}t2jqx((eI2B9 zSdyynyR#e_cBfqxu`ymZF$*ZKmg5?RP5GAW66?m}@NzH{l$j=|+tp4>77pc-5@P{f zmWE}yK*rx{8H+^C<=`^azs!(O5eKbGd%0GgX-26JEsv|hd!)Pu6Dq_=6R)jn*m4c= z*jAxkEcJi;jBHi?uz?){;d60)|HLOzM_f~>H}fdDI%o$vtM z;g=C%B@Q)VHm=WKrnIwlsBRD$Lco$Ku51{I%vm0j=oADtwgZd>bu@4}U&$Gu3qUqa zY1da;${Z{SG)Ibn@UK_vY(JF=;b_&a+jwq5LW$c5K_JH*0ZE&zRKg7@U)xsZ zDs}V>-eG1aHQQK{hQxXU)Q2BoT~?Oa;Zj(cmSf{1O9x6NYtL#kPOCL+@L2L)H>Ip% z3aTf_ZjnupLg$w})-gQesBB8R3X_mb0;9xzwTn#3Y~0o(?R&^h_$_HH8XtznlRDmx z=SSVzB`b9}=VSVaOj(28eRppjmq!a)lQarBB3XBbZZ0EJy~<>Dx#T1ul)oIH&wP*~ z$&(RX(Y5Oxo9QZT#|V+EW(br4%l9s<|`*MdJNaPOCU7 zl+;g;5xD9Y%k^0QQ#c8C?8!!P%0D9ZkAw) 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 G`~M$QhzcD5 diff --git a/threads/build/lib/arithmetic.d b/threads/build/lib/arithmetic.d deleted file mode 100644 index 7e4b8a2..0000000 --- a/threads/build/lib/arithmetic.d +++ /dev/null @@ -1 +0,0 @@ -lib/arithmetic.o: ../../lib/arithmetic.c ../../include/lib/stdint.h diff --git a/threads/build/lib/arithmetic.o b/threads/build/lib/arithmetic.o deleted file mode 100644 index 5e63c6d0e09dfc709a491de16e295c08b99e2d0e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7320 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 diff --git a/threads/build/lib/kernel/bitmap.d b/threads/build/lib/kernel/bitmap.d deleted file mode 100644 index e727dd5..0000000 --- a/threads/build/lib/kernel/bitmap.d +++ /dev/null @@ -1,7 +0,0 @@ -lib/kernel/bitmap.o: ../../lib/kernel/bitmap.c \ - ../../include/lib/kernel/bitmap.h ../../include/lib/stdbool.h \ - ../../include/lib/stddef.h ../../include/lib/inttypes.h \ - ../../include/lib/stdint.h ../../include/lib/debug.h \ - ../../include/lib/limits.h ../../include/lib/round.h \ - ../../include/lib/stdio.h ../../include/lib/stdarg.h \ - ../../include/lib/kernel/stdio.h ../../include/threads/malloc.h diff --git a/threads/build/lib/kernel/bitmap.o b/threads/build/lib/kernel/bitmap.o deleted file mode 100644 index ca6d6fbbb381236b30091603c3855e19d7fd06c8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20304 zcmcIr4SZD9m49z0z{5xq2+|-Fhi^nP1PBPqM?h01_=O))RCJgmlVq03Oq|SEP^i>^ zCE^FDU0Y2Nt!;HJTeekd#ma}SK$q>Zii*2cQ-6wC;rBCcTbusWy64<`&YSxVlMbcZ z`y=!2{h$9m=iGDeyYJrn9=BIt@-?4rTbyibo|P>zYFQaH>fX?v?*0c}l4yI^{O3_?$DYt@?}a)JoyZ8a@1CE#Zm45l=s7n2<)P4? zF27qn0A{;)m4MVk=>R|4*YsNHHOi%pwcVkP63D{Et4kL5Dt^ZjN7t)zLhE;D27s<^ zD>DkQ7ts-^1@L2Kx~50H^4j&a0(}j2WV%8fwMT#rS8y|jQ?sj&w9T(^n;iNDH$L<{ z=U%)C-PpxN#jSC93%>kM<&E3!-q1Zuu>HLuYFb~-aGlNerwCE|?h=<&qB>m#da^bM z0TX;>)Dx9WZvCv0jg|{ymx7;}o{mEss*kH~%;by4`jd)=6`Eb$lgg*-&OEx-t~qX{ zM}{`m_UM4VAzFOw%)VvWreiDhU{C|W6CfHFFg_%VCc8r$A<7$T;ZA$cAF^@8_Vk1X z`u+~O52=>?@ztKt=#syKdUAa#yM7hSBV}$})IFE4vv%a^EFCZG_^!Mi|MQd5wG^j@ z6S@ZGq>v3aHO>Mj2uB}*S)};eyF=|Sm)&rqnj77wcJyqheqYZo`P#ZWkAKBGZhT+0 zR}LGDb9cvEx$gN*hEEWE&lJ_Me?#@*lXLA?d0bO&ZB*TGOTK3QTV7qYU7+uX9{O-M zfZDxzwI0l;bzgNaP^@E4sE;?ZS;ohJ<9ctU(0*3y}H*{j0>udqz-0pj#G`` zk$nEC8~@}Y_*PzBrxL;c%BOW-bq`Ri5J$2CW)F&@8iAn>IaSW8KAh&VxmY7&8o>KvH1I;t_;UHFhcwy=0d^GxFr)$$6Di2B_w`*GLs;U9=-L+L^={nw7GWcBMECup=A{)nu9mH zb-J#S{k_&ed`>?U`0>Yg+I;+V2B?DFUtN4kUQp041|AUGXFFP^nFacy>-BS#F1r+U zDHSF5i0zP9Bzt5f*3|j0J_}jLayG(cptBZ!PlG?pzFfJD*&6(TWOw4;wXhClnDcFJ zcH6KOD!GLgXglaadxKQP@wPIEc}Q#Y1@zrR`o`Os^KD*Qgd$theVdmQ!U)I~Lo9tj zkuNHS!DQJJly1|Phe7Q6G6EwvP_@oy`%t}hso3MvIH-cj?yLt6HnEtRNG@r*>k=2q zrDB_0!rige1}X-s_+x1>{$SE$31&qQ4?(~lO0F+2j#>5@C$!@p)ZsQ{B?Q$|uu5+S zO=xT=_Hv=+pzl6CVw{zb*DWnj&Y?j}i}VFr`YtfAr3KuXI=lt!lny=@m%6ry3g;P^1m`~{7YuOP+#0>^-F^YUS;Q>m0w?Wd;NnWP^^3#t9oqxMseS}NsK zd(>2WncL&D;5J2Xk7~6`wYNvL+9ldsDuqZ!yQS9qY&qzjj`r(liqloD|NUWvqyMja{8wZcuiAeqk^iq7{=Y%~4@bo|m6og4 z3sx_xu4mx|LGPRFeve0eGUTVocnhkWc_j!7PO4O2lMoadaJ@M+_mV=h`fOr_D{SsD<-)I9ktg)zqzqtDs=9jtV zFNfy}M&ctyy>EI<0@XzB|_G5w=Wq z>wc(^Z-jaJ7^CM#9Xn2sdeoza+i8}APUzvb8Vz$&5ESgr&&bQwG%eG}xS5$%l(9SK z57g1SncCx8ZZ}647RX}Ev^d_?vl{g1)+>Vf?8kKoRlWhOaN0&0yR!%wy7CP=kTl`n z@C~5Agz1rm%Am8Ck-I9yqo8_@5M$Ha=6FKgE6mDjIzW}3I6G+1 z6#*&}fAU(8a~eY#yAyAA&7Z7W%KWjW{$Va3SC^Wv2&jJ~YxR$CvjrtzWfXhBvP99c z2ixO|N(=o(BZ>ywLk5(9PTx4Iuy7tguofR?`HRjkyr8hA6c+M?!$|K}3=~*Xm)icK z!a^k2Ko~H{WzPbsGr_`Y1CfiF(}MQ=;YwYE&XarePz%` z9e3E)V0$V^2AOqgN1C+cl+# z4;>BOP64;ia7`9Y94<`4LtHru?LoC)ArGinMjlXcI9a0NnWkP(Lq-H4j2Ofd?2Qas z^M}tFo+#3C=squyz}4!x@CU0{NYFDzGWS*nY>fr7&q@Jg+n*H;f?u4o@Ex2jH?Opt zjV0>inT9CtYI$D?`&p>amTqW>HU^u~KICIboo$HLWtwz$PF*GzPnX9M^Rx>CwWm<< zkFj^QPv7axowjr5w4F|qe{gW8b8%*yue{Xq71;gv_s=+)W~bu1N@wmmg*bQg_st)= z?RQS*VyM?txijN5ITZ_cW-6VF6(J3Bt_-;*=Yeu(bJg#FwZeInt_K!!+0j%{$+w{N zR%f)UZm6%a^iF5JTQ<~dpBm98$oe0}AK&=F3SQcO>w>(s+8^~zKz+VzsLo>-PtRM4 z>!i5Ob<>@>&Ij=0n_8-W{R4weyApfbHuS*JM}6lhiw#u!@$3Aj0ogaUbepfD^kV<` z;7;H9r9M9listCba6_i0)!ooX)7b+7JRS+BS)^#UMB~?*354gQgFrmO$RyfgO^IkjpuRbhvKmv-s1;8p zngTA4=LT)fNjPfpK-m+YzjS(|k6GH_SR))sG=xp}lyj@#^aVF{(Rj2aoL<%H#sZ}3 zge43oGjK1!2~7)lo2=JNTnT!-S#()#;KHd>1Lp;21Scfv_#8WlMtI|O5?3@FolFxtd1EtpQ>L`-kM6LqxI=zN_84Ku5R>j zYa|h?*P%W!-rQ;8cnF+YVZ|eG7DWUMEa&xE7MJ+!&6?7jY>7_E)WHE%W=bnKeEC&V z(#{9xlA_{J^AI)dbzc<%eDVL$<<*f%Y7?d{RMP@SmUvO zk#-QV90@~FV14ps4iTI!Q_zLbuTPx?if7Sq?j#Z}{e6ZWUX#NbQsG=4L-nwqkUxvc zyhp%$3-K!nSN9s_{gz&>Q&C-l@M{CUoj~4u&LMn1;jn~NX)*jF{|J?N=d+aXZo-S{ z+DJH5QiNG3wD$_k{=Fw zb0xn%?L9%{x44yFk>6skC5{VgZ`uOIArPFe6RhSw$m2DamY)%S8g-?*&jH)p2Y(;& z$5PyQv;G^x4-wAeGu~A1AzpaDE%|&xCKLA;&LnULw4R2DqA|K;M4= zo@+eN>Hs!QYC(a^CtQ}OwXeIxsN+>6uZDwDXU?8sWlQHxtuRZ|r+Z4X%u?k{voyma zn>pK*&93C73$47os~29ts+A6{XuPi*33OL#=DJWUfvAWZ2sUc0?bWi7D4s>Xx!hKp z3)W-qN(iIv1-%y)3r}2}5l^iEDUbUHR%xt6b1wJQcE{ZwHK|dg_Rlb%Tkbr6mw~IJ zA}Zs&fC+|);`98E^8zNsP5z%0s&Rala2kR{NO*Bibs!%y@UxIW>3RbM0vw>r~u7f{JDS>mlRttQ; zrdt~Y&h2{Gzyrj^%QFU!cI!#@qQKeieu1;yHwDgij~aM@bmL_J&94}raRxrt!1)=0 z;u-@dm8#Zqf%CfM2LfjkF9@9Z1vIatKc@Z>0%v~2z|Hr+hg1kQFt0%yC|3Y_gW8hAiy)<1U{INIGnvIhmucDD$e?QRn|+kL^n1Ed=- z#|?a}flnTw3mi9|_bLU>{>&3NujelnIQz5AzypTeTMXQc|5|~w-Ma+NcE2ldw)>=k zn|2QxxEcR91kQH51kQFp7C77evw@p-r#ZUu80U#PtA5uQIQql!|CYenpUnd2ebZKf zvp+vE@PJ|WfPtIwe@)<%sLtC0XS>G*&UW!lCMIle05g=%LSvA4ylv1$>uiBfB7C~Q z+3rGtv)wBUJU}||vc|y8_`hc0lMVhrTEC;8CcdN({5}ImmE4ct6*#x+`vR{*Ly&$d zaBkNg0}m*s{`qeMN4q?aeIRhQ`?0{;?wz#pdu+Q-QF>@sjXYvA-} z17}}QHi7m%s0W{Gynb73;8T%EiKa0N-NmyKPDEEYJ_A>xLP-3{81fPS1A>rv-^%#? z^iUnH#j3sLbM|b)k&U3U ze@f-Jz~7{Do4{94+-?D)rfr<6=J{`{^F!4B9q>EOqzI!Z(8K35e1EVWj?b%te?9rr zCG@{V<&OlP&xHn2ze)XP6V7ofCH?0K{&XrY5PUw5Y7l((f34uZjSm4x_ewtb{T;#Q zbFiI~uhm#@3Y^E!Cj#g3^O>O^UE$}o+}}O#Xaj@AzNSC0J0gmXW3>+Z6~ z7&x};F0wa8;ExeLN8m3K9wwaa&LsUY!RK@DhXtSge8S*k{P~>0+$W-+TWH)oZ}1WS zh;WWK&sY7(&%=Vx(3pH%bAe{XvB0m=jd_3Vx zgr4=J=NiH1_YSKBpZ)o^z}cVg3q3!f`EI+wUm^TOq32p^@5_SE??*lqeD=pr_czCl z{TWO+$LA`tJ4)dHK=`>r55J!<_owJ0zsIQ;e7;|97C4W?+YGxn4);_1*BLnK{{h9p z+|MHP3E^7=e=zy~w7_}2^lQR7J|B~wBZANGtv(n0YSQnc36tZ=@4v57~cy54fcd{XZ6Xg!DWw@Q(;T zEO74kcL+zjnB7kN4-Fhca3%Twdx7KoG)y)&2(R#md|ua%Bb?itrg#PgpWmxi3qHp) zEcg$iF-UQN|5C%&DuEv){7!-U$^QogK9caq2*(TVJEjo+wBYmpcdy{H|Az#hKMj9J z@cFyyZo!{L{(mX>tiOoX-6%#sn~2ZraqbtCVZv`+F)^R#t9b&iqxOafXFa;MWrYQw z_3*xd^)o*u_>8X-_&6FTYx=;~34Avx+92>zG(X%caOOWC@Oi|4NZ?mc9KI)T=F?+S z#d8QZ3a%xTmvOtj4?I9PHlISEkSc+5KQ0$IkCU|m=kd8!;C$ch7C6s8T>|HMPu=Js zV?TMm4N#mI=Xsm=qm1)&YPsO^^K`Ai`MJMU;JiNBEpT3Uy)STHPdXG__J`NilLXHD zj*!54|Hb=z*2DY04T8`6%_jxU``rBk=ktMXf%Ex>{?D!1`184n6>MA8l8)5DHJ#Ge zX3nLe@klToU75Cm4Uu%j3f8r?S;16N7nD@Lx{oCqlfc36xWkdUx>WQQpkZZ#QjtVc z6su;jcnrR$Bsti#g7wLkmMDBS8BD-uqe1wrRewfGm7>jI_30^%u2a7RpelAT-+!#B ziZb#ucp45&Q}5bw3CesH9Ga|iljwfOdm8J~^1~`4;snBJ+8`9ZGof=L7od!^e=gvt z^Hl5O87u0fVFEdwwvzozgh8H(c3yKmQrw_dzr}i^na%Y1eSNwYEAhnAOV*Id= zWc(HbCUpX2-Af0$_??ZJMA5ntgc3vk74#8Bg;_ZVcPU`G{6F$FU6Jdf|G4y#{^N5z zm;G;&{fVMuBsUKAbJ=$mfdCSZGqjIgA?>dL40W=fkX7kPI=H@C3@oyOkjWLl0L8D06l45w zC~|#{YcAWUJ2Vb|VLgn>A>lg<{B~2;$1x#X1jMp>C#j2d1PvHT6xDlz=-m%_0_dCD$|J=9!+{o1*2|149;;1WCP-9f7Z5IXfuqKDqa@DQ2#;eEU zPctw61XJ@b1@v>u*|+mqE$Q>0Q)&Sg->c%)=K^b5IR1U#7;6aahGorgawyv+yfKgiqX z4_9J=D!9_kuAEsvTxezM6F7)(H0v&$J?2pN&z^|JtGB%xuU3v7899v|8(4)A`@+`K z@x7H}@x3D;@^aAg@#>KpIe!%AU)noz`luP&*%J}4eaaSmBMPQY#j%>TemQOCCQg zOaWi_T;=bdUL?b@+-Oobs#Z?^!Ol)XF!K=1$@razD=*sW`vU9L+fLgYXyU@St=Q}? zh*nQw=iWVX0$P47UWL{}3(Z6Wq8eH9_{fO`)@nPFYS~d=?yC8hgT~+rtC{n09ntC9L4gExl%ssT^>Czn@vYklgVN- zRrZRdXueV|RLVG}x}=O;BAZX$rq*s+{WC495zTF0bUPr1?06T*HunV|h%`g9 zLrw?))2>L%_5A?pm|M0XN%VH4T~J;OZ`}pamYq9%(Hjva(FD>FBebT~y`6EqTye*7ibgF0kn%{SU)kM*MW%<9YCqj{vBP&aSq@-3+=zg^usq% zD71gl51<+9FmTut-SDTJ`;g?ao(N}d1UeLrYc@33H}G4#ZD`HsJcAQuIa+Y;B|GXy zBAmGgz@UlnUL+x=jvNTy4g#V5yL=4nWO z9;R&%JA4nH0}rMt)5ga(sv*Pg`rWA9u;+ekPXyg_ZSDXltUxbL7N;+lYl(2?P|k18 z&ut6;ic`tVlwGWs^Yv;vwMOsFKyNGS;RM3s%w1`_sL?}zek8v`BWB>YXia!rOoTI+ zu|=D4V>$zQ&L~Nk(L`j<*cfKU2Z(UyYSvIU+E~d#Zp0_sT77a+lTWsv?URe+KH0iD zAXf$CnLTV5*NNq(wMRKio%1@o+QXe^buM+5wML*Bq4%ry_A3E`ZLrG;ceb}*-hM^9 z1Jj|YLxnrBGTJo=OR;$g2*M7(!bg>AC1u!-Vdz9-G8A0Sza-p)4Tv)U5AD~c<^AK`|C&Du0z`|eg{dn`{3{+2i>7VLl?VUv&Y@d8;@!mZ?}Xt zbh$^}bKG-6VHhCH@>B)lzH}f_RysjTL8_-pllfvfib+r@bE}6eN(-^GIG6K5ZDqPp z1o`pAq?avtMOE^qk_E8hsYGHrnZT}1l#>&ReN88`6;Dk#!b`J4x})Kot0WrwoK;sjQK2}v#xb+>J%g9_UOEu%orv~s0kh*EoS({on-FVX0K@QLKa-1KmpZ}D3z0`n|cey zeA!Et^F@`-=O&{10ctf}nn-(v@}wRWn(o2;w{mM=cf63ukB^tUz>4ma1b8f$z)$L? zgdV;LUv4Z}@)Cuq?0_mm4v%9~Oh6Boy**`B$(1q_InUe`)b3;kZwoLT0xXE!m&GR3 zRG>S-H4eU)^`>yMvC6`L@{Hw84^d=G|ygVe~8ludEP&Deh zix6D`X0CR{^V7O(BsS*rSw%jviFg-MW0mo7n0T<16L>u_Ls8?Dr&WI1E5f|l4bCS_ z0D4opJg6jL$zr{A=;;^FQJ9Um^aE8vgY@|1|M+lI!cI zef}!w2P`_<_W9d={(9oCM9Ego8Uk4L=Mw{(2>>FpaA% z--hZkXc-qy`X2|No|VIZqdd#$H4WI03D>C=(0l<|1E%ZQ`4^C>hrihXZ*O2{Wdr;I zz%kBm!yAiU+weZGfqWmy>kB%_Wl#yq0O2`G-S|d*1>r9cuGcomZ)#wFO9T8<4RAjB z;bYl?UEJQ%DJcj}Jb7}+L(W#N_d!pI#BJe+xaa&O*)Olt5RgO;(<#6A3!?C}L$F$@aPHpYJ%n`b!`6ZXq04_NYN zGYId;EFA6dKK*P1{AGbtRsEBNzmGw9|Hi`Y`1vO+j+6Us83Irk=XlO-fa}krb>ue) zd2JLPqZS@z5Z-(iBioKMYsuUFJR@*6b&rMH{rm$9$E~A43cnOMpG&V>__=Hx-v4Rg zXot_eF4~WfZQH*@;C#OQQ3HIZz}fzcz&ZW{0%!YA3!LrzT;Ocy-v!Qgek*Xca|NB# z++LQyUf_KGPgppvyEX8K=5|h5uOqFzY+dL!a4p2 zsGYpd7~gEnt3MZZT(a|wu){a87X|)(lK-W!gFgsjc}vJ&YGC!Akmq~J*`&w){A-fC zP~iVX_@KbUROj{0?R}o`tA#w@lTw7U{Qr>s+l2f*gxlvSLJt%E6(N6=@P~x`0^xrp zRSRIC;N{H{L6&@K-m8cwd;8y&w1Ui z1b&L<`3ZqvOZI;!>{qEj`4bX~p-av)&!7X5@fouJet|zqc)!4p6TX3P9`~P7JR?G$ z_w5}5pCUVdBJA+}svzV)K=QLfp7XG(kSB5V4S}CYj7No?%c!3;Jn}dO#}Rg z0&gb!&o{td6!;N}^QR5)UkJRD=G8wpz>f=jisE^#0e({86|(SCiz7I$M11iA_8am1 zXH=|o%Tzfz2JdpwyeFB0&sfQr{&6jqPL`7@HdcaPxQlsH(OmNlE0Y_~tC*paV`KOW zPt0P&|J}>sZ#p)X&A^XNqyqj_ER~;{g8#OsVmbJwF$TYcnqMAC$(u~*Un{Bi{{OEi zsA5;}{9;SPM9BXvK;6b->MWpeD+&?P09ZI7+}&SKbw#j_fwT>cu}y z8wl%T{CE$L@!wp>CP3<&m52p@00XOZvy}322k!1X7nzQo{eH zm{{ze-*FKs3Y}pPKYiBM5$x?f4wP{7V(R!{&rSR R|1U1oX4GGrm;aRd{|hjnuABe> diff --git a/threads/build/lib/kernel/debug.d b/threads/build/lib/kernel/debug.d deleted file mode 100644 index c810eac..0000000 --- a/threads/build/lib/kernel/debug.d +++ /dev/null @@ -1,7 +0,0 @@ -lib/kernel/debug.o: ../../lib/kernel/debug.c ../../include/lib/debug.h \ - ../../include/lib/kernel/console.h ../../include/lib/stdarg.h \ - ../../include/lib/stdbool.h ../../include/lib/stddef.h \ - ../../include/lib/stdio.h ../../include/lib/stdint.h \ - ../../include/lib/kernel/stdio.h ../../include/lib/string.h \ - ../../include/threads/init.h ../../include/threads/interrupt.h \ - ../../include/devices/serial.h diff --git a/threads/build/lib/kernel/debug.o b/threads/build/lib/kernel/debug.o deleted file mode 100644 index eb383684134e24d801d8a92990bd598689e48108..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6856 zcmbVQZ)_Y#6`#Gc&u2S6pY0^I2}l>wgeL8sV9w5z`V?Hk5LOZ~p)H*4{mdPdmOc#%&4KShCCQ-}3~p8O zb_k@$07w`@bqJ-6VfNZVww@t2E!h`O45x+i z2uk;hI3h2>(JYYh3s+8zAciFaU4+boQD%FTS%@-EMwvpCY146{Ezbc1u~-Kc#dvfz z&||_0`1GYiGTFOYp{T@QV^itKhI;*@Avur?$;2o#MvM)qvB7w1U24P_?MvSW%VjN# zr*;hP9NZ6rab%F_F^v6V1`xgL+5WLfn8n2XY;bT7sDg)MMm#k*h)O7u911PWfMEYH z2r@Q6@~~0{w}k?GCw5K1=urf_8Oj-ZCuH}ZoA{z~H6@3luYM{uM?E?21EApjA zIak12VAoQ^t_E4#*@OQ1LDBNcxeAU5=prwLG;CQ(+m4MC>;Ztd=QZlY7F@@7s~psO&yAvpu_gTP9o1WDkMa z5(v9B8!UTPjc4nwm{^I|tI!n+)KMJ?Kd=hVX6v3C@Iv5vtqGBHZq_ZwE-(?Ym2s=u zFkS94_h1l5A@pS#{?-K2JWN*H8lP+|HJqR^SqFa(eQALNJ2DR}iqXiq%x;xqn|fhtCbwnVCW+z}Y#q$T@h>vt zSlU>(sxNsSw(6&$4S!g~#Wt5pzZ{z%5_hYFJAOeGcH}?qb!v=v%miU?%3NWEN}Tcz zy&*0)cN^RfoDq?i8H*H&v(8?}Wv8!jF8Eiv;IJS&`t$WJcz9ii zLp3)wy>+H-tHY*g9c1krQSBgg1g_YO(QVS{WDha$Z9V+3VC19m#Q0)CJWRTP{yc(E z5Rb0Cyg*mtPjq7V<0FQ9)L!6Q#F_Qwbw z^SHT-YHzp3G6^5?RKt2uaA!%va?k2L%c z;Wst>KEi*a;SJ(H(D2uY|AU4e|C;!I(o^%LPVTiDeu?a? z)9~*Tzn*HWNL2JNqsjl0`rW7Dzasw28vb1}#x|ObsUq$11w7U(w{BCi~xs z$RqS1*}1IY(}cgP;pYgyq2c(H#iGWC&1he(gWHNJJmE_h_t?&;)2g`;o_(K}5h4B$ zQWY)ue;q73o)M^&jmoo}|6DDw;8E-co~$d1@_5zC1^igRaz!h!SZ>LOXR_x?MzqRY z#CA$9$l!z6w3e1Uz6@fhOps?en9oNs@rI#x=#S+JZmq`Q<&bmWO_YN-n|vdY60exz zT}7k#|0|3G#zw_eS(+t6<)I3va4MFq0}9WZ*$|P$O}fBeBn8YJkW}}J$^kYK4ln<< za$4_*T6GxzQ-U^i{g+5EdKRJyou2{>McdW@@MlQ>F`%PG`L8hi4~Om(wyAsi8=7HV z7W0Zu@yp}CfuL-miNW|Gsrpy(L;rM}0I{cNpnY1S#3ctGk5oqb; z|1nBNl|K59uPxnw%zJd30I^r8|0%6eV_6ksJN18s`d4wn{xN^j`^WqWZ7M&36y-X_ z{bya~Px)~Mq&w-K#KA(@EUWOV^i+KTS`-}$0r58JM=_*z*~^4!ZnAese?~K)#;@Qv zf#?*!8y(_@XROj!aYcXhzR~ta)c+A`#5W7(TDm@p>3bI-HcRKn%g98EKK>DC>!kl7 M`TtHt7fD_Jze-)yivR!s diff --git a/threads/build/lib/kernel/hash.d b/threads/build/lib/kernel/hash.d deleted file mode 100644 index 7ef0725..0000000 --- a/threads/build/lib/kernel/hash.d +++ /dev/null @@ -1,5 +0,0 @@ -lib/kernel/hash.o: ../../lib/kernel/hash.c \ - ../../include/lib/kernel/hash.h ../../include/lib/stdbool.h \ - ../../include/lib/stddef.h ../../include/lib/stdint.h \ - ../../include/lib/kernel/list.h ../../include/lib/kernel/../debug.h \ - ../../include/threads/malloc.h ../../include/lib/debug.h diff --git a/threads/build/lib/kernel/hash.o b/threads/build/lib/kernel/hash.o deleted file mode 100644 index 739487111cf384d734ae41d8cee94d3705d8c462..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21256 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 h6Dq_&K(5GaoQBd8}C!s|6fDF#?Sx& diff --git a/threads/build/lib/random.d b/threads/build/lib/random.d deleted file mode 100644 index 5eeaa0d..0000000 --- a/threads/build/lib/random.d +++ /dev/null @@ -1,3 +0,0 @@ -lib/random.o: ../../lib/random.c ../../include/lib/random.h \ - ../../include/lib/stddef.h ../../include/lib/stdbool.h \ - ../../include/lib/stdint.h ../../include/lib/debug.h diff --git a/threads/build/lib/random.o b/threads/build/lib/random.o deleted file mode 100644 index a0c384893e33476405b03cea555884c5ebd9e075..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6368 zcmbVQeQX>@6`$F)eV5qr`Ku7)g3fJ8DdO&8#R(xzQrFS7>olUKt!aoN?E6^zuDK8E zZm&(!CbYOoeX=6i2-HN1+Wvt`|0(}aSp`8ciIl`bLKc4js*teMB7z!)pa{iM0>^tZ zZ+7?QY#}l7&Aj(}pYwKhX4c<}A9}*zoTW7TIjP2GnY3u>*lw?134p&34Q$UnZNa)l)aDbMYHiHGb=A{2n^} ztZy!UulgJ77a{_5z*^^L+l-m`J^tFMdo_Sg|M^P%E>i|mnr>*Z#}Gy{tEL5>=Hj<3 zeho6>D=dB&Qn+h7Y1ke-FSD@dRLTZj^hxKN`qFi%VWjtn*k9PZtYu z$zvN#S3DV1$76)w|5YbVT}z{_K8=Pnn+$$!Hhw3x7{Aky|6F_xQk{vfaa>5&xzUE-mVKKilGIN@K{X@T zjHHR3vH3CVg8{+t7BLt?-qh5bEjS?aw9TG8YIDqt8HO}!l7n>7oCL`Q__d(l8Vi&e z@2mp3NrVFepz$o@U8qNE{5rm_iL@ez!o+BPEi#V8aZP{}cVP|R*2 zvsvk>a2acPK0&N(RWq4}cP-<2#Tv77i0P2)f3?XdqdcWPET@$TC}$1A`pA3nR?# z7~^|zcE-Y#8@CUWcDY}oL3=P1L^YXBKTx9GrjcJn8yUayJ z?VY?U(D8Xli0S8w5 z9)fHc3*mrSc0{=f{*>|2=X+AU=Vg!JdVl^SkX^pckhR zJZBz_#^5iPO)^Pk3#nWsZ3~2z5`}azA5GzDRd&*8dor5Az(B*xCut~;Oa;7~Tlwv` zm){rVP zV5h^WOrpdP3cC>QCgn`A*I+m@6^=X&ZYM#xn9qXeQX+3hri&2TE=hbk2cb}58qJX?JBie>$aJab*eRz- zvu&Jm1)S`LI+b5aOpD5~vTdiQSu9h`+p$WrQgAAT&9@rh-KKO`4 z;Z7tQKlu#f$2)jmTOc?OOZ0w#@rO<9B#*auoHY(?X(?U-4Jq3z#q2hYN^aZ~3TS(j zIe4#!~Hl0 zgoazKz=@}U!PY2nbtP4J7vbu}P&jVS@P0uro7$z3GnqJmN#YGA69=yc5M^pxmQpai z^G88qH02>vhaqE%Sv0_ahZ;el?;eP*{6V0)U|woIVod-RBm7~SvO0qI5-ZL`kHVE+uZFAj^o1U)}(JV*~t69j5?4(Qq|i zymny2!C!|<8{og!aA6GHUv!-Kf9NCkXGP5%m#&hvt8uh94qaT?h3#JmS;$zs=iy zIQpL>KRY#C*$itqzVFyZG{{Amq` zGg7oO8vaG{|6{_D73+lfpX)g3|4zfzI{72v>Un*K_)j!_^bWRSLqzDGb*SraeZb)RKI8|1-cB3x zJM?gHA4XgC(FmWmqTxLTaZ|Exf7Aa^T~zA&Sn)ZEK6QHqm|DVNzcJ9e;HRlb4RUxy z%R|>40PXeWzk-`Mv?cO`^T*q&KL26Bbe{mRBXqUBgN(1~x?>>IF;xE+Jy3N%DHpmf zo-ga=KTnq-Wsmt|?t1=Nz;vGgvDYa6-;nV&T{jJ~_2Ms4e6>z6KJFKK{0d;`Q{@Sy zXc_th_(%(=ST(*1+UwbG6aPkI?5on9+bcUYR>|H~AYzp4bzIpg{4F35)0P=i_UDx% zjcWc1z5v8}_4^amZ-NxDe)x5w>{VUYi;X7NDgQM}7~SDdw@0;xcMq^tx}1#w?Qi=0 TF|YOPchjZsJ-;!~y8V9vI&Yd? diff --git a/threads/build/lib/stdio.d b/threads/build/lib/stdio.d deleted file mode 100644 index c8f87c1..0000000 --- a/threads/build/lib/stdio.d +++ /dev/null @@ -1,6 +0,0 @@ -lib/stdio.o: ../../lib/stdio.c ../../include/lib/stdio.h \ - ../../include/lib/debug.h ../../include/lib/stdarg.h \ - ../../include/lib/stdbool.h ../../include/lib/stddef.h \ - ../../include/lib/stdint.h ../../include/lib/kernel/stdio.h \ - ../../include/lib/ctype.h ../../include/lib/inttypes.h \ - ../../include/lib/round.h ../../include/lib/string.h diff --git a/threads/build/lib/stdio.o b/threads/build/lib/stdio.o deleted file mode 100644 index fa5ca76a74f10cc2e8eae52357e8a94bc74000ed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24616 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 JsWLkM{{djxhmQaN diff --git a/threads/build/lib/stdlib.d b/threads/build/lib/stdlib.d deleted file mode 100644 index 3ce6ae3..0000000 --- a/threads/build/lib/stdlib.d +++ /dev/null @@ -1,4 +0,0 @@ -lib/stdlib.o: ../../lib/stdlib.c ../../include/lib/ctype.h \ - ../../include/lib/debug.h ../../include/lib/random.h \ - ../../include/lib/stddef.h ../../include/lib/stdlib.h \ - ../../include/lib/stdbool.h diff --git a/threads/build/lib/stdlib.o b/threads/build/lib/stdlib.o deleted file mode 100644 index 4e4dea3c4ff06a8acddae664d11d31bb47b8b3d1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11072 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 Q7SrbsN~b+d)zJ0-250X7e*gdg diff --git a/threads/build/lib/string.d b/threads/build/lib/string.d deleted file mode 100644 index ee43697..0000000 --- a/threads/build/lib/string.d +++ /dev/null @@ -1,2 +0,0 @@ -lib/string.o: ../../lib/string.c ../../include/lib/string.h \ - ../../include/lib/stddef.h ../../include/lib/debug.h diff --git a/threads/build/lib/string.o b/threads/build/lib/string.o deleted file mode 100644 index 3909e7967461e5be7b0a8519d8c42c6e6d80ee4f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18200 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 diff --git a/threads/build/loader.bin b/threads/build/loader.bin deleted file mode 100755 index 77db50cde8a01f333147a4f8f059109eb7212327..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 512 zcmezMNAp16fxa7k7xpmJJV{x>RQhYf#b+r{*8OJ*X*(2NFfgR;w;{R|L5lgDtxe$ z1!S4iyMr${9{osj+Mw_btn|$aj*{Oy8G!0{eEIAjwH#0* z82tYaq-LFG0MnDsGl(-N)-o{c^RL~)r}2MH%Yl-AX9Zq=4@k_*Ojd+y8T?e}DgX`! Bj8^~v diff --git a/threads/build/os.dsk b/threads/build/os.dsk deleted file mode 100644 index 140979fdc3ec4bdd546f5b25b0e6f96b15d3cd4c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 135680 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

3a^!Y3m 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%0D*b1q~ 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 zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U 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­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%0DXo%Me|eQ(5?RK*&Pv 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 literal 0 HcmV?d00001 diff --git a/threads/build/lib/arithmetic.d b/threads/build/lib/arithmetic.d new file mode 100644 index 0000000..7e4b8a2 --- /dev/null +++ b/threads/build/lib/arithmetic.d @@ -0,0 +1 @@ +lib/arithmetic.o: ../../lib/arithmetic.c ../../include/lib/stdint.h diff --git a/threads/build/lib/arithmetic.o b/threads/build/lib/arithmetic.o new file mode 100644 index 0000000000000000000000000000000000000000..b41e999e4ed605054cc9760f97102b7a8717706a GIT binary patch literal 7352 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 literal 0 HcmV?d00001 diff --git a/threads/build/lib/debug.d b/threads/build/lib/debug.d new file mode 100644 index 0000000..fb60fee --- /dev/null +++ b/threads/build/lib/debug.d @@ -0,0 +1,5 @@ +lib/debug.o: ../../lib/debug.c ../../include/lib/debug.h \ + ../../include/lib/stdarg.h ../../include/lib/stdbool.h \ + ../../include/lib/stddef.h ../../include/lib/stdio.h \ + ../../include/lib/stdint.h ../../include/lib/kernel/stdio.h \ + ../../include/lib/string.h diff --git a/threads/build/lib/debug.o b/threads/build/lib/debug.o new file mode 100644 index 0000000000000000000000000000000000000000..907067d9c3c40680f6fec340999129ef79181839 GIT binary patch literal 4648 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 literal 0 HcmV?d00001 diff --git a/threads/build/lib/kernel/console.d b/threads/build/lib/kernel/console.d new file mode 100644 index 0000000..2fbfc30 --- /dev/null +++ b/threads/build/lib/kernel/console.d @@ -0,0 +1,8 @@ +lib/kernel/console.o: ../../lib/kernel/console.c \ + ../../include/lib/kernel/console.h ../../include/lib/stdarg.h \ + ../../include/lib/stdio.h ../../include/lib/debug.h \ + ../../include/lib/stdbool.h ../../include/lib/stddef.h \ + ../../include/lib/stdint.h ../../include/lib/kernel/stdio.h \ + ../../include/devices/serial.h ../../include/devices/vga.h \ + ../../include/threads/init.h ../../include/threads/interrupt.h \ + ../../include/threads/synch.h ../../include/lib/kernel/list.h diff --git a/threads/build/lib/kernel/console.o b/threads/build/lib/kernel/console.o new file mode 100644 index 0000000000000000000000000000000000000000..5eb0185a79f4ba471707ea3b57ae4305e69254fc GIT binary patch literal 12736 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 literal 0 HcmV?d00001 diff --git a/threads/build/lib/kernel/debug.d b/threads/build/lib/kernel/debug.d new file mode 100644 index 0000000..c810eac --- /dev/null +++ b/threads/build/lib/kernel/debug.d @@ -0,0 +1,7 @@ +lib/kernel/debug.o: ../../lib/kernel/debug.c ../../include/lib/debug.h \ + ../../include/lib/kernel/console.h ../../include/lib/stdarg.h \ + ../../include/lib/stdbool.h ../../include/lib/stddef.h \ + ../../include/lib/stdio.h ../../include/lib/stdint.h \ + ../../include/lib/kernel/stdio.h ../../include/lib/string.h \ + ../../include/threads/init.h ../../include/threads/interrupt.h \ + ../../include/devices/serial.h diff --git a/threads/build/lib/kernel/debug.o b/threads/build/lib/kernel/debug.o new file mode 100644 index 0000000000000000000000000000000000000000..76fcc449cbaa31e2a72d92a126b99de448758f8d GIT binary patch literal 6888 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 Qf8v$4{x-YuK6U;71wu^MZ2$lO literal 0 HcmV?d00001 diff --git a/threads/build/lib/random.d b/threads/build/lib/random.d new file mode 100644 index 0000000..5eeaa0d --- /dev/null +++ b/threads/build/lib/random.d @@ -0,0 +1,3 @@ +lib/random.o: ../../lib/random.c ../../include/lib/random.h \ + ../../include/lib/stddef.h ../../include/lib/stdbool.h \ + ../../include/lib/stdint.h ../../include/lib/debug.h diff --git a/threads/build/lib/random.o b/threads/build/lib/random.o new file mode 100644 index 0000000000000000000000000000000000000000..dd83375af5d5b7cb9add0ffe9074b31a3269bd58 GIT binary patch literal 6408 zcmbVQeQX>@6`$F)eV6#-&L4#sSLoc9lp^jfR-6#hCN&91&mp3w!6b?z&iAoCUwj|d z?Ox-gBs91QK3S1sB-BKT8vdZA{LxBCl_>~HNTehd5{mevNCk+`|$IrxW$E&fs*J2OR z>Bj>Lv4_>)#D5_oKnHC6+I7kkK09)DN^=)|9{#vU+bkkxbpOMQkgn!9Pn!P7$Q zZk%6-jQ9-}djKgsh`+0x$N6PcO<(sy*W=aq@d3c%vb7`?BF1a;{pTmN< zx>$(IF56^!!<9jGTt@i)Uv<*dwKO^!(`ZVw#o*WHWA_6~vHMN=FT_?L)w$RT$AuI> zGggaN$8W|@T?(A~=s&fZTi_rpsFnBpSjfg_2zD#WSJabt$8Q>pwFuTPmVJjSlGNLv zpqk-tMbgC1SpO{cexG1?n-~lsZ)s`G6&;Yd+Gbw?wK-XXDnvxaR)HzI`>O7=<)~rs3x-+1WL4fH1Z2*BjXRg1fa2aNEYNV8GphD zWqkY_LX!7E^`4MHr|V%v&>;Hb{n%r}nPB4=x|0A)R|mRNb$ZO_F#aj&sswu7{4-s> z?Pk|NS2yqR1wRRiJi*%AcLD@!=o8HB+TQ+j`)DsLK*Ax*R?bIzIbdyrY_vBDQ}hip z(=RoR4X_adONPjT{-CQ9 zdT|=TbLNpq6#nwL6q8i0n9f%+mOxlJS68*r~*tGkvBr5q*G0Q4N zJC`k5nNWHvS!U5f(TS#`YXsVLSXBheo)&1g@WKWgKP9p>_W`gC4ImgPVgphOdLA&R^HXhnN zG!*(mWJ_dIC|s~hlTLUtUrIW_6ieZg;K`K@5m?1S!6+I+ekQ-qO~Jy z6|HhE4Q#TUp4u_HZEJYza44J&g`Wqvlb~EGeS65es z_Ykg57KP(B4(}oKvZ>u1Ig^Qlnk4REGI2n=08ys4wJ8PDJ*N~TMpGU}4Hz<}m_-u| zc%T^+`t^geE`J=T9+;P!k606cMG1eBrmT+YX9%CCjZq!_?tY4w3_EdH?FsICLtB{G z9U8VXV&pys{;}`f4XQTn!9^X2e`yW;du!mY>No}Xv4*Sp;`Ia@4&FLkUIYKVh6`ip z{;cD~|3k;g01i9RQ0#p!T^`(9hfnJ``H5(_n%7PZCv~=e4g56^-m8>h6!&!)aeoo_ zNRo+bBjLEmyhnI9ji`_K6`KDe8jkNBHg#>(>+qBmi@4smd6Nf6|8JB3EgG(Dc4@dn z{HTWijQosg_(j6MrQwT&r#1X2;WHXONc<5EKTZ4z4gV?er!+i8{(nR`vSOVO|8pHD z{oiT0S|@)XTs^PXi2qR2SMT*5P5+PNU+pK#Pao<1+v5k9nA%SV$qom^-=y^yC0zL- zbGAj(SNru|P5(R@9MtgliGNY^lOz7ThIddt-hBh1L!|dB8daXJQ(U#)QH=WPy!k-W z{|WK8G<<=0?>>NjJ|h2*QeGin3!f8SlYFjdDHDjpBI#10V8InWQiO|g1TOOO;!H-?R6<;~ zDf|C_2!ScqRy`NxX@m&<^AB~sZ2%a2-$%S4(DMHXjQx-v4(`Kft3EE_6Iis3&?9b2 zw%*_IKGZrYbv>;3Y(<~Cy#h=v;gHuD=&kV6RHOzuJgDWN>kfhTYV%*g!vNYP@`Llo z+p0eQU4ZF60b&Q~YI`3UPt$eBL8fD<{&jkw>U>fzbX`1OR?Gigx(q3M%pY^t^UndM z`vi!cr1*bB#?y4&49HfCe~aR)b%OD6ztH1X07IWDPas8`qECRoXaN5FhC*9S1Wv9j}+1C|_u*qJ>m7T)zd_zoIW^9)1&nZP3)%+EV=gVsKgMaahHX#Rw z^~0|dWv}YGT5L24(&oHE3FG6ypKgz7HobeOM;EeDpuJ6>KjyWX{RHLzrq>u~-TuFB CZ>a77 literal 0 HcmV?d00001 diff --git a/threads/build/lib/stdio.d b/threads/build/lib/stdio.d new file mode 100644 index 0000000..c8f87c1 --- /dev/null +++ b/threads/build/lib/stdio.d @@ -0,0 +1,6 @@ +lib/stdio.o: ../../lib/stdio.c ../../include/lib/stdio.h \ + ../../include/lib/debug.h ../../include/lib/stdarg.h \ + ../../include/lib/stdbool.h ../../include/lib/stddef.h \ + ../../include/lib/stdint.h ../../include/lib/kernel/stdio.h \ + ../../include/lib/ctype.h ../../include/lib/inttypes.h \ + ../../include/lib/round.h ../../include/lib/string.h diff --git a/threads/build/lib/stdio.o b/threads/build/lib/stdio.o new file mode 100644 index 0000000000000000000000000000000000000000..2d811262aa3db64c709809a99298e1e619919adb GIT binary patch literal 24648 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 LSx-|nbp8JUfZ7pr literal 0 HcmV?d00001 diff --git a/threads/build/lib/string.d b/threads/build/lib/string.d new file mode 100644 index 0000000..ee43697 --- /dev/null +++ b/threads/build/lib/string.d @@ -0,0 +1,2 @@ +lib/string.o: ../../lib/string.c ../../include/lib/string.h \ + ../../include/lib/stddef.h ../../include/lib/debug.h diff --git a/threads/build/lib/string.o b/threads/build/lib/string.o new file mode 100644 index 0000000000000000000000000000000000000000..8873b42fdce8fe577a38b5c328a3b80f182e9983 GIT binary patch literal 18240 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 literal 0 HcmV?d00001 diff --git a/threads/build/loader.bin b/threads/build/loader.bin new file mode 100644 index 0000000000000000000000000000000000000000..77db50cde8a01f333147a4f8f059109eb7212327 GIT binary patch literal 512 zcmezMNAp16fxa7k7xpmJJV{x>RQhYf#b+r{*8OJ*X*(2NFfgR;w;{R|L5lgDtxe$ z1!S4iyMr${9{osj+Mw_btn|$aj*{Oy8G!0{eEIAjwH#0* z82tYaq-LFG0MnDsGl(-N)-o{c^RL~)r}2MH%Yl-AX9Zq=4@k_*Ojd+y8T?e}DgX`! Bj8^~v literal 0 HcmV?d00001 diff --git a/threads/build/os.dsk b/threads/build/os.dsk new file mode 100644 index 0000000000000000000000000000000000000000..6344cb636bb33db2f2d4b364fabcdf91cbb7b2c2 GIT binary patch literal 135680 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