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

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

?? atari_bionet.c

?? linux和2410結合開發 用他可以生成2410所需的zImage文件
?? C
?? 第 1 頁 / 共 2 頁
字號:
	i = get_status(station_addr);	/* Read the station address PROM.  */	ENABLE_IRQ();	stdma_release();	/* Check the first three octets of the S.A. for the manufactor's code.	 */	if( i < 0	||  station_addr[0] != 'B'	||  station_addr[1] != 'I'	||  station_addr[2] != 'O' ) {		no_more_found = 1;		printk( "No BioNet 100 found.\n" );		return -ENODEV;	}	SET_MODULE_OWNER(dev);	if (bionet_debug > 0 && version_printed++ == 0)		printk(version);	printk("%s: %s found, eth-addr: %02x-%02x-%02x:%02x-%02x-%02x.\n",		dev->name, "BioNet 100",		station_addr[0], station_addr[1], station_addr[2],		station_addr[3], station_addr[4], station_addr[5]);	/* Initialize the device structure. */	nic_packet = (struct nic_pkt_s *)acsi_buffer;	phys_nic_packet = (unsigned char *)phys_acsi_buffer;	if (bionet_debug > 0) {		printk("nic_packet at 0x%p, phys at 0x%p\n",			nic_packet, phys_nic_packet );	}	if (dev->priv == NULL)		dev->priv = kmalloc(sizeof(struct net_local), GFP_KERNEL);	if (!dev->priv)		return -ENOMEM;	memset(dev->priv, 0, sizeof(struct net_local));	dev->open		= bionet_open;	dev->stop		= bionet_close;	dev->hard_start_xmit	= bionet_send_packet;	dev->get_stats		= net_get_stats;	/* Fill in the fields of the device structure with ethernet-generic	 * values. This should be in a common file instead of per-driver.	 */	for (i = 0; i < ETH_ALEN; i++) {#if 0		dev->broadcast[i] = 0xff;#endif		dev->dev_addr[i]  = station_addr[i];	}	ether_setup(dev);	return 0;}/* Open/initialize the board.  This is called (in the current kernel)   sometime after booting when the 'ifconfig' program is run.   This routine should set everything up anew at each open, even   registers that "should" only need to be set once at boot, so that   there is non-reboot way to recover if something goes wrong. */static intbionet_open(struct net_device *dev) {	struct net_local *lp = (struct net_local *)dev->priv;	if (bionet_debug > 0)		printk("bionet_open\n");	stdma_lock(bionet_intr, NULL);	/* Reset the hardware here.	 */	set_status(4);	lp->open_time = 0;	/*jiffies*/	lp->poll_time = MAX_POLL_TIME;	dev->tbusy = 0;	dev->interrupt = 0;	dev->start = 1;	stdma_release();	bionet_timer.data = (long)dev;	bionet_timer.expires = jiffies + lp->poll_time;	add_timer(&bionet_timer);	return 0;}static intbionet_send_packet(struct sk_buff *skb, struct net_device *dev) {	struct net_local *lp = (struct net_local *)dev->priv;	unsigned long flags;	/* Block a timer-based transmit from overlapping.  This could better be	 * done with atomic_swap(1, dev->tbusy), but set_bit() works as well.	 */	save_flags(flags);	cli();	if (stdma_islocked()) {		restore_flags(flags);		lp->stats.tx_errors++;	}	else {		int length = ETH_ZLEN < skb->len ? skb->len : ETH_ZLEN;		unsigned long buf = virt_to_phys(skb->data);		int stat;		stdma_lock(bionet_intr, NULL);		restore_flags(flags);		if( !STRAM_ADDR(buf+length-1) ) {			memcpy(nic_packet->buffer, skb->data, length);			buf = (unsigned long)&((struct nic_pkt_s *)phys_nic_packet)->buffer;		}		if (bionet_debug >1) {			u_char *data = nic_packet->buffer, *p;			int i;						printk( "%s: TX pkt type 0x%4x from ", dev->name,				  ((u_short *)data)[6]);			for( p = &data[6], i = 0; i < 6; i++ )				printk("%02x%s", *p++,i != 5 ? ":" : "" );			printk(" to ");			for( p = data, i = 0; i < 6; i++ )				printk("%02x%s", *p++,i != 5 ? ":" : "" "\n" );			printk( "%s: ", dev->name );			printk(" data %02x%02x %02x%02x%02x%02x %02x%02x%02x%02x %02x%02x%02x%02x %02x%02x%02x%02x"			       " %02x%02x%02x%02x len %d\n",				  data[12], data[13], data[14], data[15], data[16], data[17], data[18], data[19],				  data[20], data[21], data[22], data[23], data[24], data[25], data[26], data[27],				  data[28], data[29], data[30], data[31], data[32], data[33],				  length );		}		dma_cache_maintenance(buf, length, 1);		stat = hardware_send_packet(buf, length);		ENABLE_IRQ();		stdma_release();		dev->trans_start = jiffies;		dev->tbusy	 = 0;		lp->stats.tx_packets++;		lp->stats.tx_bytes+=length;	}	dev_kfree_skb(skb);	return 0;}/* We have a good packet(s), get it/them out of the buffers. */static voidbionet_poll_rx(struct net_device *dev) {	struct net_local *lp = (struct net_local *)dev->priv;	int boguscount = 10;	int pkt_len, status;	unsigned long flags;	save_flags(flags);	cli();	/* ++roman: Take care at locking the ST-DMA... This must be done with ints	 * off, since otherwise an int could slip in between the question and the	 * locking itself, and then we'd go to sleep... And locking itself is	 * necessary to keep the floppy_change timer from working with ST-DMA	 * registers. */	if (stdma_islocked()) {		restore_flags(flags);		return;	}	stdma_lock(bionet_intr, NULL);	DISABLE_IRQ();	restore_flags(flags);	if( lp->poll_time < MAX_POLL_TIME ) lp->poll_time++;	while(boguscount--) {		status = get_frame((unsigned long)phys_nic_packet, 0);		if( status == 0 ) break;		/* Good packet... */		dma_cache_maintenance((unsigned long)phys_nic_packet, 1520, 0);		pkt_len = (nic_packet->l_hi << 8) | nic_packet->l_lo;		lp->poll_time = bionet_min_poll_time;    /* fast poll */		if( pkt_len >= 60 && pkt_len <= 1520 ) {					/*	^^^^ war 1514  KHL */			/* Malloc up new buffer.			 */			struct sk_buff *skb = dev_alloc_skb( pkt_len + 2 );			if (skb == NULL) {				printk("%s: Memory squeeze, dropping packet.\n",					dev->name);				lp->stats.rx_dropped++;				break;			}			skb->dev = dev;			skb_reserve( skb, 2 );		/* 16 Byte align  */			skb_put( skb, pkt_len );	/* make room */			/* 'skb->data' points to the start of sk_buff data area.			 */			memcpy(skb->data, nic_packet->buffer, pkt_len);			skb->protocol = eth_type_trans( skb, dev ); 			netif_rx(skb);			dev->last_rx = jiffies;			lp->stats.rx_packets++;			lp->stats.rx_bytes+=pkt_len;	/* If any worth-while packets have been received, dev_rint()	   has done a mark_bh(INET_BH) for us and will work on them	   when we get to the bottom-half routine.	 */ 			if (bionet_debug >1) { 				u_char *data = nic_packet->buffer, *p; 				int i; 				 				printk( "%s: RX pkt type 0x%4x from ", dev->name, 					  ((u_short *)data)[6]); 					  				 				for( p = &data[6], i = 0; i < 6; i++ ) 					printk("%02x%s", *p++,i != 5 ? ":" : "" ); 				printk(" to "); 				for( p = data, i = 0; i < 6; i++ ) 					printk("%02x%s", *p++,i != 5 ? ":" : "" "\n" );  				printk( "%s: ", dev->name ); 				printk(" data %02x%02x %02x%02x%02x%02x %02x%02x%02x%02x %02x%02x%02x%02x %02x%02x%02x%02x" 				       " %02x%02x%02x%02x len %d\n", 					  data[12], data[13], data[14], data[15], data[16], data[17], data[18], data[19], 					  data[20], data[21], data[22], data[23], data[24], data[25], data[26], data[27], 					  data[28], data[29], data[30], data[31], data[32], data[33], 						  pkt_len ); 			} 		} 		else { 			printk(" Packet has wrong length: %04d bytes\n", pkt_len); 			lp->stats.rx_errors++; 		} 	}	stdma_release();	ENABLE_IRQ();	return;}/* bionet_tick: called by bionet_timer. Reads packets from the adapter, * passes them to the higher layers and restarts the timer. */static voidbionet_tick(unsigned long data) {	struct net_device	 *dev = (struct net_device *)data;	struct net_local *lp = (struct net_local *)dev->priv;	if( bionet_debug > 0 && (lp->open_time++ & 7) == 8 )		printk("bionet_tick: %ld\n", lp->open_time);	if( !stdma_islocked() ) bionet_poll_rx(dev);	bionet_timer.expires = jiffies + lp->poll_time;	add_timer(&bionet_timer);}/* The inverse routine to bionet_open(). */static intbionet_close(struct net_device *dev) {	struct net_local *lp = (struct net_local *)dev->priv;	if (bionet_debug > 0)		printk("bionet_close, open_time=%ld\n", lp->open_time);	del_timer(&bionet_timer);	stdma_lock(bionet_intr, NULL);	set_status(0);	lp->open_time = 0;	dev->tbusy = 1;	dev->start = 0;	stdma_release();	return 0;}/* Get the current statistics.   This may be called with the card open or closed. */static struct net_device_stats *net_get_stats(struct net_device *dev) {	struct net_local *lp = (struct net_local *)dev->priv;	return &lp->stats;}#ifdef MODULEstatic struct net_device bio_dev;intinit_module(void) {	int err;	bio_dev.init = bionet_probe;	if ((err = register_netdev(&bio_dev))) {		if (err == -EEXIST)  {			printk("BIONET: devices already present. Module not loaded.\n");		}		return err;	}	return 0;}voidcleanup_module(void) {	unregister_netdev(&bio_dev);}#endif /* MODULE *//* Local variables: *  compile-command: "gcc -D__KERNEL__ -I/usr/src/linux/include	-b m68k-linuxaout -Wall -Wstrict-prototypes -O2	-fomit-frame-pointer -pipe -DMODULE -I../../net/inet -c bionet.c" *  version-control: t *  kept-new-versions: 5 *  tab-width: 8 * End: */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品一区二区日韩| 欧美日韩精品一区二区天天拍小说| av一区二区三区四区| 欧美精品v国产精品v日韩精品| 国产午夜精品福利| 三级成人在线视频| 色又黄又爽网站www久久| 久久久久国产成人精品亚洲午夜 | 亚洲二区在线视频| 国产91清纯白嫩初高中在线观看| 色999日韩国产欧美一区二区| 久久嫩草精品久久久精品| 亚洲成人av中文| 91丨九色丨蝌蚪丨老版| 久久精品一区四区| 捆绑紧缚一区二区三区视频| 欧美三级电影网站| 亚洲国产精品一区二区久久恐怖片 | 日韩专区欧美专区| 在线免费不卡电影| 亚洲狼人国产精品| 色综合久久久久综合| 日本一区二区三区国色天香| 韩国三级电影一区二区| 日韩免费高清av| 亚洲国产sm捆绑调教视频| 日本国产一区二区| 亚洲精品中文字幕乱码三区| av中文字幕在线不卡| 中文字幕在线观看不卡| 成人免费观看av| 国产精品你懂的在线欣赏| 成人一区在线观看| 国产午夜精品福利| 成人黄色小视频| 国产精品美女久久久久av爽李琼 | 久久美女高清视频| 国产精品99久久久久| 久久久91精品国产一区二区精品| 国产呦萝稀缺另类资源| 国产色综合久久| 成人污视频在线观看| 中文字幕日韩av资源站| 日本韩国欧美一区二区三区| 亚洲一区二区三区四区在线观看 | 日韩一区二区在线观看视频 | 亚洲国产成人va在线观看天堂| 欧美三级三级三级| 免费不卡在线观看| 久久久久九九视频| 色婷婷综合激情| 亚洲成人av资源| 精品国产免费视频| 99re在线视频这里只有精品| 一区二区三区在线影院| 欧美一区二区三级| 国产+成+人+亚洲欧洲自线| 中文字幕一区二区三区视频| 欧美日韩一区高清| 极品少妇xxxx精品少妇| 国产精品久久久久久久岛一牛影视 | 奇米四色…亚洲| 久久亚洲影视婷婷| 91麻豆精品视频| 裸体一区二区三区| 中文字幕 久热精品 视频在线| 在线观看亚洲a| 精品无人区卡一卡二卡三乱码免费卡| 国产精品欧美一级免费| 欧美日韩国产首页| 成熟亚洲日本毛茸茸凸凹| 亚洲一区二区三区视频在线| 精品国产三级电影在线观看| 91色综合久久久久婷婷| 久久se精品一区精品二区| 老司机精品视频一区二区三区| 久久久国产精品麻豆| 色综合视频在线观看| 韩国av一区二区三区四区| 亚洲成a人片在线观看中文| 国产亚洲综合av| 777奇米四色成人影色区| 成人中文字幕电影| 久久国产尿小便嘘嘘尿| 一级精品视频在线观看宜春院| 久久伊人中文字幕| 欧美精品一二三区| 色视频欧美一区二区三区| 久久精品国产99国产| 亚洲一区二区三区中文字幕在线| 国产午夜亚洲精品理论片色戒| 91精品国产综合久久香蕉的特点 | 免费的成人av| 亚洲妇熟xx妇色黄| 亚洲欧美日韩一区二区| 久久久久9999亚洲精品| 日韩三级电影网址| 欧美精品黑人性xxxx| 欧美在线播放高清精品| 91色视频在线| 99久久精品免费精品国产| 国产成人精品综合在线观看| 久久精品国产99| 天堂资源在线中文精品| 亚洲国产视频直播| 亚洲黄色录像片| 亚洲欧洲av一区二区三区久久| 久久精品一区二区三区不卡| 精品国产伦一区二区三区观看体验 | 91免费版在线| 福利一区二区在线| 国产成人日日夜夜| 国产成人午夜视频| 国产大陆亚洲精品国产| 3atv在线一区二区三区| 欧美高清性hdvideosex| 制服丝袜中文字幕一区| 欧美一区二区在线视频| 欧美一区二区精美| 欧美精品一区二区三区蜜桃视频 | 在线观看不卡一区| 欧美调教femdomvk| 欧美日韩黄色一区二区| 91精品国产全国免费观看| 91精品国产综合久久蜜臀| 欧美精品99久久久**| 欧美一区二区日韩一区二区| 日韩一区二区三区免费观看| 精品sm在线观看| 中文天堂在线一区| 一个色妞综合视频在线观看| 日日骚欧美日韩| 激情伊人五月天久久综合| 国产成人免费xxxxxxxx| 99re这里都是精品| 欧美日本高清视频在线观看| 日韩欧美久久久| 国产三级精品视频| 亚洲美女少妇撒尿| 日韩精品电影一区亚洲| 国产乱码精品一区二区三区五月婷| 国产精品一区免费视频| 色综合天天天天做夜夜夜夜做| 欧美亚洲动漫另类| 精品99999| 亚洲美女淫视频| 美国欧美日韩国产在线播放| 成人免费毛片嘿嘿连载视频| 日本电影欧美片| 精品免费日韩av| 亚洲欧美日韩国产手机在线 | 国产电影精品久久禁18| 91成人在线免费观看| xf在线a精品一区二区视频网站| 国产精品视频九色porn| 丝袜美腿亚洲色图| 成人黄色电影在线 | 国产亚洲一二三区| 亚洲国产精品影院| 国产1区2区3区精品美女| 欧美日韩国产综合一区二区三区 | 亚洲一区视频在线观看视频| 久久精品国产**网站演员| 99re在线精品| 久久人人超碰精品| 肉丝袜脚交视频一区二区| 成人av网站在线观看免费| 欧美一区中文字幕| 一区二区三区高清不卡| 国产成人精品aa毛片| 欧美一激情一区二区三区| 亚洲另类一区二区| 国产成人一区在线| 欧美成人三级电影在线| 亚洲国产日韩一区二区| 波多野结衣一区二区三区| 精品国产伦一区二区三区观看方式| 亚洲观看高清完整版在线观看| 成人午夜碰碰视频| 亚洲 欧美综合在线网络| 成人激情小说网站| 久久综合丝袜日本网| 日本视频在线一区| 欧美三级视频在线| 亚洲在线一区二区三区| 99国产精品一区| 国产精品久久久久aaaa樱花| 国产一区二区三区久久久| 日韩欧美一区在线观看| 日韩激情一二三区| 欧美高清视频不卡网| 亚洲午夜精品17c| 91国内精品野花午夜精品| 亚洲女人小视频在线观看| av日韩在线网站| 国产精品不卡一区二区三区| 成人精品视频一区二区三区尤物| 久久这里只有精品首页| 国产一区二区福利视频| 国产午夜亚洲精品不卡|