Path: utzoo!mnetor!uunet!husc6!cmcl2!brl-adm!umd5!mimsy!chris
From: chris@mimsy.UUCP (Chris Torek)
Newsgroups: comp.unix.wizards
Subject: Re: rdump, Ethernet slowness
Message-ID: <9782@mimsy.UUCP>
Date: 15 Dec 87 03:15:07 GMT
References: <788@hsi.UUCP> <57900004@ccvaxa>
Organization: U of Maryland, Dept. of Computer Science, Coll. Pk., MD 20742
Lines: 22

In article <57900004@ccvaxa> aglew@ccvaxa.UUCP writes:
>Asynchronous I/O primitives should basically look like this:
>
>IOtransT aread(fd,buf,n)	- initiate a read
>IOtransT awrite(fd,buf,n)	- initiate a write
>iowait(n,iolist)		- wait for ios to complete
>
>With operations to guarantee sequentiality, or sometimes not.

I have a pseudo-driver that provides asynchronous read and write
operations, but only to character special devices (and only some
of them).  It works about like this, except that aread(fd, buf, n)
is done with read(assocfd, buf, n) and awrite(fd, buf, n) is done
with write(assocfd, buf, n).  iowait() is implemented by select(assocfd),
and sequentiality of transfers can be set or unset by an ioctl on
assocfd.

It is unfortunate that this only works on some character special
devices, and that it requires somewhat major changes to 4.3BSD.
-- 
In-Real-Life: Chris Torek, Univ of MD Comp Sci Dept (+1 301 454 7690)
Domain:	chris@mimsy.umd.edu	Path:	uunet!mimsy!chris