📄 drv_conf.h
字号:
#endif/*---------------------------------------------------------------------*//* Setup pSOSystem printer driver *//*---------------------------------------------------------------------*/#if (SC_DEV_PARALLEL && BSP_PARALLEL) #if (SC_DEV_PARALLEL >SC_DEVMAX) #error "SC_DEV_PARALLEL cannot be > SC_DEVMAX" #endif InstallDriver(SC_DEV_PARALLEL, ParInit, ParOpen, ParClose, NULLF, ParWrite, ParCntrl, 0, 0, 0);#endif /*---------------------------------------------------------------------*//* Setup pSOSystem floppy diskette driver *//* NOTE: This driver must be called from a task it cannot use the *//* auto initialization freature of pSOS+ *//*---------------------------------------------------------------------*/#if (SC_DEV_FLOPPY && BSP_FLOPPY) #if (SC_DEV_FLOPPY >SC_DEVMAX) #error "SC_DEV_FLOPPY cannot be > SC_DEVMAX" #endif InstallDriver(SC_DEV_FLOPPY, FlpInit, NULLF, NULLF, FlpRead, FlpWrite, NULLF, 0, 0, 0);#endif /*---------------------------------------------------------------------*//* Setup pSOSystem IDE disk driver *//* NOTE: This driver must be called from a task it cannot use the *//* auto initialization freature of pSOS+ *//*---------------------------------------------------------------------*/#if (SC_DEV_IDE && BSP_IDE) #if (SC_DEV_IDE >SC_DEVMAX) #error "SC_DEV_IDE cannot be > SC_DEVMAX" #endif InstallDriver(SC_DEV_IDE, IDEInit, NULLF, NULLF, IDERead, IDEWrite, IDECntrl, 0, 0, 0);#endif/*---------------------------------------------------------------------*//* Install the pSOSystem TFTP driver. *//* NOTE: This driver must be called from a task it cannot use the *//* auto initialization freature of pSOS+ *//*---------------------------------------------------------------------*/#if (SC_DEV_TFTP) #if(SC_DEV_TFTP > SC_DEVMAX) #error "SC_DEV_TFTP cannot be > SC_DEVMAX" #endif InstallDriver(SC_DEV_TFTP, TftpInit, TftpOpen, TftpClose, TftpRead, NULLF, TftpCntl, 0, 0, 0);#endif/*---------------------------------------------------------------------*//* Install the SPI driver *//* NOTE: This driver must be called from a task it cannot use the *//* auto initialization freature of pSOS+ *//*---------------------------------------------------------------------*/#if (SC_DEV_SPI) #if(SC_DEV_SPI > SC_DEVMAX) #error "SC_DEV_SPI cannot be > SC_DEVMAX" #endif InstallDriver(SC_DEV_SPI, SPI_init, SPI_open, SPI_close, NULLF, NULLF, SPI_io, 0, 0, 0);#endif/*---------------------------------------------------------------------*//* Install pSE DLPI driver *//* NOTE: This driver must be called from a task it cannot use the *//* auto initialization freature of pSOS+ *//*---------------------------------------------------------------------*/#if (SC_DEV_DLPI) { #if(SC_DEV_DLPI > SC_DEVMAX) #error "SC_DEV_DLPI cannot be > SC_DEVMAX" #endif extern long DlpiNullNI(); extern UCHAR *DlpiInit(UCHAR *, long, long); extern int DlpiAddNI(long, long(*)(), long, long, char *, long); extern void enetinit(); extern struct streamtab enetinfo; char *DlpiErrMsg = "DlpiAddNI failed: NI Error"; static const psedrvparam_t eth0param = {"eth0", DT_CLONE, &enetinfo, 0, 0}; InstallDriver(SC_DEV_DLPI, enetinit, NULLF, NULLF, NULLF, NULLF, NULLF, (long)ð0param, 0, 0); /*-------------------------------------------------------------*/ /* Call DlpiInit to initialize the Streams DLPI driver */ /* Arguments passed to DlpiInit are: */ /* 1. Free memory address */ /* 2. Maximum NI interface number */ /* 3. Maximum number of streams per interface */ /*-------------------------------------------------------------*/ FreeMemPtr = DlpiInit(FreeMemPtr, 1, 6); /*-------------------------------------------------------------*/ /* Call DlpiAddNI to add an NI interface to the Streams DLPI */ /* driver. DlpiAddNI must be called for each NI driver */ /* interface used with the Streams DLPI driver. */ /* Arguments passed to DlpiAddNI are: */ /* 1. NI interface number (should correspond to the pNA+ */ /* interface number if driver is shared with pNA+) */ /* 2. NI entry point */ /* 3. NI flags */ /* IFF_SELFLOOP 0x0001 loopback for self-address */ /* IFF_POLL_NI 0x0002 driver must be polled */ /* IFF_RAWMEM 0x2000 driver accepts mblk link list */ /* 4. NI major device number */ /* 5. NI multicast address */ /* 6. NI poll frequency (every # of elapsed ticks) */ /*-------------------------------------------------------------*/ #if (BSP_LAN1 && SE_SHARE_NI) if (DlpiAddNI(1, (long(*)())BSP_LAN1_ENTRY, 0x2000, SC_DEV_DLPI, 0, 0)) SysInitFail(DlpiErrMsg); #else if (DlpiAddNI(0, (long(*)())DlpiNullNI, 0, SC_DEV_DLPI, 0, 0)) SysInitFail(DlpiErrMsg); #endif }#endif/*-------------------------------------------------------------------*//* Install pSOSystem Watchdog driver *//*-------------------------------------------------------------------*/#if (SC_DEV_WATCHDOG) #if(SC_DEV_WATCHDOG > SC_DEVMAX) #error "SC_DEV_WATCHDOG cannot be > SC_DEVMAX" #endif InstallDriver(SC_DEV_WATCHDOG, WdtInit, NULLF, NULLF, NULLF, NULLF, NULLF, 0, 0, 0);#endif/*---------------------------------------------------------------------*//* Additional drivers may be installed here. *//*---------------------------------------------------------------------*/return FreeMemPtr;}#endif /* SC_PSOS || SC_PSOSM */#if SC_PNA/***********************************************************************//* SetUpNI: Set up Network Interfaces for pNA+ *//* *//* INPUT: FreeMemPtr = A pointer to unused memory that can be *//* used to allocate space for a driver. *//* NOTE: Be sure to advance FreeMemPtr if *//* memory is allocates! *//* *//* RETURNS: The new address of free memory after the drivers have *//* allocated space. *//* *//* NOTES: This function does many precompile checks so errors *//* can be found during compile-time rather then at run- *//* time. *//* *//* Also, the Network Interface Table must be allocated *//* before this function can be called. There cannot be *//* more then NC_NNI entries in this table. NC_NNI is set *//* in sys_conf.h. Before adding another interface, be *//* sure to check sys_conf.h to see if NC_NNI is set to *//* accommodate another one! *//* *//* See the pSOSystem Programmers Reference Manual *//* for more information. *//* *//* To add a Network driver to pSOSystem, call InstallNi(). This adds *//* the Network Interface to the pNA+ Network Interface Table. *//* InstallNi() takes the following arguments: *//* *//* int (*entry)(); address of NI entry point *//* int ipadd; IP address *//* int mtu; maximum transmission length *//* int hwalen; length of hardware address *//* int flags; intErface flags *//* int subnetaddr; subnet mask *//* int dstipaddr; destination ip address *//* *//* See pSOSystem Programmer`s Reference Manual, Configuration Tables *//* Section, for more information about the Network Interface Table. *//* InstallNi() does not return a value. *//* *//* If you are adding a driver that needs to be initialized before *//* either pSOS+ is initialized or the driver's init function is *//* called, then you can call a setup function (that you create) for *//* the driver (for example, see the CnslSetup call for the serial *//* device driver). If your initialization function needs to allocate *//* memory, you may pass it the FreeMemPtr. The function should return *//* a new FreeMemPtr which points to the end of the memory it has *//* allocated. *//* *//* When adding code to install a new driver, it is a good idea to add *//* precompile checks so errors can be found during compile-time rather *//* then at run-time. Precompile checks are used, for example, in the *//* code that installs the pSOSystem serial device driver below. *//* *//***********************************************************************/UCHAR *SetUpNI(UCHAR *FreeMemPtr){int IPaddr;/*---------------------------------------------------------------------*//* Install the pSOSystem NI. *//*---------------------------------------------------------------------*/#if BSP_LAN1 if (SysVars.Lan1) { /*-------------------------------------------------------------*/ /* If RARP is specified for the IP address, use it now to */ /* obtain the IP address for this interface. */ /*-------------------------------------------------------------*/ if (SysVars.Lan1IP == USE_RARP) { #if (SC_DEV_DLPI && SE_SHARE_NI) IPaddr = RarpEth((long (*)())DlpiEnet); #else IPaddr = RarpEth((long (*)())BSP_LAN1_ENTRY); #endif if (IPaddr == 0) SysInitFail(RarpErrTimeout); if (IPaddr == -1) SysInitFail(RarpErrNet); } else IPaddr = SysVars.Lan1IP; #if (SC_DEV_DLPI && SE_SHARE_NI) InstallNi((int (*)())DlpiEnet, IPaddr, #else InstallNi((int (*)())BSP_LAN1_ENTRY, IPaddr, #endif BSP_LAN1_MTU, BSP_LAN1_HWALEN, BSP_LAN1_FLAGS, SysVars.Lan1SubnetMask, 0); }#endif/*---------------------------------------------------------------------*//* Install the shared memory NI. *//*---------------------------------------------------------------------*/#if BSP_SMEM #if ((SC_NISM_LEVEL != 1) && (SC_NISM_LEVEL != 2)) #error "Illegal value for SC_NISM_LEVEL" #endif if (SysVars.Nism) { InstallNi((int (*)())NiSmem, SysVars.NismIP, NISM_MTU, 4, 0x8002, SysVars.NismSubnetMask, 0); /*-------------------------------------------------------------*/ /* Set up the NI Shared Memory driver by calling its function */ /* "NiSmemSetup". */ /*-------------------------------------------------------------*/ FreeMemPtr = NiSmemSetup(SC_NISM_BUFFS, FreeMemPtr, SC_NISM_LEVEL); }#endif/*---------------------------------------------------------------------*//* Additional Network drivers may be installed here. *//*---------------------------------------------------------------------*/return FreeMemPtr;}#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -