From 7d2b35a6351cedb0d7ab9a72f118984f901518bc Mon Sep 17 00:00:00 2001 From: rik Date: Wed, 9 Aug 2006 20:57:24 +0000 Subject: Added copyright templete Fixed compilation Reviewed by: julian@ --- share/examples/drivers/make_pseudo_driver.sh | 89 ++++++++++++++++++---------- 1 file changed, 57 insertions(+), 32 deletions(-) (limited to 'share/examples') diff --git a/share/examples/drivers/make_pseudo_driver.sh b/share/examples/drivers/make_pseudo_driver.sh index 5a90474..6e8f473 100644 --- a/share/examples/drivers/make_pseudo_driver.sh +++ b/share/examples/drivers/make_pseudo_driver.sh @@ -36,7 +36,29 @@ DONE cat >../../dev/${1}.c < #include #include /* SYSINIT stuff */ +#include /* SYSINIT stuff */ #include /* cdevsw stuff */ -#include /* DEVFS definitions */ #include /* malloc region definitions */ #include #include /* ${1} IOCTL definitions */ #include /* DELAY() */ -#include "${1}.h" /* generated file.. defines N${UPPER} */ +#define N${UPPER} 3 /* defines number of instances */ + +/* XXX These should be defined in terms of bus-space ops. */ +#define ${UPPER}_INB(port) inb(port) +#define ${UPPER}_OUTB(port, val) (port, (val)) /* Function prototypes (these should all be static) */ static d_open_t ${1}open; @@ -68,20 +94,15 @@ static d_poll_t ${1}poll; #define CDEV_MAJOR 20 static struct cdevsw ${1}_cdevsw = { - ${1}open, - ${1}close, - ${1}read, - ${1}write, - ${1}ioctl, - nullstop, - nullreset, - nodevtotty, - ${1}poll, - ${1}mmap, - NULL, - "${1}", - NULL, - -1 + .d_version = D_VERSION, + .d_open = ${1}open, + .d_close = ${1}close, + .d_read = ${1}read, + .d_write = ${1}write, + .d_ioctl = ${1}ioctl, + .d_poll = ${1}poll, + .d_mmap = ${1}mmap, + .d_name = "${1}", }; /* @@ -94,9 +115,9 @@ static struct cdevsw ${1}_cdevsw = { * One of these per allocated device */ struct ${1}_softc { - struct isa_device *dev; + u_long iobase; char buffer[BUFFERSIZE]; - static void *devfs_token; + struct cdev *dev; }; typedef struct ${1}_softc *sc_p; @@ -129,7 +150,7 @@ do { /* the do-while is a safe way to do this grouping */ \ #endif /* DIAGNOSTIC */ static int -${1}ioctl (dev_t dev, int cmd, caddr_t data, int flag, struct thread *td) +${1}ioctl (struct cdev *dev, u_long cmd, caddr_t data, int flag, struct thread *td) { int unit = UNIT(dev); sc_p scp = sca[unit]; @@ -139,7 +160,10 @@ ${1}ioctl (dev_t dev, int cmd, caddr_t data, int flag, struct thread *td) switch (cmd) { case DHIOCRESET: /* whatever resets it */ - outb(scp->dev->id_iobase, 0xff); + (void)scp; /* Delete this line after using scp. */ +#if 0 + ${UPPER}_OUTB(scp->iobase, 0xff); +#endif break; default: return ENXIO; @@ -152,13 +176,14 @@ ${1}ioctl (dev_t dev, int cmd, caddr_t data, int flag, struct thread *td) * This should get you started */ static int -${1}open(dev_t dev, int oflags, int devtype, struct thread *td) +${1}open(struct cdev *dev, int oflags, int devtype, struct thread *td) { int unit = UNIT(dev); sc_p scp = sca[unit]; CHECKUNIT(ENXIO); + (void)scp; /* Delete this line after using scp. */ /* * Do processing */ @@ -166,13 +191,14 @@ ${1}open(dev_t dev, int oflags, int devtype, struct thread *td) } static int -${1}close(dev_t dev, int fflag, int devtype, struct thread *td) +${1}close(struct cdev *dev, int fflag, int devtype, struct thread *td) { int unit = UNIT(dev); sc_p scp = sca[unit]; CHECKUNIT_DIAG(ENXIO); + (void)scp; /* Delete this line after using scp. */ /* * Do processing */ @@ -180,7 +206,7 @@ ${1}close(dev_t dev, int fflag, int devtype, struct thread *td) } static int -${1}read(dev_t dev, struct uio *uio, int ioflag) +${1}read(struct cdev *dev, struct uio *uio, int ioflag) { int unit = UNIT(dev); sc_p scp = sca[unit]; @@ -198,7 +224,7 @@ ${1}read(dev_t dev, struct uio *uio, int ioflag) } static int -${1}write(dev_t dev, struct uio *uio, int ioflag) +${1}write(struct cdev *dev, struct uio *uio, int ioflag) { int unit = UNIT(dev); sc_p scp = sca[unit]; @@ -215,13 +241,14 @@ ${1}write(dev_t dev, struct uio *uio, int ioflag) } static int -${1}mmap(dev_t dev, int offset, int nprot) +${1}mmap(struct cdev *dev, vm_offset_t offset, vm_paddr_t *paddr, int nprot) { int unit = UNIT(dev); sc_p scp = sca[unit]; CHECKUNIT_DIAG(-1); + (void)scp; /* Delete this line after using scp. */ /* * Do processing */ @@ -236,13 +263,14 @@ ${1}mmap(dev_t dev, int offset, int nprot) } static int -${1}poll(dev_t dev, int which, struct thread *td) +${1}poll(struct cdev *dev, int which, struct thread *td) { int unit = UNIT(dev); sc_p scp = sca[unit]; CHECKUNIT_DIAG(ENXIO); + (void)scp; /* Delete this line after using scp. */ /* * Do processing */ @@ -256,12 +284,9 @@ ${1}poll(dev_t dev, int which, struct thread *td) static void ${1}_drvinit(void *unused) { - dev_t dev; int unit; sc_p scp = sca[unit]; - dev = makedev(CDEV_MAJOR, 0); - cdevsw_add(&dev, &${1}_cdevsw, NULL); for (unit = 0; unit < N${UPPER}; unit++) { /* * Allocate storage for this instance . @@ -272,8 +297,8 @@ ${1}_drvinit(void *unused) return; } sca[unit] = scp; - scp->devfs_token = devfs_add_devswf(&${1}_cdevsw, unit, DV_CHR, - UID_ROOT, GID_KMEM, 0640, "${1}%d", unit); + scp->dev = make_dev(&${1}_cdevsw, unit, + UID_ROOT, GID_KMEM, 0640, "${1}%d", unit); } } -- cgit v1.1