From abf847a083888bbed4260ecacf849ea19f23e810 Mon Sep 17 00:00:00 2001 From: Frans Kaashoek Date: Tue, 31 Jan 2017 17:47:16 -0500 Subject: Start of an experiment to remove the use of gs for cpu local variables. --- defs.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'defs.h') diff --git a/defs.h b/defs.h index 300c75c..67ea9f6 100644 --- a/defs.h +++ b/defs.h @@ -74,7 +74,7 @@ void kbdintr(void); // lapic.c void cmostime(struct rtcdate *r); -int cpunum(void); +int lapiccpunum(void); extern volatile uint* lapic; void lapiceoi(void); void lapicinit(void); @@ -103,6 +103,7 @@ int pipewrite(struct pipe*, char*, int); //PAGEBREAK: 16 // proc.c +int cpuid(void); void exit(void); int fork(void); int growproc(int); @@ -111,6 +112,7 @@ void pinit(void); void procdump(void); void scheduler(void) __attribute__((noreturn)); void sched(void); +void setproc(struct proc*); void sleep(void*, struct spinlock*); void userinit(void); int wait(void); -- cgit v1.2.3 From fbb4c0944422f860484142010bb9f366f3e87bf8 Mon Sep 17 00:00:00 2001 From: Frans Kaashoek Date: Tue, 31 Jan 2017 20:21:14 -0500 Subject: Read curproc from cpu structure, but be careful because after a schedule event myproc() points to a different thread. myproc(); sched(); myproc(); // this proc maybe different than the one before sched Thus, in a function that operates on one thread better to retrieve the current process once at the start of the function. --- defs.h | 1 + 1 file changed, 1 insertion(+) (limited to 'defs.h') diff --git a/defs.h b/defs.h index 67ea9f6..5e049ae 100644 --- a/defs.h +++ b/defs.h @@ -108,6 +108,7 @@ void exit(void); int fork(void); int growproc(int); int kill(int); +struct proc* myproc(); void pinit(void); void procdump(void); void scheduler(void) __attribute__((noreturn)); -- cgit v1.2.3 From ed396c068b881877330f7d40bfce02db9b1199b3 Mon Sep 17 00:00:00 2001 From: Frans Kaashoek Date: Wed, 1 Feb 2017 18:04:13 -0500 Subject: Eliminate code for gs trick to track per-cpu state. We rely on lapiccpunum() to find a per-cpu id with which we locate a cpu's cpu struct. --- defs.h | 1 + 1 file changed, 1 insertion(+) (limited to 'defs.h') diff --git a/defs.h b/defs.h index 5e049ae..c4870d0 100644 --- a/defs.h +++ b/defs.h @@ -108,6 +108,7 @@ void exit(void); int fork(void); int growproc(int); int kill(int); +struct cpu* mycpu(void); struct proc* myproc(); void pinit(void); void procdump(void); -- cgit v1.2.3 From c9fa90f7e514f27fa1ac071cd9795f3830ab6a1b Mon Sep 17 00:00:00 2001 From: Frans Kaashoek Date: Wed, 1 Feb 2017 20:36:41 -0500 Subject: A tiny bit of clean up (e.g., move code searching cpu array from lapic.c into mycpu() in proc.c. --- defs.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'defs.h') diff --git a/defs.h b/defs.h index c4870d0..82fb982 100644 --- a/defs.h +++ b/defs.h @@ -74,7 +74,7 @@ void kbdintr(void); // lapic.c void cmostime(struct rtcdate *r); -int lapiccpunum(void); +int lapicid(void); extern volatile uint* lapic; void lapiceoi(void); void lapicinit(void); -- cgit v1.2.3