44cd /workspace/ostep-projects/concurrency-xv6-threads/src
55
66cat << 'PATCH ' | patch -p1
7- diff -ruN -x .git xv6-src-clean /defs.h xv6-src-mod /defs.h
8- --- xv6-src-clean /defs.h 2026-01-31 13:48:34.360722856 -0500
9- +++ xv6-src-mod /defs.h 2026-01-31 13:48:45.602760516 -0500
7+ diff -ruN -x .git a /defs.h b /defs.h
8+ --- a /defs.h 2026-01-31 13:48:34.360722856 -0500
9+ +++ b /defs.h 2026-01-31 13:48:45.602760516 -0500
1010@@ -106,6 +106,7 @@
1111 int cpuid(void);
1212 void exit(void);
@@ -23,9 +23,9 @@ diff -ruN -x .git xv6-src-clean/defs.h xv6-src-mod/defs.h
2323 int wait(void);
2424 void wakeup(void*);
2525 void yield(void);
26- diff -ruN -x .git xv6-src-clean /Makefile xv6-src-mod /Makefile
27- --- xv6-src-clean /Makefile 2026-01-31 13:48:34.360722856 -0500
28- +++ xv6-src-mod /Makefile 2026-01-31 13:49:56.581992935 -0500
26+ diff -ruN -x .git a /Makefile b /Makefile
27+ --- a /Makefile 2026-01-31 13:48:34.360722856 -0500
28+ +++ b /Makefile 2026-01-31 13:49:56.581992935 -0500
2929@@ -153,7 +154,7 @@
3030 _forktest: forktest.o $(ULIB)
3131 # forktest has less library code linked in - needs to be small
@@ -35,9 +35,9 @@ diff -ruN -x .git xv6-src-clean/Makefile xv6-src-mod/Makefile
3535 $(OBJDUMP) -S _forktest > forktest.asm
3636
3737 mkfs: mkfs.c fs.h
38- diff -ruN -x .git xv6-src-clean /proc.c xv6-src-mod /proc.c
39- --- xv6-src-clean /proc.c 2026-01-31 13:48:34.362722863 -0500
40- +++ xv6-src-mod /proc.c 2026-01-31 13:49:26.308894900 -0500
38+ diff -ruN -x .git a /proc.c b /proc.c
39+ --- a /proc.c 2026-01-31 13:48:34.362722863 -0500
40+ +++ b /proc.c 2026-01-31 13:49:26.308894900 -0500
4141@@ -112,6 +112,9 @@
4242 memset(p->context, 0, sizeof *p->context);
4343 p->context->eip = (uint)forkret;
@@ -215,9 +215,9 @@ diff -ruN -x .git xv6-src-clean/proc.c xv6-src-mod/proc.c
215215 //PAGEBREAK: 42
216216 // Per-CPU process scheduler.
217217 // Each CPU calls scheduler() after setting itself up.
218- diff -ruN -x .git xv6-src-clean /proc.h xv6-src-mod /proc.h
219- --- xv6-src-clean /proc.h 2026-01-31 13:48:34.362722863 -0500
220- +++ xv6-src-mod /proc.h 2026-01-31 13:48:52.900784835 -0500
218+ diff -ruN -x .git a /proc.h b /proc.h
219+ --- a /proc.h 2026-01-31 13:48:34.362722863 -0500
220+ +++ b /proc.h 2026-01-31 13:48:52.900784835 -0500
221221@@ -49,6 +49,8 @@
222222 struct file *ofile[NOFILE]; // Open files
223223 struct inode *cwd; // Current directory
@@ -227,9 +227,9 @@ diff -ruN -x .git xv6-src-clean/proc.h xv6-src-mod/proc.h
227227 };
228228
229229 // Process memory is laid out contiguously, low addresses first:
230- diff -ruN -x .git xv6-src-clean /syscall.c xv6-src-mod /syscall.c
231- --- xv6-src-clean /syscall.c 2026-01-31 13:48:34.363722866 -0500
232- +++ xv6-src-mod /syscall.c 2026-01-31 13:49:37.323930753 -0500
230+ diff -ruN -x .git a /syscall.c b /syscall.c
231+ --- a /syscall.c 2026-01-31 13:48:34.363722866 -0500
232+ +++ b /syscall.c 2026-01-31 13:49:37.323930753 -0500
233233@@ -84,6 +84,7 @@
234234
235235 extern int sys_chdir(void);
@@ -255,18 +255,18 @@ diff -ruN -x .git xv6-src-clean/syscall.c xv6-src-mod/syscall.c
255255 };
256256
257257 void
258- diff -ruN -x .git xv6-src-clean /syscall.h xv6-src-mod /syscall.h
259- --- xv6-src-clean /syscall.h 2026-01-31 13:48:34.363722866 -0500
260- +++ xv6-src-mod /syscall.h 2026-01-31 13:49:30.355908097 -0500
258+ diff -ruN -x .git a /syscall.h b /syscall.h
259+ --- a /syscall.h 2026-01-31 13:48:34.363722866 -0500
260+ +++ b /syscall.h 2026-01-31 13:49:30.355908097 -0500
261261@@ -20,3 +20,5 @@
262262 #define SYS_link 19
263263 #define SYS_mkdir 20
264264 #define SYS_close 21
265265+#define SYS_clone 22
266266+#define SYS_join 23
267- diff -ruN -x .git xv6-src-clean /sysproc.c xv6-src-mod /sysproc.c
268- --- xv6-src-clean /sysproc.c 2026-01-31 13:48:34.363722866 -0500
269- +++ xv6-src-mod /sysproc.c 2026-01-31 13:49:44.599954320 -0500
267+ diff -ruN -x .git a /sysproc.c b /sysproc.c
268+ --- a /sysproc.c 2026-01-31 13:48:34.363722866 -0500
269+ +++ b /sysproc.c 2026-01-31 13:49:44.599954320 -0500
270270@@ -27,6 +27,36 @@
271271 }
272272
@@ -304,9 +304,9 @@ diff -ruN -x .git xv6-src-clean/sysproc.c xv6-src-mod/sysproc.c
304304 sys_kill(void)
305305 {
306306 int pid;
307- diff -ruN -x .git xv6-src-clean /ulib.c xv6-src-mod /ulib.c
308- --- xv6-src-clean /ulib.c 2026-01-31 13:48:34.363722866 -0500
309- +++ xv6-src-mod /ulib.c 2026-01-31 13:50:14.504050251 -0500
307+ diff -ruN -x .git a /ulib.c b /ulib.c
308+ --- a /ulib.c 2026-01-31 13:48:34.363722866 -0500
309+ +++ b /ulib.c 2026-01-31 13:50:14.504050251 -0500
310310@@ -104,3 +104,72 @@
311311 *dst++ = *src++;
312312 return vdst;
@@ -380,9 +380,9 @@ diff -ruN -x .git xv6-src-clean/ulib.c xv6-src-mod/ulib.c
380380+{
381381+ fetch_and_add(&lock->turn, 1);
382382+}
383- diff -ruN -x .git xv6-src-clean /user.h xv6-src-mod /user.h
384- --- xv6-src-clean /user.h 2026-01-31 13:48:34.363722866 -0500
385- +++ xv6-src-mod /user.h 2026-01-31 13:50:02.812012919 -0500
383+ diff -ruN -x .git a /user.h b /user.h
384+ --- a /user.h 2026-01-31 13:48:34.363722866 -0500
385+ +++ b /user.h 2026-01-31 13:50:02.812012919 -0500
386386@@ -1,6 +1,12 @@
387387+#include "mmu.h"
388388 struct stat;
@@ -414,9 +414,9 @@ diff -ruN -x .git xv6-src-clean/user.h xv6-src-mod/user.h
414414+void lock_init(lock_t *);
415415+void lock_acquire(lock_t *);
416416+void lock_release(lock_t *);
417- diff -ruN -x .git xv6-src-clean /usys.S xv6-src-mod /usys.S
418- --- xv6-src-clean /usys.S 2026-01-31 13:48:34.363722866 -0500
419- +++ xv6-src-mod /usys.S 2026-01-31 13:50:18.687063553 -0500
417+ diff -ruN -x .git a /usys.S b /usys.S
418+ --- a /usys.S 2026-01-31 13:48:34.363722866 -0500
419+ +++ b /usys.S 2026-01-31 13:50:18.687063553 -0500
420420@@ -29,3 +29,5 @@
421421 SYSCALL(sbrk)
422422 SYSCALL(sleep)
0 commit comments