Path: utzoo!utgpu!news-server.csri.toronto.edu!rpi!crdgw1!crdos1!davidsen From: davidsen@crdos1.crd.ge.COM (Wm E Davidsen Jr) Newsgroups: comp.protocols.nfs Subject: Re: Offloading I/O [was:Incremental sync()s ...] Message-ID: <3272@crdos1.crd.ge.COM> Date: 18 Mar 91 16:38:51 GMT References: <3254@crdos1.crd.ge.COM> <19838@cbmvax.commodore.com> <1088@spim.mips.COM> Reply-To: davidsen@crdos1.crd.ge.com (bill davidsen) Organization: GE Corp R&D Center, Schenectady NY Lines: 56 In article <1088@spim.mips.COM> mash@mips.com (John Mashey) writes: | 6. Move echo, erase, and line kill into the IOP. | This has been done in various commercial UNIXes (maybe people | can post examples). | For line-oriented input, this is not a bad idea, and especially | as cheap micros became available, became much more reasonable. | (Note that in the DQS/DZ era, anything like a micro was NOT cheap.) | The CPU: | needs a protocol to hand to the IOP definitions of | erase & kill characters (if the user is allowed to change | them), and in fact, any other parameters of relevance | The IOP: | needs more local storage (to hold parameters) | needs even more local storage, because the natural unit of | buffering is now a complete input line | Must deal with all of the UNIX escape sequences and | conversions, as well as interrupts. (For example, | if an interrupt comes, it may want to terminate | output in progress to that line.) | BENEFITS: | CPU gets one interrupt for an entire line of input. | CPU need not do echoing. About 20 years ago we wrote an OS which ran on a GE 605 (enhanced 635) using a DN355 as the front end processor. Based on some of the things we did with that, here's my current thinking on what kind of interface could be used. For each character and line there would be a table of actions caused by the input character. You also need an output state, which at minimum would be: 1. pass output to the line 2. hold output until the next input char (ixany) 3. hold output Flags would be at minimum: - pass this char to host - interrupt host - set output state 1 - set output state 3 - echo - this is char delete - this is line delete Input states would be used to handle echo character delete or not, what to do with char delete when the buffer is empty, etc. Special cases would just pass the data through. This allows interrupt on single character input while providing line buffering where it makes sense. Note that I don't claim this is complete, just some of the things which make this possible. -- bill davidsen (davidsen@crdos1.crd.GE.COM -or- uunet!crdgw1!crdos1!davidsen) "Most of the VAX instructions are in microcode, but halt and no-op are in hardware for efficiency"