From 46bbd72f3eeaff9386b2a90af88f3d46b458a0e8 Mon Sep 17 00:00:00 2001 From: rtm Date: Sat, 15 Jul 2006 12:03:57 +0000 Subject: 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 --- Notes | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'Notes') 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 + -- cgit v1.2.3