curtj@pogo.GPID.TEK.COM (Curt ) (01/06/89)
I thank you for the suggestion of (mknod /dev/port 4 3) to create a
device which I can talk to the I/O ports..
My current problem is this:
I have 1.2 Meg, to send down through an I/O port. Since
I have to to an 'lseek' every time I wish to send a byte down
to a specific port address, it takes an astronomical amount of
time to send the data.
Is there any way to cause READ/WRITE to NOT update the file
pointer address when you execute them. If not, HOW DO I GET
HOLD OF THE i-node so that I can reset the file pointer to the
proper address every time I issue a READ/WRITE.
I am trying to cut down the system call overhead.
----------------------------------------------------------------------
__ __ /| Curt Jutzi (Jutz) Tektronix Inc.
((__ \ \'o.O` tektronix!pogo!curtj Del. St. 63-356
\\ ! =(___)= (503) 685-3723 P.O. Box 1000
!!! U Wilsonville,OR 97070
o_OO \
(___, / ACK! PHHT!
___! !
/ .-! ! _) "Life's an adventure.. go for it."
(_/ _/ \_/ \ "Make America beautiful, eat your beer cans."
_( _( / "If time heals all wounds, how do you explain belly buttons?"
(_(__(____)
dyer@spdcc.COM (Steve Dyer) (01/07/89)
In article <6552@pogo.GPID.TEK.COM> curtj@pogo.GPID.TEK.COM (Curt ) writes: >I have 1.2 Meg, to send down through an I/O port. Since I have to to >an 'lseek' every time I wish to send a byte down to a specific port >address, it takes an astronomical amount of time to send the data. >Is there any way to cause READ/WRITE to NOT update the file pointer address >when you execute them. If not, HOW DO I GET HOLD OF THE i-node so that I >can reset the file pointer to the proper address every time I issue a >READ/WRITE. I am trying to cut down the system call overhead. Sounds like you're ready to graduate to a REAL device driver. Believe me, you shouldn't be too concerned by the time being consumed by the extra lseeks, which are very fast, anyway; the byte-at-a-time paradigm is burning you as badly. There really isn't a way to "get hold of the i-node" (file pointer, actually) from userspace to make the lseeks unnecessary; at least, no way more efficient than just doing the lseeks. If your device is a simple IO port with no capability of generating an interrupt, a device driver is VERY simple (hell, it's simple anyway.) The SCO documentation has a chapter on writing device drivers, with examples for boilerplate. -- Steve Dyer dyer@ursa-major.spdcc.com aka {ima,harvard,rayssd,linus,m2c}!spdcc!dyer dyer@arktouros.mit.edu