diff --git a/src/sys/include/sys/device.h b/src/sys/include/sys/device.h index 8bf3655..7389c4c 100644 --- a/src/sys/include/sys/device.h +++ b/src/sys/include/sys/device.h @@ -29,17 +29,22 @@ struct deviceNode { struct deviceNode *prev; struct deviceNode *next; - char deviceType; + char type; int major; int minor; + uInt32 size; void (*read)(void *,long,long,void *); void (*write)(void *,long,long,void *); void (*reset)(void *); + void (*init)(void *); void (*ioctl)(void *); + void (*stop)(void *); + void (*start)(void *); + void (*standby)(void *); }; -void deviceAdd(int major,int minor,char type,void *read,void *write,void *reset,void *init,void *ioctl,uInt32 size); +void deviceAdd(int major,int minor,char type,void *read,void *write,void *reset,void *init,void *ioctl,void *stop,void *start,void *standby,void *info); struct deviceNode *deviceFind(int major,int minor); #endif diff --git a/src/sys/sys/device.c b/src/sys/sys/device.c index c2b7c3d..8062fbf 100644 --- a/src/sys/sys/device.c +++ b/src/sys/sys/device.c @@ -24,6 +24,9 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. $Log$ + Revision 1.1 2004/04/27 03:49:41 reddawg + Start of new driver system + $Id$ @@ -35,7 +38,24 @@ static struct deviceNode *devices = 0x0; -void deviceAdd(int major,int minor,char type,void *read,void *write,void *reset,void *init,void *ioctl,uInt32 size) { +void deviceAdd(int major,int minor,char type,void *read,void *write,void *reset,void *init,void *ioctl,void *stop,void *start,void *standby,void *info) { + struct deviceNode *tmpDev = kmalloc(sizeof(struct deviceNode),sysID); + tmpDev->prev = 0x0; + tmpDev->major = major; + tmpDev->minor = minor; + tmpDev->type = type; + tmpDev->read = read; + tmpDev->write = write; + tmpDev->reset = reset; + tmpDev->init = init; + tmpDev->ioctl = ioctl; + tmpDev->stop = stop; + tmpDev->start = start; + tmpDev->standby = standby; + tmpDev->info = info; + tmpDev->next = devices; + devices = tmpDev; + tmpDev->init(tmpDev); } struct deviceNode *deviceFind(int major,int minor) {