summaryrefslogtreecommitdiff
path: root/proc.h
diff options
context:
space:
mode:
authorFrans Kaashoek <[email protected]>2017-01-31 20:21:14 -0500
committerFrans Kaashoek <[email protected]>2017-01-31 20:21:14 -0500
commitfbb4c0944422f860484142010bb9f366f3e87bf8 (patch)
tree5e339842d43d09a4d23f1a2165391f00af30e308 /proc.h
parentabf847a083888bbed4260ecacf849ea19f23e810 (diff)
downloadxv6-labs-fbb4c0944422f860484142010bb9f366f3e87bf8.tar.gz
xv6-labs-fbb4c0944422f860484142010bb9f366f3e87bf8.tar.bz2
xv6-labs-fbb4c0944422f860484142010bb9f366f3e87bf8.zip
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.
Diffstat (limited to 'proc.h')
-rw-r--r--proc.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/proc.h b/proc.h
index 38a2d32..7047d54 100644
--- a/proc.h
+++ b/proc.h
@@ -30,12 +30,14 @@ mycpu(void) {
return cpu;
}
+#if 0
static inline struct proc*
myproc(void) {
struct proc *proc;
asm("movl %%gs:4, %0" : "=r"(proc));
return proc;
}
+#endif
//PAGEBREAK: 17
@@ -74,6 +76,7 @@ struct proc {
struct file *ofile[NOFILE]; // Open files
struct inode *cwd; // Current directory
char name[16]; // Process name (debugging)
+ struct cpu *cpu; // If running, which cpu.
};
// Process memory is laid out contiguously, low addresses first: