summaryrefslogtreecommitdiff
path: root/acme/bin/source/acd/outline
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@localhost>2011-04-14 17:27:24 +0000
committercinap_lenrek <cinap_lenrek@localhost>2011-04-14 17:27:24 +0000
commita150899221a5badff9740703b754f901b4f52762 (patch)
tree3d6911874b0ee763e40490d04f56fc09d89ccfa6 /acme/bin/source/acd/outline
parent71cfa9c637386ebe00fc6d1bf6215db6657559f4 (diff)
downloadplan9front-a150899221a5badff9740703b754f901b4f52762.tar.xz
fill /acme
Diffstat (limited to 'acme/bin/source/acd/outline')
-rw-r--r--acme/bin/source/acd/outline32
1 files changed, 32 insertions, 0 deletions
diff --git a/acme/bin/source/acd/outline b/acme/bin/source/acd/outline
new file mode 100644
index 000000000..5ab337d9c
--- /dev/null
+++ b/acme/bin/source/acd/outline
@@ -0,0 +1,32 @@
+acd is composed of four procs
+
+wineventproc (win.c:/^wineventproc)
+ reads acme window events, sends them along w->cevent.
+
+cdstatusproc (mmc.c:/^cdstatusproc)
+ reads cd status once per second, sending
+ status updates to d->cstatus.
+ detects disk changes, sends new tocs to d->ctocdisp.
+
+cddbproc (cddb.c:/^cddbproc)
+ reads tocs from d->cdbreq, if it finds
+ translations in the cddb, sends new tocs to d->cdbreply.
+
+eventwatcher (main.c:/^eventwatcher)
+ the main event loop.
+ reads status from d->cstatus.
+ reads events from w->cevent.
+ reads new tocs to display from d->ctocdisp.
+ sends new tocs to translate to d->cdbreq.
+ reads new translated tocs from d->cdbreply.
+
+an interesting bug in the original design:
+ both cdstatusproc and the eventwatcher proc
+ issue scsi commands. (the eventwatcher responds to
+ things such as Play, Stop, etc., as well as advancing the track.)
+
+ the sd(3) driver did not expect overlapped commands,
+ and crashed.
+
+ this has been fixed by making the scsi(2) commands threadsafe,
+ and making the sd(3) driver more robust.