亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? l1_command.c

?? 根據(jù)添加了fs2410平臺(tái)的arch目錄
?? C
?? 第 1 頁 / 共 3 頁
字號(hào):
    /* send the request to the L1 */    if( SC_COMMAND( sc, subch, msg, msg, &len ) < 0 )    {	sc_close( sc, subch );	return( ELSC_ERROR_CMD_SEND );    }    /* free up subchannel */    sc_close( sc, subch );        /* check response */    if( sc_interpret_resp( msg, 0 ) < 0 )    {	return( ELSC_ERROR_RESP_FORMAT );    }    return 0;}/* * sc_power_down * * Shuts down the c-brick associated with sc, and any attached I/O bricks * or other c-bricks (won't go through r-bricks). */int sc_power_down(l1sc_t *sc){    return sc_command_interp( sc, L1_ADDR_TYPE_L1, L1_ADDR_RACK_LOCAL, 			      L1_ADDR_BAY_LOCAL, "* pwr d" );}/* * sc_power_down_all * * Works similarly to sc_power_down, except that the request is sent to the * closest L2 and EVERYBODY gets turned off. */int sc_power_down_all(l1sc_t *sc){    if( nodepda->num_routers > 0 ) {	return sc_command_interp( sc, L1_ADDR_TYPE_L2, L1_ADDR_RACK_LOCAL, 				  L1_ADDR_BAY_LOCAL, "* pwr d" );    }    else {	return sc_power_down( sc );    }}/* * Routines for reading the R-brick's L1 */int router_module_get( nasid_t nasid, net_vec_t path ){    uint rnum, rack, bay, t;    int ret;    l1sc_t sc;    /* prepare l1sc_t struct */    sc_init( &sc, nasid, path );    /* construct module ID from rack and slot info */    if ((ret = elsc_rack_bay_get(&sc, &rnum, &bay)) < 0)	return ret;    /* report unset location info. with a special, otherwise invalid modid */    if (rnum == 0 && bay == 0)	return MODULE_NOT_SET;    if (bay > MODULE_BPOS_MASK >> MODULE_BPOS_SHFT)	return ELSC_ERROR_MODULE;    /* Build a moduleid_t-compatible rack number */    rack = 0;		    t = rnum / 100;		/* rack class (CPU/IO) */    if (t > RACK_CLASS_MASK(rack) >> RACK_CLASS_SHFT(rack))	return ELSC_ERROR_MODULE;    RACK_ADD_CLASS(rack, t);    rnum %= 100;    t = rnum / 10;		/* rack group */    if (t > RACK_GROUP_MASK(rack) >> RACK_GROUP_SHFT(rack))	return ELSC_ERROR_MODULE;    RACK_ADD_GROUP(rack, t);    t = rnum % 10;		/* rack number (one-based) */    if (t-1 > RACK_NUM_MASK(rack) >> RACK_NUM_SHFT(rack))	return ELSC_ERROR_MODULE;    RACK_ADD_NUM(rack, t);    ret = RBT_TO_MODULE(rack, bay, MODULE_RBRICK);    return ret;}    /* * iobrick routines *//* iobrick_rack_bay_type_get fills in the three int * arguments with the * rack number, bay number and brick type of the L1 being addressed.  Note * that if the L1 operation fails and this function returns an error value,  * garbage may be written to brick_type. */int iobrick_rack_bay_type_get( l1sc_t *sc, uint *rack, 			       uint *bay, uint *brick_type ){    char msg[BRL1_QSIZE];       /* L1 request/response info */    int subch;                  /* system controller subchannel used */    int len;                    /* length of message */    uint32_t buf32;	        /* used to copy 32-bit rack & bay out of msg */    /* fill in msg with the opcode & params */    bzero( msg, BRL1_QSIZE );    if( (subch = sc_open( sc, L1_ADDR_LOCALIO )) < 0 ) {	return( ELSC_ERROR_CMD_SEND );    }    if( (len = sc_construct_msg( sc, subch, msg, BRL1_QSIZE,				 L1_ADDR_TASK_GENERAL,				 L1_REQ_RRBT, 0 )) < 0 )    {	sc_close( sc, subch );	return( ELSC_ERROR_CMD_ARGS );    }    /* send the request to the L1 */    if( sc_command( sc, subch, msg, msg, &len ) ) {	sc_close( sc, subch );	return( ELSC_ERROR_CMD_SEND );    }    /* free up subchannel */    sc_close( sc, subch );    /* check response */    if( sc_interpret_resp( msg, 4, L1_ARG_INT, &buf32, 			           L1_ARG_INT, brick_type ) < 0 )    {	return( ELSC_ERROR_RESP_FORMAT );    }    /* extract rack/bay info     *     * note that the 32-bit value returned by the L1 actually     * only uses the low-order sixteen bits for rack and bay     * information.  A "normal" L1 address puts rack and bay     * information in bit positions 12 through 28.  So if     * we initially shift the value returned 12 bits to the left,     * we can use the L1 addressing #define's to extract the     * values we need (see ksys/l1.h for a complete list of the     * various fields of an L1 address).     */    buf32 <<= L1_ADDR_BAY_SHFT;    *rack = (buf32 & L1_ADDR_RACK_MASK) >> L1_ADDR_RACK_SHFT;    *bay = (buf32 & L1_ADDR_BAY_MASK) >> L1_ADDR_BAY_SHFT;    return 0;}int iobrick_module_get(l1sc_t *sc){    uint rnum, rack, bay, brick_type, t;    int ret;    /* construct module ID from rack and slot info */    if ((ret = iobrick_rack_bay_type_get(sc, &rnum, &bay, &brick_type)) < 0)        return ret;    if (bay > MODULE_BPOS_MASK >> MODULE_BPOS_SHFT)        return ELSC_ERROR_MODULE;    /* Build a moduleid_t-compatible rack number */    rack = 0;               t = rnum / 100;             /* rack class (CPU/IO) */    if (t > RACK_CLASS_MASK(rack) >> RACK_CLASS_SHFT(rack))        return ELSC_ERROR_MODULE;    RACK_ADD_CLASS(rack, t);    rnum %= 100;    t = rnum / 10;              /* rack group */    if (t > RACK_GROUP_MASK(rack) >> RACK_GROUP_SHFT(rack))        return ELSC_ERROR_MODULE;    RACK_ADD_GROUP(rack, t);    t = rnum % 10;              /* rack number (one-based) */    if (t-1 > RACK_NUM_MASK(rack) >> RACK_NUM_SHFT(rack))        return ELSC_ERROR_MODULE;    RACK_ADD_NUM(rack, t);    switch( brick_type ) {      case 'I': 	brick_type = MODULE_IBRICK; break;      case 'P':	brick_type = MODULE_PBRICK; break;      case 'X':	brick_type = MODULE_XBRICK; break;    }    ret = RBT_TO_MODULE(rack, bay, brick_type);    return ret;}/* iobrick_get_sys_snum asks the attached iobrick for the system * serial number.  This function will only be relevant to the master * cbrick (the one attached to the bootmaster ibrick); other nodes * may call the function, but the value returned to the master node * will be the one used as the system serial number by the kernel. */intiobrick_get_sys_snum( l1sc_t *sc, char *snum_str ){    char msg[BRL1_QSIZE];       /* L1 request/response info */    int subch;                  /* system controller subchannel used */    int len;                    /* length of message */        /* fill in msg with the opcode & params */    bzero( msg, BRL1_QSIZE );    if( (subch = sc_open( sc, L1_ADDR_LOCALIO )) < 0 ) {	return( ELSC_ERROR_CMD_SEND );    }    if( (len = sc_construct_msg( sc, subch, msg, BRL1_QSIZE,				 L1_ADDR_TASK_GENERAL,				 L1_REQ_SYS_SERIAL, 0 )) < 0 )    {	sc_close( sc, subch );	return( ELSC_ERROR_CMD_ARGS );    }    /* send the request to the L1 */    if( sc_command( sc, subch, msg, msg, &len ) ) {	sc_close( sc, subch );	return( ELSC_ERROR_CMD_SEND );    }    /* free up subchannel */    sc_close( sc, subch );    /* check response */    return( sc_interpret_resp( msg, 2, L1_ARG_ASCII, snum_str ) );}/* * The following functions apply (or cut off) power to the specified * pci bus or slot. */intiobrick_pci_pwr( l1sc_t *sc, int bus, int slot, int req_code ){#if 0 /* The "bedrock request" method of performing this function       * seems to be broken in the L1, so for now use the command-       * interpreter method       */    char	msg[BRL1_QSIZE];    int		len;    /* length of message being sent */    int		subch;  /* system controller subchannel used */    /* fill in msg with the opcode & params */    bzero( msg, BRL1_QSIZE );    subch = sc_open( sc, L1_ADDR_LOCALIO );    if( (len = sc_construct_msg( sc, subch, msg, BRL1_QSIZE,				 L1_ADDR_TASK_GENERAL,				 req_code, 4,				 L1_ARG_INT, bus,				 L1_ARG_INT, slot )) < 0 )    {	sc_close( sc, subch );	return( ELSC_ERROR_CMD_ARGS );    }    /* send the request to the L1 */    if( SC_COMMAND(sc, subch, msg, msg, &len ) < 0 )    {	sc_close( sc, subch );	return( ELSC_ERROR_CMD_SEND );    }    /* free up subchannel */    sc_close( sc, subch );    /* check response */    if( sc_interpret_resp( msg, 0 ) < 0 )    {	return( ELSC_ERROR_RESP_FORMAT );    }    return 0;#else    char cmd[64];    char *fxn;    switch( req_code )    {    case L1_REQ_PCI_UP:	fxn = "u";	break;    case L1_REQ_PCI_DOWN:	fxn = "d";	break;    case L1_REQ_PCI_RESET:	fxn = "rst";	break;    default:	return( ELSC_ERROR_CMD_ARGS );    }    if( slot == -1 ) 	sprintf( cmd, "pci %d %s", bus, fxn );    else        sprintf( cmd, "pci %d %d %s", bus, slot, fxn );	    return sc_command_interp( sc, L1_ADDR_TYPE_IOBRICK,	L1_ADDR_RACK_LOCAL, L1_ADDR_BAY_LOCAL, cmd );#endif}				 intiobrick_pci_slot_pwr( l1sc_t *sc, int bus, int slot, int up ){    return iobrick_pci_pwr( sc, bus, slot, up );}intiobrick_pci_bus_pwr( l1sc_t *sc, int bus, int up ){    return iobrick_pci_pwr( sc, bus, -1, up );}intiobrick_pci_slot_rst( l1sc_t *sc, int bus, int slot ){    return iobrick_pci_pwr( sc, bus, slot, L1_REQ_PCI_RESET );}intiobrick_pci_bus_rst( l1sc_t *sc, int bus ){    return iobrick_pci_pwr( sc, bus, -1, L1_REQ_PCI_RESET );}/* get the L1 firmware version for an iobrick */intiobrick_sc_version( l1sc_t *sc, char *result ){    char	msg[BRL1_QSIZE];    int		len;    /* length of message being sent */    int		subch;  /* system controller subchannel used */    int		major,  /* major rev number */	        minor,  /* minor rev number */                bugfix; /* bugfix rev number */    /* fill in msg with the opcode & params */    bzero( msg, BRL1_QSIZE );    subch = sc_open( sc, L1_ADDR_LOCALIO );    if( (len = sc_construct_msg( sc, subch, msg, BRL1_QSIZE,				 L1_ADDR_TASK_GENERAL,				 L1_REQ_FW_REV, 0 )) < 0 )    {	sc_close( sc, subch );	return( ELSC_ERROR_CMD_ARGS );    }    /* send the request to the L1 */    if( SC_COMMAND(sc, subch, msg, msg, &len ) < 0 )    {	sc_close( sc, subch );	return( ELSC_ERROR_CMD_SEND );    }    /* free up subchannel */    sc_close( sc, subch );    /* check response */    if( sc_interpret_resp( msg, 6, L1_ARG_INT, &major,			   L1_ARG_INT, &minor, L1_ARG_INT, &bugfix )	< 0 )    {	return( ELSC_ERROR_RESP_FORMAT );    }    sprintf( result, "%d.%d.%d", major, minor, bugfix );    return 0;}/* elscuart routines  * * Most of the elscuart functionality is implemented in l1.c.  The following * is directly "recycled" from elsc.c. *//* * _elscuart_puts */int _elscuart_puts(elsc_t *e, char *s){    int			c;    if (s == 0)	s = "<NULL>";    while ((c = LBYTE(s)) != 0) {	if (_elscuart_putc(e, c) < 0)	    return -1;	s++;    }    return 0;}/* * elscuart wrapper routines * *   The following routines are similar to their counterparts in l1.c, *   except instead of taking an elsc_t pointer directly, they call *   a global routine "get_elsc" to obtain the pointer. *   This is useful when the elsc is employed for stdio. */int elscuart_probe(void){    return _elscuart_probe(get_elsc());}void elscuart_init(void *init_data){    _elscuart_init(get_elsc());    /* dummy variable included for driver compatability */    init_data = init_data;}int elscuart_poll(void){    return _elscuart_poll(get_elsc());}int elscuart_readc(void){    return _elscuart_readc(get_elsc());}int elscuart_getc(void){    return _elscuart_getc(get_elsc());}int elscuart_puts(char *s){    return _elscuart_puts(get_elsc(), s);}int elscuart_putc(int c){    return _elscuart_putc(get_elsc(), c);}int elscuart_flush(void){    return _elscuart_flush(get_elsc());}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人精品国产一区二区4080| 色综合色狠狠综合色| 国产精品久久久久永久免费观看| 色婷婷综合久久久久中文| 免费欧美日韩国产三级电影| 亚洲免费av在线| 久久日韩精品一区二区五区| 精品污污网站免费看| av网站免费线看精品| 麻豆精品国产传媒mv男同| 玉米视频成人免费看| 国产三区在线成人av| 日韩免费性生活视频播放| 在线区一区二视频| 91免费看片在线观看| 国产成人精品影视| 久久成人久久鬼色| 91麻豆精品秘密| 成人美女在线观看| 国产一区二区三区电影在线观看| 日日夜夜一区二区| 一区二区在线免费观看| 国产精品国产三级国产| 久久亚洲春色中文字幕久久久| 欧美一级生活片| 欧美精品一二三区| 欧美日韩在线播放三区四区| 91色九色蝌蚪| 在线观看视频一区二区| 99视频精品在线| 成人性生交大片免费看在线播放 | 国产一区在线观看麻豆| 五月天亚洲精品| 亚洲图片有声小说| 亚洲综合色噜噜狠狠| 亚洲最色的网站| 亚洲激情男女视频| 亚洲午夜在线视频| 亚洲综合激情小说| 亚洲成人自拍一区| 日韩精品亚洲一区| 日韩中文字幕区一区有砖一区 | 日韩欧美黄色影院| 欧美一卡二卡三卡| 日韩欧美高清一区| 精品福利一二区| 亚洲福利一区二区| 亚洲va国产va欧美va观看| 性欧美大战久久久久久久久| 日韩高清在线电影| 另类小说欧美激情| 国产九色精品成人porny | 欧美日韩国产首页| 日韩一区二区电影网| 精品日韩av一区二区| 久久久久99精品国产片| 国产精品美女久久久久久| 亚洲欧美色一区| 亚洲3atv精品一区二区三区| 蜜臀av性久久久久蜜臀aⅴ| 国产真实乱对白精彩久久| 成人综合婷婷国产精品久久蜜臀| 波多野结衣亚洲一区| 91黄色免费看| 欧美一级二级三级蜜桃| 久久久久国产一区二区三区四区| 1区2区3区国产精品| 亚洲国产一区视频| 久久精品国产99国产| 国产成人免费xxxxxxxx| 91福利视频在线| 日韩欧美成人一区二区| 国产精品久久精品日日| 亚洲午夜久久久久| 国内精品在线播放| 日本高清成人免费播放| 欧美一级久久久| 日韩一区在线看| 日韩极品在线观看| 高清shemale亚洲人妖| 欧美系列在线观看| www激情久久| 亚洲一级二级在线| 国产精品一区二区果冻传媒| 欧美无砖专区一中文字| 国产午夜精品在线观看| 亚洲一区国产视频| 国产成人av电影在线播放| 欧美午夜精品理论片a级按摩| 精品国产免费视频| 亚洲与欧洲av电影| 国产成人综合在线| 欧美猛男gaygay网站| 亚洲国产成人午夜在线一区| 秋霞电影网一区二区| 色综合久久久久| 久久美女艺术照精彩视频福利播放 | 99精品视频一区| 日韩欧美一卡二卡| 亚洲电影一区二区三区| 成人久久18免费网站麻豆| 日韩美女主播在线视频一区二区三区| 亚洲人精品一区| 国产精品影视在线| 日韩天堂在线观看| 亚洲一区二区在线视频| 成人午夜伦理影院| 欧美精品一区男女天堂| 日韩国产精品久久| 一本色道久久综合亚洲91| 国产日韩成人精品| 蜜桃久久av一区| 欧美日韩免费观看一区二区三区 | 免费在线观看精品| 欧美日韩一区国产| 一区二区三区加勒比av| 成人av在线一区二区| 久久久99免费| 精品一区二区三区在线观看| 欧美久久一区二区| 一区二区三区产品免费精品久久75| 成人一区二区视频| 精品成人佐山爱一区二区| 欧美aaaaaa午夜精品| 欧美男同性恋视频网站| 亚洲国产裸拍裸体视频在线观看乱了| 91色九色蝌蚪| 夜夜精品视频一区二区 | 久久男人中文字幕资源站| 寂寞少妇一区二区三区| 日韩欧美色综合| 毛片一区二区三区| 日韩免费视频线观看| 极品少妇一区二区| 欧美精品一区二区在线播放| 久久国产精品一区二区| 亚洲精品一区二区三区福利| 国产乱码精品一区二区三| 亚洲国产成人自拍| 91一区二区在线| 一区二区三区免费| 欧美群妇大交群中文字幕| 午夜精品一区二区三区免费视频 | 欧美亚洲另类激情小说| 夜夜精品视频一区二区| 在线成人av网站| 日韩经典一区二区| 亚洲精品一区二区在线观看| 国产综合久久久久久鬼色| 国产日韩欧美一区二区三区乱码| 成人动漫一区二区三区| 亚洲美女在线国产| 欧美精选一区二区| 精品在线免费观看| 国产亚洲一区二区三区四区| caoporm超碰国产精品| 亚洲黄色片在线观看| 欧美日韩性生活| 久久精品国产99久久6| 国产精品久99| 欧美乱妇20p| 国产中文字幕一区| 亚洲三级理论片| 91精品国产一区二区三区香蕉 | 欧美福利一区二区| 日本不卡在线视频| 国产精品日韩精品欧美在线| 色噜噜狠狠成人中文综合 | 久久综合狠狠综合久久激情 | 成人av在线影院| 日日摸夜夜添夜夜添亚洲女人| 欧美精品一区二区久久婷婷| hitomi一区二区三区精品| 亚洲超碰精品一区二区| 久久九九久久九九| 欧美视频你懂的| 韩国视频一区二区| 亚洲黄色小说网站| 久久只精品国产| 欧亚一区二区三区| 国产精品99久久久久久久vr | 国产91富婆露脸刺激对白| 亚洲二区在线视频| 国产精品美女久久久久久久久久久| 欧美亚男人的天堂| 国产99精品国产| 水野朝阳av一区二区三区| 亚洲国产成人自拍| 日韩一区二区不卡| 在线观看欧美日本| 风间由美中文字幕在线看视频国产欧美 | 欧美性videosxxxxx| 高清在线成人网| 美日韩一区二区三区| 亚洲女人小视频在线观看| 2021中文字幕一区亚洲| 欧美日韩在线亚洲一区蜜芽| 成人亚洲精品久久久久软件| 精品制服美女久久| 午夜a成v人精品|