Path: utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!uunet!mcsun!ukc!icdoc!qmw-cs!liam From: liam@cs.qmw.ac.uk (William Roberts) Newsgroups: comp.unix.aux Subject: Re: A/UX device drivers Keywords: A/UX, device drivers, GPIB Message-ID: <1824@sequent.cs.qmw.ac.uk> Date: 23 Mar 90 14:53:55 GMT References: <3126@sol1.oakhill.UUCP> Reply-To: liam@cs.qmw.ac.uk (William Roberts) Organization: Computer Science Dept, QMW, University of London, UK. Lines: 238 Summary: Expires: Sender: Followup-To: Distribution: In article <3126@sol1.oakhill.UUCP> gabler@sol1.UUCP (Christopher Gabler) writes: >Variations in the autoconfig routine can place the TEST device as a module in the kernel. This is seen by using the command "module_dump /unix". Listing the contents of /dev also shows the TEST device with others like console and tty, etc. However, if I try to open the device TEST, I get an error "device notfound". I am also using the "launch -n" command in the sash when I startup the A/UX. > >I have also noticed a strange occurrence when the autoconfig routine loads the TEST device in the list of device modules. The Apple ethercard (already present) is excluded from the listing of startup devices. When this happens, I lose my ethernet access. The autoconfiguration routine is of the format "autoconfig -o /testunix -L loadfile -S /etc/startup -M /etc/master". Your problem is that the "-L loadfile" option means "ignore the list of cards actually present, just use this information instead". You should change the TEST file in /etc/master.d so that instead of having an "id" line, it has something like include . cp0 - qmc_ - 32 1 Alternatively, put the correct ID number for your GPIB card and put the card into the machine: it shouldn't be able to do anything until you enable it (it may kill your machine if the MacOS driver was installed in the Sash partition, though, because the MacOS driver close routine probably doesn't disable the card properly (if at all)). Once you've done this, try autoconfig without the -L option. As for your "device not found" problem, I suspect that you aren't remaking the device special files as part of the startup script. Here are my versions of the TEST driver install and uninstall scripts, based on the 1.0 device drivers kit, for a software only device driver we use here at QMW. I've also provided the revised Makefile which puts these files in the right places and does /etc/newunix to get it going. You should be able to recognise the Apple TEST stuff as a very near ancestor of these files.... # This is a shar archive. # Remove everything above and including the cut line. # Then run the rest of the file through sh. #--------cut--------cut--------cut--------cut--------cut-------- #! /bin/sh # shar: Shell Archiver # Run the following with /bin/sh to create: # qmc.install # qmc.uninstall # Makefile # This archive created: Fri Mar 23 14:51:47 WET 1990 echo shar: extracting "qmc.install" '('1959 chars')' if test -f qmc.install then echo shar: will not overwrite existing file "qmc.install" else cat << \SHAR_EOF > qmc.install : "@(#)Copyright 1988-89, Apple Computer - Version 1.16 of TEST.install on 09:35:50 3/8/89" ############################################################################### ### ### /etc/install.d/TEST ### ############################################################################### PATH=/bin:/usr/bin:/etc:/usr/etc name=qmc ###-------------------------------------------------------------------------### ### Install the driver object file ###-------------------------------------------------------------------------### cp /etc/install.d/boot.d/$name /etc/boot.d chmod 644 /etc/boot.d/$name ###-------------------------------------------------------------------------### ### Install the driver master script file ###-------------------------------------------------------------------------### ### ### Note that the qmc driver is not associated with a specific ### card id of any sort, so we use "include ." instead of a card id. ### flags nvec prefix_ soft devcnt ipl ### c - I am a character device driver ### p0 - call my init routine after initialising the kmem structures cat > /etc/master.d/$name <<'--EOF--' include . cp0 - qmc_ - 32 1 --EOF-- chmod 644 /etc/master.d/$name ###-------------------------------------------------------------------------### ### Install the startup file ###-------------------------------------------------------------------------### cat > /etc/startup.d/$name <<'--EOF--' : "@(#)Copyright 1988-89, Apple Computer - Version 1.16 of TEST.install on 09:35:50 3/8/89" # startup script for qmc PATH=/bin:/usr/bin:/etc:/usr/etc scriptname=$0 name=qmc while test -n "$1" do case $1 in -M ) # For -M flag: Save the major number shift major=$1 rm -f /dev/qmc mknod /dev/qmc c $major 0 echo created /dev/qmc ;; * ) # Ignore all other flags ;; esac shift done --EOF-- chmod 755 /etc/startup.d/$name SHAR_EOF if test 1959 -ne `wc -c < qmc.install` then echo shar: error transmitting "qmc.install" '('should be 1959 chars')' else echo qmc.install fi fi echo shar: extracting "qmc.uninstall" '('1016 chars')' if test -f qmc.uninstall then echo shar: will not overwrite existing file "qmc.uninstall" else cat << \SHAR_EOF > qmc.uninstall : "@(#)Copyright 1988-89, Apple Computer - Version 1.16 of TEST.uninsta on 09:35:53 3/8/89" ############################################################################### ### ### /etc/uninstall.d/TEST ### ############################################################################### PATH=/bin:/usr/bin:/etc:/usr/etc name=qmc ###-------------------------------------------------------------------------### ### Remove the driver object file ###-------------------------------------------------------------------------### rm -f /etc/boot.d/$name ###-------------------------------------------------------------------------### ### Remove the driver master script file ###-------------------------------------------------------------------------### rm -f /etc/master.d/$name ###-------------------------------------------------------------------------### ### Remove the startup script file ###-------------------------------------------------------------------------### rm -f /etc/startup.d/$name SHAR_EOF if test 1016 -ne `wc -c < qmc.uninstall` then echo shar: error transmitting "qmc.uninstall" '('should be 1016 chars')' else echo qmc.uninstall fi fi echo shar: extracting "Makefile" '('1035 chars')' if test -f Makefile then echo shar: will not overwrite existing file "Makefile" else cat << \SHAR_EOF > Makefile # "@(#)Copyright 1988-89, Apple Computer - Version 1.16 of Makefile on 09:35:45 3/8/89" # Define DEST to point to your root directory # ( this is usually / ) DEST=/ DEFINES= -DKERNEL -DNEW_PMMU -DDEBUG FLAGS= ${DEFINES} ${INCLUDES} CFLAGS= ${FLAGS} -O DRIVER_OBJS= qmc_device.o install: demo unix.symtab sync sync all: ${DRIVER_OBJS} unix.symtab: qmc @echo install the files and make the new kernel cp qmc $(DEST)/etc/install.d/boot.d/qmc chmod 644 $(DEST)/etc/install.d/boot.d/qmc cp qmc.install $(DEST)/etc/install.d/qmc chmod 755 $(DEST)/etc/install.d/qmc cp qmc.uninstall $(DEST)/etc/uninstall.d/qmc chmod 755 $(DEST)/etc/uninstall.d/qmc $(DEST)/etc/newunix qmc autoconfig -I \ -S $(DEST)/etc/startup -o $(DEST)/unix \ -M $(DEST)/etc/master echo nm -xe $(DEST)/unix | sort -t\| +1 >unix.symtab sync sync qmc: ${DRIVER_OBJS} ld -o qmc -x -r ${DRIVER_OBJS} /usr/lib/unshared.ld demo: demo.c cc ${CFLAG} -o demo demo.c demo ${DRIVER_OBJS}: qmc_dev.h SHAR_EOF if test 1035 -ne `wc -c < Makefile` then echo shar: error transmitting "Makefile" '('should be 1035 chars')' else echo Makefile fi fi # End of shar archive exit 0 -- William Roberts ARPA: liam@cs.qmw.ac.uk Queen Mary & Westfield College UUCP: liam@qmw-cs.UUCP Mile End Road AppleLink: UK0087 LONDON, E1 4NS, UK Tel: 01-975 5250 (Fax: 01-980 6533)