<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -121,7 +121,10 @@ void ATAProcess() {
 
 	syscall_puts(&quot;ATA driver entering loop\n&quot;);
 	while (true) {
-
+		u32 msgId = syscall_readQueue(&quot;command&quot;);
+		syscall_puts(&quot;ATA got msg: &quot;);
+		syscall_putl(msgId, 16);
+		syscall_putc('\n');
 	}
 }
 </diff>
      <filename>TmpATA.cpp</filename>
    </modified>
    <modified>
      <diff>@@ -74,6 +74,8 @@ void ShellProcess() {
 		syscall_putl(s, 10);
 		syscall_puts(&quot;\n&quot;);
 		syscall_free(l);
+
+		syscall_sendQueue(&quot;system.io.ata&quot;, &quot;command&quot;, 0, 0x0); 
 	}
 
 	syscall_exit();</diff>
      <filename>TmpShell.cpp</filename>
    </modified>
    <modified>
      <diff>@@ -64,9 +64,9 @@ namespace IPC {
 		return target-&gt;registerListener();
 	}
 
-	class ReadCall : public BlockingCall {
+	class ReadStreamCall : public BlockingCall {
 	public:
-		ReadCall(const char *name, const char *node, u32 listener, char *buffer, u32 n):
+		ReadStreamCall(const char *name, const char *node, u32 listener, char *buffer, u32 n):
 			_listener(&amp;getStream(name, node)-&gt;getListener(listener)), _buffer(buffer), _n(n)
 		{ }
 
@@ -104,7 +104,7 @@ namespace IPC {
 
 	// Keeping in mind that `buffer''s data probably isn't asciz.
 	u32 readStream_impl(const char *name, const char *node, u32 listener, char *buffer, u32 n, bool block) {
-		ReadCall c(name, node, listener, buffer, n);
+		ReadStreamCall c(name, node, listener, buffer, n);
 		u32 r = c();
 		if (!block || !c.shallBlock())
 			return r;
@@ -114,7 +114,7 @@ namespace IPC {
 		Tasks::Task::Stream::Listener *l = c.getListener();
 
 		Akari-&gt;tasks-&gt;current-&gt;userWaiting = true;
-		Akari-&gt;tasks-&gt;current-&gt;userCall = new ReadCall(c);
+		Akari-&gt;tasks-&gt;current-&gt;userCall = new ReadStreamCall(c);
 		l-&gt;hook(Akari-&gt;tasks-&gt;current);
 		Akari-&gt;syscall-&gt;returnToNextTask();
 		return 0;
@@ -152,5 +152,27 @@ namespace IPC {
 		(*Akari-&gt;tasks-&gt;current-&gt;queuesByName)[sNode] = target;
 		return true;
 	}
+
+	class ReadQueueCall : public BlockingCall {
+	public:
+		// TODO: need to know the current task!
+		ReadQueueCall(const char *node) { }
+	};
+
+	u32 readQueue(const char *node) {
+		ReadQueueCall c(node);
+		u32 r = c();
+		if (!block || !c.shallBlock())
+			return r;
+
+		Akari-&gt;tasks-&gt;current-&gt;userWaiting = true;
+		Akari-&gt;tasks-&gt;current-&gt;userCall = new ReadQueueCall(c);
+		Akari-&gt;syscall-&gt;returnToNextTask();
+		return 0;
+	}
+
+	void sendQueue(const char *name, const char *node, u32 reply_to, u32 value) {
+		// TODO: a u32 value is pretty limited. We'll need to specify a buffer and a length soon.
+	}
 }
 }</diff>
      <filename>UserIPC.cpp</filename>
    </modified>
    <modified>
      <diff>@@ -91,7 +91,7 @@ static void AkariEntryCont() {
 	// can exit, with an exit syscall. We can't actually call syscall_exit(), since
 	// the function call would try to push to our stack, and we can't do that now
 	// since we're in ring 3 and we have no write access!
-	asm volatile(&quot;int $0x80&quot; : : &quot;a&quot; (9));
+	asm volatile(&quot;int $0x80&quot; : : &quot;a&quot; (7));
 }
 
 void IdleProcess() {</diff>
      <filename>entry.cpp</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>f1431c27f62bd35caee306d3c13c7aeae272d93c</id>
    </parent>
  </parents>
  <author>
    <name>Arlen Cuss</name>
    <email>celtic@sairyx.org</email>
  </author>
  <url>http://github.com/celtic/akari/commit/c0b6b1c61527f90dc50a98d210ebba695b0899a3</url>
  <id>c0b6b1c61527f90dc50a98d210ebba695b0899a3</id>
  <committed-date>2009-11-06T23:15:59-08:00</committed-date>
  <authored-date>2009-11-06T23:15:59-08:00</authored-date>
  <message>Whoops, exit is 7 now, not 9. Getting ready for queue stuff! Doesn't compile.</message>
  <tree>418ca0a518366153351f28c20fb9decf16644235</tree>
  <committer>
    <name>Arlen Cuss</name>
    <email>celtic@sairyx.org</email>
  </committer>
</commit>
