Path: utzoo!utgpu!news-server.csri.toronto.edu!rpi!usc!wuarchive!uunet!lll-winken!aunro!alberta!herald.usask.ca!telepro!oliphant From: oliphant@telepro.UUCP (Mike Oliphant) Newsgroups: comp.sys.amiga.programmer Subject: Re: Question on AbortIO() and WaitIO() Message-ID: Date: 29 May 91 23:51:58 GMT References: <28630@uflorida.cis.ufl.EDU> <21757@cbmvax.commodore.com> Organization: TelePro Technologies Lines: 40 In article dillon@overload.Berkeley.CA.US (Matthew Dillon) writes: >>The CheckIO() is EXTREMELY important with the A2232 serial card - it doesn't >>like you aborting requests that have been satisfied. In fact, it seems that > > This is a bug in the A2232 serial.device > > It *has* been fixed in alphas of the next release, along with a few > other bugs. Great! We've been living with this bug for over 6 months now... >>even the CheckIO() safety measure is not enough with this card. I've found >>this method solves the problem: >> >> NiceAbort(ioreq) >> struct IORequest *ioreq; >> { >> Forbid(); >> if(!CheckIO(ioreq)) AbortIO(ioreq); >> Permit(); >> WaitIO(ioreq); >> } > > I'm not sure this will work. If the A2232 serial.device uses a SoftInt > instead of a process to handle returning requests, then all the > Forbid()/Permit() does is reduce the window of oportunity. It seems to work fairly well - well enough to keep things held together until we can get our hands on the fixed device. -- Mike Oliphant telepro!oliphant@herald.usask.ca or herald!telepro!oliphant FidoNet: (1:140/91) - ZMH only * * Call TelePro, the development system for DLG Professional * * Phone: +1 306 249 2352 2400/9600/14400 bps HST - FidoNet: (1:140/90) * +1 306 652 2084 300/1200/2400 bps *