/* "device.h" created by: grayspace aka J. Leveille for: UbixOS Project date: May 11, 2002 purpose: master header file for all things device related */ #ifndef _DEVICE_H #define _DEVICE_H // maximum length of a device's name #define MAX_DEVICE_NAMELEN (16) // maximum number of bus devices allowed #define MAX_BUS_DEVICES (16) /* device types (for now, only bus devices allowed) */ #define DEVICE_TYPE_UNKNOWN (0) #define DEVICE_TYPE_BUS_ISA (1) #define DEVICE_TYPE_BUS_PCI (2) /* device ISR or pseudo ISR */ typedef int (* DEVICE_ISR)( void * p ); /* device IO routine */ typedef int (* DEVICE_IO_RTN)( void * p ); /* device control routine */ typedef int (* DEVICE_CTRL_RTN)( void * p ); /* ISA bus device structure */ typedef struct tagDEVICE_ISA { /* bus resources assigned to device */ BUS_RESOURCES br; /* ISRs for device */ DEVICE_ISR * apfn_isr[BI_MAX_IRQS]; /* device IO routine (kernel/driver use only) */ DEVICE_IO_RTN pfn_io; /* device control routine (kernel/driver use only) */ DEVICE_CTRL_RTN pfn_ctrl; } DEVICE_BUS_ISA; /* PCI bus device structure */ /* TODO */ typedef struct tagDEVICE_BUS_PCI { int dummy; } DEVICE_PCI; /* bus device structure */ typedef union tagDEVICE_BUS { DEVICE_BUS_ISA isa; DEVICE_BUS_PCI pci; } DEVICE_BUS; /* device structure */ typedef struct tagDEVICE { /* type of device */ BYTEg type; /* pointer to actual device specific structure */ void * p; } DEVICE; /* global kernel structure for device information */ typedef struct tagDEVICES { /* bus devices */ DEVICE a_isa[MAX_BUS_DEVICES]; } DEVICES; #endif /* _DEVICE_H */