rmark@lll-lcc.UUCP (Richard Mark) (03/23/90)
I have a question about DEVIOCGET.
First the background: VAX 11/750, Ultrix 2.0-1
What routines or what actions cause an ioctl(DEVIOCGET) call?
What devices need to handle an ioctl(DEVIOCGET) call?
We have a specialized UNIBUS device (HSPI) which we are trying to get
connected and running on our system. I added the device in the
config file, made the appropriate entries in files.vax, placed the
driver sources in /sys/vaxuba, added the appropriate stuff in the cdevsw
table of the conf.c file and made the appropriate /dev/hspi0 node with the
correct access rights (crw-rw-rw). I completed reconfiguring, rebuilding
and rebooting the new system without problems. I had problems opening
I had problems opening the device for reading and writing but no problems
when opening for just reading. To debug my problem I put printfs
in the driver code (in the hspiopen() and hspiioclt() routines)
When I open("/dev/hspi0",O_RDONLY) it called hspiopen() which calls
hspiioctl(cmd=START) returns from hspiioctl() successfully, then
returns from hspiopen() successfully and the open() returns successfully.
When I open("/dev/hspi0",O_RDWR) it called hspiopen() which calls
hspiioctl(cmd=START) returns from hspiioctl() successfully, then
returns from hspiopen() successfully THEN it calls hspiioctl(cmd=DEVIOCGET)
and the open() returns unsuccessfully. Although hspiioctl() does not
handle that case, there is a default case which doesn't do anything
and still returns from hspiioctl() successfully.
To repeat my original questions:
What routines or what actions cause an ioctl(DEVIOCGET) call?
What devices need to handle an ioctl(DEVIOCGET) call?
And now some more questions:
Is this specific to a certain version of Ultrix?
Where can I find out what values I should put in the devget struct?
Where is any of this documented?
I have probably left out some details or not explained somethings
clearly enough but hopefully someone will have some clue about my
problem. If you need more info, drop me a note.
Thanks,
Rich
rmark@lll-lcc.llnl.govgrr@cbmvax.commodore.com (George Robbins) (03/26/90)
In article <2772@lll-lcc.UUCP> rmark@lll-lcc.UUCP (Richard Mark) writes: > > What routines or what actions cause an ioctl(DEVIOCGET) call? > What devices need to handle an ioctl(DEVIOCGET) call? Did you get any answers yet? If not, you can take adb and take a whack at one of the simpler drivers. I've seen the DEVIOCGET stuff in passing, but didn't analyze it that closely. Seem to involve stuffing data into a structure, so there's probably a header file involved somewhere. > And now some more questions: > Is this specific to a certain version of Ultrix? I think it showed up in 3.x, this about the time dump started being able to figure out whether a tape drive was at 1600 or 6250bpi... > Where can I find out what values I should put in the devget struct? /usr/include/sys/devio.h > Where is any of this documented? ha...DEC seems to love making various changes to Ultrix that move it farther from 4.2BSD compatibility and not documenting any of the details. I guess if you spring for a source license it's obvious, but you shouldn't need a source license for drivers and syscalls... -- George Robbins - now working for, uucp: {uunet|pyramid|rutgers}!cbmvax!grr but no way officially representing: domain: grr@cbmvax.commodore.com Commodore, Engineering Department phone: 215-431-9349 (only by moonlite)