📄 bootconfig.c
字号:
IO_ADRS_NISA_PCMCIA, IO_ADRS_NISA_PCMEM, INT_VEC_PCMCIA_A, INT_LVL_PCMCIA_A, INT_VEC_PCMCIA_B, INT_LVL_PCMCIA_B },#endif#ifdef INCLUDE_DC { "dc", dcattach, (char*)IO_ADRS_DC, INT_VEC_DC, INT_LVL_DC, DC_POOL_ADRS, DC_POOL_SIZE, DC_DATA_WIDTH, DC_RAM_PCI_ADRS, DC_MODE },#endif /* INCLUDE_DC */#ifdef INCLUDE_EGL { "egl", eglattach, (char*)IO_ADRS_EGL, INT_VEC_EGL, INT_LVL_EGL },#endif /* INCLUDE_EGL */#ifdef INCLUDE_EI { "ei", eiattach, (char*)INT_VEC_EI, EI_SYSBUS, EI_POOL_ADRS, 0, 0},#endif /* INCLUDE_EI */#ifdef INCLUDE_FEI { "fei", feiattach, (char*)FEI_POOL_ADRS, 0, 0, 0, 0},#endif /* INCLUDE_FEI */#ifdef INCLUDE_EX { "ex", exattach, (char*)IO_ADRS_EX, INT_VEC_EX, INT_LVL_EX, IO_AM_EX_MASTER, IO_AM_EX },#endif /* INCLUDE_EX */#ifdef INCLUDE_ENP { "enp", enpattach, (char*)IO_ADRS_ENP, INT_VEC_ENP, INT_LVL_ENP, IO_AM_ENP },#endif /* INCLUDE_ENP */#ifdef INCLUDE_IE { "ie", ieattach, (char*)IO_ADRS_IE, INT_VEC_IE, INT_LVL_IE },#endif /* INCLUDE_IE */#ifdef INCLUDE_ILAC { "ilac", ilacattach, (char*)IO_ADRS_ILAC, INT_VEC_ILAC},#endif /* INCLUDE_ILAC */#ifdef INCLUDE_LN { "ln", lnattach, (char*)IO_ADRS_LN, INT_VEC_LN, INT_LVL_LN, LN_POOL_ADRS, LN_POOL_SIZE, LN_DATA_WIDTH, LN_PADDING, LN_RING_BUF_SIZE },#endif /* INCLUDE_LN */#ifdef INCLUDE_LNSGI { "lnsgi", lnsgiattach, (char*)IO_ADRS_LNSGI, INT_VEC_LNSGI, INT_LVL_LNSGI, LNSGI_POOL_ADRS, LNSGI_POOL_SIZE, LNSGI_DATA_WIDTH, LNSGI_PADDING, LNSGI_RING_BUF_SIZE },#endif /* INCLUDE_LNSGI */#ifdef INCLUDE_NIC { "nic", nicattach, (char*)IO_ADRS_NIC, INT_VEC_NIC, INT_LVL_NIC },#endif /* INCLUDE_NIC */#ifdef INCLUDE_NIC_EVB { "nicEvb", nicEvbattach, (char*)IO_ADRS_NIC,INT_VEC_NIC,INT_LVL_NIC },#endif /* INCLUDE_NIC_EVB */#ifdef INCLUDE_MED { "med", medattach, (char*)IO_ADRS_DBETH, INT_VEC_DBETH, INT_LVL_DBETH},#endif /* INCLUDE_MED */#ifdef INCLUDE_ELC { "elc", elcattach, (char*)IO_ADRS_ELC, INT_VEC_ELC, INT_LVL_ELC, MEM_ADRS_ELC, MEM_SIZE_ELC, CONFIG_ELC},#endif /* INCLUDE_ELC */#ifdef INCLUDE_ULTRA { "ultra", ultraattach, (char*)IO_ADRS_ULTRA, INT_VEC_ULTRA, INT_LVL_ULTRA, MEM_ADRS_ULTRA, MEM_SIZE_ULTRA, CONFIG_ULTRA},#endif /* INCLUDE_ULTRA */#ifdef INCLUDE_EEX { "eex", eexattach, (char*)IO_ADRS_EEX, INT_VEC_EEX, INT_LVL_EEX, NTFDS_EEX, CONFIG_EEX},#endif /* INCLUDE_EEX */#ifdef INCLUDE_ELT { "elt", eltattach, (char*)IO_ADRS_ELT, INT_VEC_ELT, INT_LVL_ELT, NRF_ELT, CONFIG_ELT},#endif /* INCLUDE_ELT */#ifdef INCLUDE_ENE { "ene", eneattach, (char*)IO_ADRS_ENE, INT_VEC_ENE, INT_LVL_ENE},#endif /* INCLUDE_ELT */#ifdef INCLUDE_ESMC { "esmc", esmcattach, (char*)IO_ADRS_ESMC, INT_VEC_ESMC, INT_LVL_ESMC, CONFIG_ESMC, RX_MODE_ESMC},#endif /* INCLUDE_ESMC */#ifdef INCLUDE_QU { "qu", quattach, (char*)IO_ADRS_QU_EN, INT_VEC_QU_EN, QU_EN_SCC, QU_EN_TX_BD, QU_EN_RX_BD, QU_EN_TX_OFF, QU_EN_RX_OFF, QU_EN_MEM},#endif /* INCLUDE_QU */#ifdef INCLUDE_SN { "sn", snattach, (char*)IO_ADRS_SN, INT_VEC_SN },#endif /* INCLUDE_SN */#ifdef INCLUDE_FN { "fn", fnattach },#endif /* INCLUDE_FN */#ifdef INCLUDE_SM_NET { "sm", smNetAttach, 0, 0, 0, 0, 0, 0 },#endif /* INCLUDE_SM_NET */#ifdef INCLUDE_PCMCIA { "pcmcia", pcmciaattach, 0, 0, 0, 0, 0, 0 },#endif /* INCLUDE_PCMCIA */#ifdef INCLUDE_PPP {"ppp", 0, 0, 0, 0, 0},#endif /* INCLUDE_PPP */#ifdef INCLUDE_SLIP { "sl", 0, 0, 0, 0, 0 },#endif /* INCLUDE_SLIP */ { "lo", loattach, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0 }, };#endif /* INCLUDE_NETWORK *//* global variables */SYMTAB_ID sysSymTbl;int consoleFd; /* fd of initial console device */char consoleName [20]; /* console device name, eg. "/tyCo/0" */int sysStartType; /* BOOT_CLEAR, BOOT_NO_AUTOBOOT, ... */BOOL scsiInitialized = FALSE;int bootCmdTaskPriority = 1;int bootCmdTaskOptions = VX_SUPERVISOR_MODE;int bootCmdTaskStackSize = 7000;#ifdef INCLUDE_NETWORK/* network protocol configuration parameters */#ifdef INCLUDE_TCPTCP_CFG_PARAMS tcpCfgParams = /* tcp configuration parameters */ { TCP_FLAGS_DFLT, /* include rfc1323 support */ TCP_SND_SIZE_DFLT, /* default send buffer size */ TCP_RCV_SIZE_DFLT, /* default recv buffer size */ TCP_CON_TIMEO_DFLT, /* initial connection time out */ TCP_REXMT_THLD_DFLT, /* retransmit threshold */ TCP_MSS_DFLT, /* default maximum segment size */ TCP_RND_TRIP_DFLT, /* default round trip time */ TCP_IDLE_TIMEO_DFLT, /* idle timeouts before first probe */ TCP_MAX_PROBE_DFLT /* max no. probes before dropping */ };#endif /* INCLUDE_TCP */#ifdef INCLUDE_UDPUDP_CFG_PARAMS udpCfgParams = /* udp configuration parameters */ { UDP_FLAGS_DFLT, UDP_SND_SIZE_DFLT, /* send buffer size */ UDP_RCV_SIZE_DFLT /* recv buffer size */ };#endif /* INCLUDE_UDP */#ifdef INCLUDE_ICMPICMP_CFG_PARAMS icmpCfgParams = /* icmp configuration parameters */ { ICMP_FLAGS_DFLT /* no icmp mask replies by default */ };#endif /* INCLUDE_ICMP */IP_CFG_PARAMS ipCfgParams = /* ip configuration parameters */ { IP_FLAGS_DFLT, /* default ip flags */ IP_TTL_DFLT, /* ip default time to live */ IP_QLEN_DFLT, /* default ip intr queue len */ IP_FRAG_TTL_DFLT /* default ip fragment time to live */ };/* network buffers configuration *//* * mBlk, clBlk configuration table for network stack data pool. * Only used for data transfer in the network stack. */M_CL_CONFIG mClBlkConfig = { /* no. mBlks no. clBlks memArea memSize ----------- ---------- ------- ------- */ NUM_NET_MBLKS_MIN, NUM_CL_BLKS_MIN, NULL, 0 };/* * network stack data cluster pool configuration table * Only used for data transfer in the network stack. */CL_DESC clDescTbl [] = { /* clusterSize num memArea memSize ----------- ---- ------- ------- */ {64, NUM_64_MIN, NULL, 0}, {128, NUM_128_MIN, NULL, 0}, {256, NUM_256_MIN, NULL, 0}, {512, NUM_512_MIN, NULL, 0}, {1024, NUM_1024_MIN, NULL, 0}, };int clDescTblNumEnt = (NELEMENTS(clDescTbl));/* * mBlk, clBlk configuration table for network stack system pool. * Used for network stack system structures such as routes, sockets, * protocol control blocks, interface addresses, mulitcast addresses, * and multicast routing entries. */M_CL_CONFIG sysMclBlkConfig = { /* no. mBlks no. clBlks memArea memSize ----------- ---------- ------- ------- */ NUM_SYS_MBLKS_MIN, NUM_SYS_CL_BLKS_MIN, NULL, 0 };/* * network stack system cluster pool configuration table * Used for network stack system structures such as routes, sockets, * protocol control blocks, interface addresses, mulitcast addresses, * and multicast routing entries. */CL_DESC sysClDescTbl [] = { /* clusterSize num memArea memSize ----------- ---- ------- ------- */ {64, NUM_SYS_64_MIN, NULL, 0}, {128, NUM_SYS_128_MIN, NULL, 0}, {256, NUM_SYS_256_MIN, NULL, 0}, {512, NUM_SYS_512_MIN, NULL, 0}, }; int sysClDescTblNumEnt = (NELEMENTS(sysClDescTbl));#if defined(INCLUDE_STREAMS) || defined(INCLUDE_STREAMS_ALL)#ifdef STREAMS_PROTO_INIT_RTNFUNCPTR strmProtoInitRtn = (FUNCPTR) STREAMS_PROTO_INIT_RTN;#endif /* STREAMS_PROTO_INIT_RTN */#endif /* INCLUDE_STREAMS || INCLUDE_STREAMS_ALL */#ifdef INCLUDE_PPP#ifndef PPP_OPTIONS_FLAGS#define PPP_OPTIONS_FLAGS ((PPP_OPT_NO_ALL << PPP_S_NO_ALL) | \ (PPP_OPT_PASSIVE_MODE << PPP_S_PASSIVE_MODE) | \ (PPP_OPT_SILENT_MODE << PPP_S_SILENT_MODE) | \ (PPP_OPT_DEFAULTROUTE << PPP_S_DEFAULTROUTE) | \ (PPP_OPT_PROXYARP << PPP_S_PROXYARP) | \ (PPP_OPT_IPCP_ACCEPT_LOCAL << PPP_S_IPCP_ACCEPT_LOCAL) | \ (PPP_OPT_IPCP_ACCEPT_REMOTE << PPP_S_IPCP_ACCEPT_REMOTE) | \ (PPP_OPT_NO_IP << PPP_S_NO_IP) | \ (PPP_OPT_NO_ACC << PPP_S_NO_ACC) | \ (PPP_OPT_NO_PC << PPP_S_NO_PC) | \ (PPP_OPT_NO_VJ << PPP_S_NO_VJ) | \ (PPP_OPT_NO_VJCCOMP << PPP_S_NO_VJCCOMP) | \ (PPP_OPT_NO_ASYNCMAP << PPP_S_NO_ASYNCMAP) | \ (PPP_OPT_NO_MN << PPP_S_NO_MN) | \ (PPP_OPT_NO_MRU << PPP_S_NO_MRU) | \ (PPP_OPT_NO_PAP << PPP_S_NO_PAP) | \ (PPP_OPT_NO_CHAP << PPP_S_NO_CHAP) | \ (PPP_OPT_REQUIRE_PAP << PPP_S_REQUIRE_PAP) | \ (PPP_OPT_REQUIRE_CHAP << PPP_S_REQUIRE_CHAP) | \ (PPP_OPT_LOGIN << PPP_S_LOGIN) | \ (PPP_OPT_DEBUG << PPP_S_DEBUG) | \ (PPP_OPT_DRIVER_DEBUG << PPP_S_DRIVER_DEBUG))#endif /* PPP_OPTIONS_FLAGS */ PPP_OPTIONS pppOptions = { PPP_OPTIONS_FLAGS, /* flags field */ PPP_STR_ASYNCMAP, /* Set the desired async map */ PPP_STR_ESCAPE_CHARS, /* Set chars to escape on transmission */ PPP_STR_VJ_MAX_SLOTS, /* Set maximum VJ compression header slots */ PPP_STR_NETMASK, /* Set netmask value for negotiation */ PPP_STR_MRU, /* Set MRU value for negotiation */ PPP_STR_MTU, /* Set MTU value for negotiation */ PPP_STR_LCP_ECHO_FAILURE, /* Set max # consecutive LCP echo failures */ PPP_STR_LCP_ECHO_INTERVAL, /* Set time for LCP echo requests */ PPP_STR_LCP_RESTART, /* Set timeout for LCP */ PPP_STR_LCP_MAX_TERMINATE, /* Set max # xmits for LCP term-reqs */ PPP_STR_LCP_MAX_CONFIGURE, /* Set max # xmits for LCP conf-reqs */ PPP_STR_LCP_MAX_FAILURE, /* Set max # conf-naks for LCP */ PPP_STR_IPCP_RESTART, /* Set timeout for IPCP */ PPP_STR_IPCP_MAX_TERMINATE, /* Set max # xmits for IPCP term-reqs */ PPP_STR_IPCP_MAX_CONFIGURE, /* Set max # xmits for IPCP conf-reqs */ PPP_STR_IPCP_MAX_FAILURE, /* Set max # conf-naks for IPCP */ PPP_STR_LOCAL_AUTH_NAME, /* Set local name for authentication */ PPP_STR_REMOTE_AUTH_NAME, /* Set remote name for authentication */ PPP_STR_PAP_FILE, /* Set the PAP secrets file */ PPP_STR_PAP_USER_NAME, /* Set username for PAP auth with peer */ PPP_STR_PAP_PASSWD, /* Set password for PAP auth with peer */ PPP_STR_PAP_RESTART, /* Set timeout for PAP */ PPP_STR_PAP_MAX_AUTHREQ, /* Set max # xmits for PAP auth-reqs */ PPP_STR_CHAP_FILE, /* Set the CHAP secrets file */ PPP_STR_CHAP_RESTART, /* Set timeout for CHAP */ PPP_STR_CHAP_INTERVAL, /* Set interval for CHAP rechallenge */ PPP_STR_CHAP_MAX_CHALLENGE /* Set max # xmits for CHAP challenge */ }; #endif /* INCLUDE_PPP */#endif /* INCLUDE_NETWORK *//* forward declarations */#ifdef __STDC__void usrRoot (char *pMemPoolStart, unsigned memPoolSize);void usrClock (void);void usrKernelInit (void);LOCAL void bootCmdLoop (void);LOCAL char autoboot (int timeout);LOCAL void printBootLogo (void);LOCAL void bootHelp (void);LOCAL STATUS bootLoad (char *bootString, FUNCPTR *pEntry);LOCAL void go (FUNCPTR entry);LOCAL void m (char *adrs);LOCAL void d (char *adrs, int nwords);LOCAL void bootExcHandler (int tid);LOCAL void skipSpace (char **strptr);LOCAL void printExcMsg (char *string);LOCAL STATUS getArg (char **ppString, int *pValue, BOOL defaultHex, BOOL optional);LOCAL void usrBootLineInit (int startType);LOCAL STATUS usrBootLineCrack (char *bootString, BOOT_PARAMS *pParams);#ifdef INCLUDE_NETWORKLOCAL STATUS netLoad (char *hostName, char *fileName, char *usr, char *passwd, FUNCPTR *pEntry);LOCAL void netifAdrsPrint (char *ifname);LOCAL STATUS checkInetAddrField (char *pInetAddr, BOOL subnetMaskOK);LOCAL STATUS usrNetIfAttach (char *devName, int unitNum, char *inetAdrs);LOCAL STATUS usrNetIfConfig (char *devName, int unitNum, char *inetAdrs, char *inetName, int netmask);LOCAL STATUS usrBpInit (char *devName, int unitNum, u_long startAddr);LOCAL STATUS usrSlipInit (char *pBootDev, int unitNum, char *localAddr, char *peerAddr);LOCAL STATUS usrPPPInit (char *pBootDev, int unitNum, char *localAddr, char *peerAddr);LOCAL STATUS bootpGet (char *pNetDev, char *pBootDevAddr, char *pBootFile, char *pHostAddr, int *pMask);#ifdef INCLUDE_DHCPCLOCAL STATUS dhcpGet (char *pNetDev, char *pBootDevAddr, char *pBootFile, char *pHostAddr, int *pMask, struct dhcpLeaseData *pDhcpLease);#endif#if defined(INCLUDE_STREAMS) || defined(INCLUDE_STREAMS_ALL)LOCAL STATUS usrStrmInit (void);#endif /* INCLUDE_STREAMS || INCLUDE_STREAMS_ALL */#endif /* INCLUDE_NETWORK */#ifdef INCLUDE_SCSI_BOOTLOCAL STATUS scsiLoad (int bootDevId, int bootDevLUN, char *fileName, FUNCPTR *pEntry);#endif /* INCLUDE_SCSI_BOOT */#ifdef INCLUDE_FDLOCAL STATUS fdLoad (int drive, int type, char *fileName, FUNCPTR *pEntry);#endif /* INCLUDE_FD */#ifdef INCLUDE_IDELOCAL STATUS ideLoad (int drive, int type, char *fileName, FUNCPTR *pEntry);#endif /* INCLUDE_IDE */#ifdef INCLUDE_ATALOCAL STATUS ataLoad (int ctrl, int drive, char *fileName, FUNCPTR *pEntry);#endif /* INCLUDE_ATA */#ifdef INCLUDE_PCMCIALOCAL STATUS pcmciaLoad (int sock, char *fileName, FUNCPTR *pEntry);#endif /* INCLUDE_PCMCIA */#ifdef INCLUDE_TFFSLOCAL STATUS tffsLoad (int drive, int removable, char *fileName, FUNCPTR *pEntry);#endif /* INCLUDE_TFFS */#ifdef INCLUDE_TSFS_BOOTLOCAL STATUS tsfsLoad (char * fileName, FUNCPTR * pEntry);LOCAL void wdbRebootEventGet (void * pNode, WDB_EVT_DATA * pEvtData);#endif /* INCLUDE_TSFS_BOOT */#elsevoid usrRoot ();void usrClock ();void usrKernelInit ();LOCAL void bootCmdLoop ();LOCAL char autoboot ();LOCAL void printBootLogo ();LOCAL void bootHelp ();LOCAL STATUS bootLoad ();LOCAL void go ();LOCAL void m ();LOCAL void d ();LOCAL void bootExcHandler ();LOCAL void skipSpace ();LOCAL void printExcMsg ();LOCAL STATUS getArg ();LOCAL void usrBootLineInit ();LOCAL STATUS usrBootLineCrack ();#ifdef INCLUDE_NETWORKLOCAL STATUS netLoad ();LOCAL void netifAdrsPrint ();LOCAL STATUS checkInetAddrField ();LOCAL STATUS usrNetIfAttach ();LOCAL STATUS usrNetIfConfig ();LOCAL STATUS usrBpInit ();LOCAL STATUS usrSlipInit ();LOCAL STATUS usrPPPInit ();LOCAL STATUS bootpGet ();#if defined(INCLUDE_STREAMS) || defined(INCLUDE_STREAMS_ALL)LOCAL STATUS usrStrmInit ();#endif /* INCLUDE_STREAMS || INCLUDE_STREAMS_ALL */#endif /* INCLUDE_NETWORK */#ifdef INCLUDE_SCSI_BOOTLOCAL STATUS scsiLoad();#endif /* INCLUDE_SCSI_BOOT */#ifdef INCLUDE_FDLOCAL STATUS fdLoad ();#endif /* INCLUDE_FD */#ifdef INCLUDE_IDELOCAL STATUS ideLoad ();#endif /* INCLUDE_IDE */#ifdef INCLUDE_ATALOCAL STATUS ataLoad ();#endif /* INCLUDE_ATA */#ifdef INCLUDE_PCMCIALOCAL STATUS pcmciaLoad ();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -