Path: utzoo!mnetor!uunet!husc6!bbn!rochester!udel!rminnich From: rminnich@udel.EDU (Ron Minnich) Newsgroups: comp.sys.amiga Subject: a very simple question on DoIO/GetMsg/device drivers Message-ID: <890@louie.udel.EDU> Date: 22 Dec 87 01:59:25 GMT Reply-To: rminnich@udel.EDU (Ron Minnich) Distribution: na Organization: University of Delaware Lines: 29 I have a very simple question and i think a very simple problem involving internet.device. Here is the scenario: Telnet does a SendIO(Request). internet.device gets the request, and adds the request to a List. Later on, internet.device does the IO. It gets the request, and all looks good. the request is acted on (in this case, a recv_tcp). Then, internet.device does a ReplyMsg(Request). A Message is the first element of the structure, and the structure does conform to all the rules about what has to be in the front and in what order. Telnet gets the news. It does a CheckIO(Request), which returns non-zero value. It also does a WaitIO for grins, and gets a zero back. Then the fun begins. The port in this case is called tcpinp. If i look at tcpinp->MsgList (not the exact name), the lh_Head points to Request, and lh_TailPred points to Request. But a GetMsg(tcpinp) returns a 0! How can this happen? Next, after the GetMsg call, a look at the MsgList structure shows that lh_TailPred points to lh_Head, and lh_Head points to lh_Tail. So it looks like the list got emptied, but ... if i do a CheckIO, it still returns a non-zero value! What conditions cause a CheckIO to return non-zero? Is the Flags element of a request what is looked at by CheckIO? I thought it was the ReplyPort that really mattered. Then, to top it off, if i do a SendIO(Request), the whole machine locks up tight as a drum. Now i am sure i am doing something quite dumb. Can anyone tell me what to look for? -- ron (rminnich@udel.edu)