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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? nfs.c

?? 關于s3c2440之bootloader的源代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
	if (ntohl(rpc_pkt.u.reply.id) != rpc_id)		return -1;	if (rpc_pkt.u.reply.rstatus  ||	    rpc_pkt.u.reply.verifier ||	    rpc_pkt.u.reply.astatus  ||	    rpc_pkt.u.reply.astatus) {		return -1;	}	switch (prog) {	case PROG_MOUNT:		NfsSrvMountPort = ntohl(rpc_pkt.u.reply.data[0]);		break;	case PROG_NFS:		NfsSrvNfsPort = ntohl(rpc_pkt.u.reply.data[0]);		break;	}	return 0;}static intnfs_mount_reply (uchar *pkt, unsigned len){	struct rpc_t rpc_pkt;#ifdef NFS_DEBUG	printk ("%s\n", __FUNCTION__);#endif	memcpy ((unsigned char *)&rpc_pkt, pkt, len);	if (ntohl(rpc_pkt.u.reply.id) != rpc_id)		return -1;	if (rpc_pkt.u.reply.rstatus  ||	    rpc_pkt.u.reply.verifier ||	    rpc_pkt.u.reply.astatus  ||	    rpc_pkt.u.reply.data[0]) {		return -1;	}	fs_mounted = 1;	memcpy (dirfh, rpc_pkt.u.reply.data + 1, NFS_FHSIZE);	return 0;}static intnfs_umountall_reply (uchar *pkt, unsigned len){	struct rpc_t rpc_pkt;#ifdef NFS_DEBUG	printk ("%s\n", __FUNCTION__);#endif	memcpy ((unsigned char *)&rpc_pkt, pkt, len);	if (ntohl(rpc_pkt.u.reply.id) != rpc_id)		return -1;	if (rpc_pkt.u.reply.rstatus  ||	    rpc_pkt.u.reply.verifier ||	    rpc_pkt.u.reply.astatus) {		return -1;	}	fs_mounted = 0;	memset (dirfh, 0, sizeof(dirfh));	return 0;}static intnfs_lookup_reply (uchar *pkt, unsigned len){	struct rpc_t rpc_pkt;#ifdef NFS_DEBUG	printk ("%s\n", __FUNCTION__);#endif	memcpy ((unsigned char *)&rpc_pkt, pkt, len);	if (ntohl(rpc_pkt.u.reply.id) != rpc_id)		return -1;	if (rpc_pkt.u.reply.rstatus  ||	    rpc_pkt.u.reply.verifier ||	    rpc_pkt.u.reply.astatus  ||	    rpc_pkt.u.reply.data[0]) {		return -1;	}	memcpy (filefh, rpc_pkt.u.reply.data + 1, NFS_FHSIZE);	return 0;}static intnfs_readlink_reply (uchar *pkt, unsigned len){	struct rpc_t rpc_pkt;	int rlen;#ifdef NFS_DEBUG	printk ("%s\n", __FUNCTION__);#endif	memcpy ((unsigned char *)&rpc_pkt, pkt, len);	if (ntohl(rpc_pkt.u.reply.id) != rpc_id)		return -1;	if (rpc_pkt.u.reply.rstatus  ||	    rpc_pkt.u.reply.verifier ||	    rpc_pkt.u.reply.astatus  ||	    rpc_pkt.u.reply.data[0]) {		return -1;	}	rlen = ntohl (rpc_pkt.u.reply.data[1]); /* new path length */	if (*((char *)&(rpc_pkt.u.reply.data[2])) != '/') {		int pathlen;		strcat (nfs_path, "/");		pathlen = strlen(nfs_path);		memcpy (nfs_path+pathlen, (uchar *)&(rpc_pkt.u.reply.data[2]), rlen);		nfs_path[pathlen+rlen+1] = 0;	} else {		memcpy (nfs_path, (uchar *)&(rpc_pkt.u.reply.data[2]), rlen);		nfs_path[rlen] = 0;	}	return 0;}static intnfs_read_reply (uchar *pkt, unsigned len){	struct rpc_t rpc_pkt;	int rlen;#ifdef NFS_DEBUG_nop	printk ("%s\n", __FUNCTION__);#endif	memcpy ((uchar *)&rpc_pkt, pkt, sizeof(rpc_pkt.u.reply));	if (ntohl(rpc_pkt.u.reply.id) != rpc_id)		return -1;	if (rpc_pkt.u.reply.rstatus  ||	    rpc_pkt.u.reply.verifier ||	    rpc_pkt.u.reply.astatus  ||	    rpc_pkt.u.reply.data[0]) {		if (rpc_pkt.u.reply.rstatus) {			return -9999;		}		if (rpc_pkt.u.reply.astatus) {			return -9999;		}		return -ntohl(rpc_pkt.u.reply.data[0]);;	}	if ((nfs_offset!=0) && !((nfs_offset) % (NFS_READ_SIZE/2*10*HASHES_PER_LINE))) {		printk("\n\t ");	}	if (!(nfs_offset % ((NFS_READ_SIZE/2)*10))) {		printk("#");	}	rlen = ntohl(rpc_pkt.u.reply.data[18]);	store_block ((uchar *)pkt+sizeof(rpc_pkt.u.reply), nfs_offset, rlen);	return rlen;}/**************************************************************************Interfaces of U-BOOT**************************************************************************/static voidNfsHandler (uchar *pkt, unsigned dest, unsigned src, unsigned len){	int rlen;#ifdef NFS_DEBUG	printk ("%s\n", __FUNCTION__);#endif	if (dest != NfsOurPort) return;	switch (NfsState) {	case STATE_PRCLOOKUP_PROG_MOUNT_REQ:		rpc_lookup_reply (PROG_MOUNT, pkt, len);		NfsState = STATE_PRCLOOKUP_PROG_NFS_REQ;		NfsSend ();		break;	case STATE_PRCLOOKUP_PROG_NFS_REQ:		rpc_lookup_reply (PROG_NFS, pkt, len);		NfsState = STATE_MOUNT_REQ;		NfsSend ();		break;	case STATE_MOUNT_REQ:		if (nfs_mount_reply(pkt, len)) {			printk("*** ERROR: Cannot mount\n");			/* just to be sure... */			NfsState = STATE_UMOUNT_REQ;			NfsSend ();		} else {			NfsState = STATE_LOOKUP_REQ;			NfsSend ();		}		break;	case STATE_UMOUNT_REQ:		if (nfs_umountall_reply(pkt, len)) {			printk("*** ERROR: Cannot umount\n");			NetState = NETLOOP_FAIL;		} else {			printk("\ndone\n");			NetState = NETLOOP_SUCCESS;		}		break;	case STATE_LOOKUP_REQ:		if (nfs_lookup_reply(pkt, len)) {			printk("*** ERROR: File lookup fail\n");			NfsState = STATE_UMOUNT_REQ;			NfsSend ();		} else {			NfsState = STATE_READ_REQ;			nfs_offset = 0;			nfs_len = NFS_READ_SIZE;			NfsSend ();		}		break;	case STATE_READLINK_REQ:		if (nfs_readlink_reply(pkt, len)) {			printk("*** ERROR: Symlink fail\n");			NfsState = STATE_UMOUNT_REQ;			NfsSend ();		} else {#ifdef NFS_DEBUG			printk ("Symlink --> %s\n", nfs_path);#endif			nfs_filename = basename (nfs_path);			nfs_path     = dirname (nfs_path);			NfsState = STATE_MOUNT_REQ;			NfsSend ();		}		break;	case STATE_READ_REQ:		rlen = nfs_read_reply (pkt, len);		if (rlen > 0) {			nfs_offset += rlen;			NfsSend ();		}		else if ((rlen == -NFSERR_ISDIR)||(rlen == -NFSERR_INVAL)) {			/* symbolic link */			NfsState = STATE_READLINK_REQ;			NfsSend ();		} else {			NfsState = STATE_UMOUNT_REQ;			NfsSend ();		}		break;	}}static voidNfsTimeout (void){	printk("Timeout\n");	NetState = NETLOOP_FAIL;	return;}voidNfsStart (void){#ifdef NFS_DEBUG	printk ("%s\n", __FUNCTION__);#endif	NfsServerIP = NetServerIP;	nfs_path = (char *)nfs_path_buff;	if (nfs_path == NULL) {		NetState = NETLOOP_FAIL;		printk("*** ERROR: Fail allocate memory\n");		return;	}	if (BootFile[0] == '\0') {		IPaddr_t OurIP = ntohl (NetOurIP);		sprintk (default_filename, "/nfsroot/%02lX%02lX%02lX%02lX.img",			OurIP & 0xFF,			(OurIP >>  8) & 0xFF,			(OurIP >> 16) & 0xFF,			(OurIP >> 24) & 0xFF	);		strcpy (nfs_path, default_filename);		printk ("*** Warning: no boot file name; using '%s'\n",			nfs_path);	} else {		char *p=BootFile;		p = strchr (p, ':');		if (p != NULL) {			NfsServerIP = string_to_ip (BootFile);			++p;			strcpy (nfs_path, p);		} else {			strcpy (nfs_path, BootFile);		}	}	nfs_filename = basename (nfs_path);	nfs_path     = dirname (nfs_path);	printk("File transfer via NFS from server "); print_IPaddr (NfsServerIP);	printk("; our IP address is ");		    print_IPaddr (NetOurIP);	/* Check if we need to send across this subnet */	if (NetOurGatewayIP && NetOurSubnetMask) {		IPaddr_t OurNet	    = NetOurIP	  & NetOurSubnetMask;		IPaddr_t ServerNet  = NetServerIP & NetOurSubnetMask;		if (OurNet != ServerNet) {			printk("; sending through gateway ");			print_IPaddr (NetOurGatewayIP) ;		}	}	printk ("\nFilename '%s/%s'.", nfs_path, nfs_filename);	if (NetBootFileSize) {		printk (" Size is 0x%x Bytes = ", NetBootFileSize<<9);		print_size (NetBootFileSize<<9, "");	}	printk ("\nLoad address: 0x%lx\n"		"Loading: *\b", load_addr);	NetSetTimeout (NFS_TIMEOUT * CFG_HZ, NfsTimeout);	NetSetHandler (NfsHandler);	NfsTimeoutCount = 0;	NfsState = STATE_PRCLOOKUP_PROG_MOUNT_REQ;	/*NfsOurPort = 4096 + (get_ticks() % 3072);*/	/*FIX ME !!!*/	NfsOurPort = 1000;	/* zero out server ether in case the server ip has changed */	memset (NetServerEther, 0, 6);	NfsSend ();}#endif /*  CONFIG_CMD_NFS */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
视频一区二区三区中文字幕| 色婷婷综合在线| 欧美a一区二区| 亚洲精品你懂的| 国产精品天美传媒沈樵| 欧美电视剧免费全集观看| 欧美三级韩国三级日本三斤| 99久久99久久免费精品蜜臀| 国产一区二区美女诱惑| 免费观看一级特黄欧美大片| 五月综合激情婷婷六月色窝| 亚洲一区二区四区蜜桃| 日韩毛片一二三区| 国产精品区一区二区三区| 久久色成人在线| 欧美一区二区精品久久911| 欧美日韩久久久| 91国偷自产一区二区三区成为亚洲经典| 久久精品99国产国产精| 免费看黄色91| 久久91精品久久久久久秒播| 天天色综合天天| 午夜精品爽啪视频| 日韩在线一区二区| 五月天网站亚洲| 婷婷国产在线综合| 奇米精品一区二区三区在线观看| 天天综合天天做天天综合| 天天av天天翘天天综合网| 午夜精品影院在线观看| 日本va欧美va瓶| 青青草国产精品97视觉盛宴| 美女久久久精品| 九九视频精品免费| 国产精品一区二区久久精品爱涩| 午夜国产不卡在线观看视频| 免费一级片91| 狠狠久久亚洲欧美| 国产成人h网站| proumb性欧美在线观看| 日韩三级av在线播放| 亚洲精品在线一区二区| 亚洲欧洲成人av每日更新| 水野朝阳av一区二区三区| 国产精品亚洲综合一区在线观看| 91成人看片片| 久久综合狠狠综合久久综合88 | 日本久久一区二区| 欧美一区二区三区播放老司机| 国产视频一区二区在线| 亚洲v日本v欧美v久久精品| 久久91精品久久久久久秒播| 91美女在线观看| 日韩欧美三级在线| 亚洲女同一区二区| 久久精品免费观看| 欧美亚洲精品一区| 国产视频一区在线播放| 午夜久久久影院| a美女胸又www黄视频久久| 91精品国产综合久久久蜜臀粉嫩| 国产精品美女一区二区三区| 丝袜美腿亚洲一区二区图片| thepron国产精品| 精品精品国产高清一毛片一天堂| 激情小说欧美图片| 色国产精品一区在线观看| 2014亚洲片线观看视频免费| 亚洲香肠在线观看| 成人做爰69片免费看网站| 91精品国产91久久综合桃花| 亚洲人吸女人奶水| 国产精品69久久久久水密桃| 在线播放亚洲一区| 亚洲精品五月天| 成人免费看片app下载| 日韩欧美在线综合网| 夜夜操天天操亚洲| 成人毛片老司机大片| 精品久久久影院| 无吗不卡中文字幕| 在线欧美一区二区| 136国产福利精品导航| 国产电影一区二区三区| 欧美大片国产精品| 日本不卡免费在线视频| 欧美精品久久99久久在免费线| 亚洲人成小说网站色在线| 成人av午夜电影| 久久午夜电影网| 韩国三级电影一区二区| 日韩欧美在线观看一区二区三区| 亚洲国产一区二区三区青草影视| 91亚洲午夜精品久久久久久| 中文字幕免费一区| 成人免费视频一区| 国产精品短视频| aa级大片欧美| 成人免费小视频| 91免费版在线| 亚洲欧美日韩国产另类专区| 色综合久久久久网| 亚洲欧美另类久久久精品2019| 成人黄动漫网站免费app| 国产午夜精品一区二区三区视频 | 91免费视频大全| 最好看的中文字幕久久| 不卡电影免费在线播放一区| 中文av一区二区| 成人精品国产福利| 中文字幕日韩av资源站| 91亚洲精品一区二区乱码| 亚洲欧美另类综合偷拍| 在线观看中文字幕不卡| 婷婷综合另类小说色区| 日韩丝袜情趣美女图片| 久久av资源网| 国产欧美日韩在线| 成人精品国产一区二区4080| 亚洲天天做日日做天天谢日日欢| 色综合久久久久综合| 午夜亚洲福利老司机| 日韩欧美一区二区在线视频| 国产一区亚洲一区| 国产精品免费丝袜| 一本色道久久综合亚洲91| 亚洲一区二区精品久久av| 日韩欧美资源站| 国产精品一区二区你懂的| 亚洲欧美另类小说视频| 欧美丰满一区二区免费视频| 国产一区二区视频在线| 综合网在线视频| 91麻豆精品国产91久久久使用方法 | 国产一区美女在线| 国产精品久久久久久久久久免费看 | 精品视频1区2区| 久久国产夜色精品鲁鲁99| 国产亚洲制服色| 色欧美片视频在线观看| 日本午夜精品视频在线观看 | 国产精品国产三级国产aⅴ原创| 色婷婷久久一区二区三区麻豆| 日韩黄色免费网站| 国产女同互慰高潮91漫画| 日本伦理一区二区| 九色综合狠狠综合久久| 亚洲天堂a在线| 欧美一区二区免费| 不卡电影免费在线播放一区| 天天影视涩香欲综合网| 久久婷婷国产综合精品青草| 一本久道久久综合中文字幕| 久久国产婷婷国产香蕉| 亚洲欧美日韩国产另类专区| 亚洲一级二级在线| 久久色在线观看| 欧美在线三级电影| 国产米奇在线777精品观看| 亚洲综合一区在线| 久久久久国产一区二区三区四区| 91成人网在线| 国产69精品久久99不卡| 午夜不卡在线视频| 中文字幕一区二区三区不卡在线 | 国产亚洲精久久久久久| 欧美日韩一二区| 懂色av一区二区三区蜜臀 | 正在播放亚洲一区| 91网站在线播放| 国产寡妇亲子伦一区二区| 香蕉成人伊视频在线观看| 欧美国产欧美综合| 精品国产免费人成在线观看| 欧美年轻男男videosbes| 91在线码无精品| 国产一区二区三区免费| 日韩电影在线免费| 亚洲欧美日韩小说| 国产精品免费视频观看| 久久一区二区三区国产精品| 欧美男生操女生| 91黄色小视频| 91最新地址在线播放| 丁香婷婷深情五月亚洲| 国产一区二区精品在线观看| 日本va欧美va瓶| 午夜影院久久久| 亚洲激情六月丁香| 国产精品美女视频| 国产婷婷色一区二区三区在线| 欧美一区二区在线不卡| 欧美日韩高清影院| 欧美日韩五月天| 91黄视频在线| 91久久精品国产91性色tv| 9久草视频在线视频精品| 国产成人精品免费看| 粉嫩高潮美女一区二区三区| 国产精品一区二区黑丝|