summaryrefslogtreecommitdiff
path: root/Notes
diff options
context:
space:
mode:
authorrtm <rtm>2006-07-15 12:03:57 +0000
committerrtm <rtm>2006-07-15 12:03:57 +0000
commit46bbd72f3eeaff9386b2a90af88f3d46b458a0e8 (patch)
tree31ca93c160a10c50948329b30d27475aa6b38313 /Notes
parentd9872ffa951291fcc3f7a92c0d235b86435c5714 (diff)
downloadxv6-labs-46bbd72f3eeaff9386b2a90af88f3d46b458a0e8.tar.gz
xv6-labs-46bbd72f3eeaff9386b2a90af88f3d46b458a0e8.tar.bz2
xv6-labs-46bbd72f3eeaff9386b2a90af88f3d46b458a0e8.zip
no more recursive locks
wakeup1() assumes you hold proc_table_lock sleep(chan, lock) provides atomic sleep-and-release to wait for condition ugly code in swtch/scheduler to implement new sleep fix lots of bugs in pipes, wait, and exit fix bugs if timer interrupt goes off in schedule() console locks per line, not per byte
Diffstat (limited to 'Notes')
-rw-r--r--Notes23
1 files changed, 23 insertions, 0 deletions
diff --git a/Notes b/Notes
index b5f4035..681d69a 100644
--- a/Notes
+++ b/Notes
@@ -126,3 +126,26 @@ nasty hack to allow locks before first process,
race between release and sleep in sys_wait()
race between sys_exit waking up parent and setting state=ZOMBIE
+race in pipe code when full/empty
+
+lock order
+ per-pipe lock
+ proc_table_lock fd_table_lock kalloc_lock
+ console_lock
+
+condition variable + mutex that protects it
+ proc * (for wait()), proc_table_lock
+ pipe structure, pipe lock
+
+systematic way to test sleep races?
+ print something at the start of sleep?
+
+do you have to be holding the mutex in order to call wakeup()?
+
+should lock around printf, not putc
+
+device interrupts don't clear FL_IF
+ so a recursive timer interrupt is possible
+
+the sleep/swtch/schedule code that holds over a lock is ugly
+