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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? synclink.c

?? linux和2410結(jié)合開(kāi)發(fā) 用他可以生成2410所需的zImage文件
?? C
?? 第 1 頁(yè) / 共 5 頁(yè)
字號(hào):
		if ( UscVector )			(*UscIsrTable[UscVector])(info);		else if ( (DmaVector&(BIT10|BIT9)) == BIT10)			mgsl_isr_transmit_dma(info);		else			mgsl_isr_receive_dma(info);		if ( info->isr_overflow ) {			printk(KERN_ERR"%s(%d):%s isr overflow irq=%d\n",				__FILE__,__LINE__,info->device_name, irq);			usc_DisableMasterIrqBit(info);			usc_DisableDmaInterrupts(info,DICR_MASTER);			break;		}	}		/* Request bottom half processing if there's something 	 * for it to do and the bh is not already running	 */	if ( info->pending_bh && !info->bh_running && !info->bh_requested ) {		if ( debug_level >= DEBUG_LEVEL_ISR )				printk("%s(%d):%s queueing bh task.\n",				__FILE__,__LINE__,info->device_name);		queue_task(&info->task, &tq_immediate);		mark_bh(IMMEDIATE_BH);		info->bh_requested = 1;	}	spin_unlock(&info->irq_spinlock);		if ( debug_level >= DEBUG_LEVEL_ISR )			printk("%s(%d):mgsl_interrupt(%d)exit.\n",			__FILE__,__LINE__,irq);}	/* end of mgsl_interrupt() *//* startup() *  * 	Initialize and start device. * 	 * Arguments:		info	pointer to device instance data * Return Value:	0 if success, otherwise error code */static int startup(struct mgsl_struct * info){	int retval = 0;		if ( debug_level >= DEBUG_LEVEL_INFO )		printk("%s(%d):mgsl_startup(%s)\n",__FILE__,__LINE__,info->device_name);			if (info->flags & ASYNC_INITIALIZED)		return 0;		if (!info->xmit_buf) {		/* allocate a page of memory for a transmit buffer */		info->xmit_buf = (unsigned char *)get_free_page(GFP_KERNEL);		if (!info->xmit_buf) {			printk(KERN_ERR"%s(%d):%s can't allocate transmit buffer\n",				__FILE__,__LINE__,info->device_name);			return -ENOMEM;		}	}	info->pending_bh = 0;		init_timer(&info->tx_timer);	info->tx_timer.data = (unsigned long)info;	info->tx_timer.function = mgsl_tx_timeout;		/* Allocate and claim adapter resources */	retval = mgsl_claim_resources(info);		/* perform existance check and diagnostics */	if ( !retval )		retval = mgsl_adapter_test(info);			if ( retval ) {  		if (capable(CAP_SYS_ADMIN) && info->tty)			set_bit(TTY_IO_ERROR, &info->tty->flags);		mgsl_release_resources(info);  		return retval;  	}	/* program hardware for current parameters */	mgsl_change_params(info);		if (info->tty)		clear_bit(TTY_IO_ERROR, &info->tty->flags);	info->flags |= ASYNC_INITIALIZED;		return 0;	}	/* end of startup() *//* shutdown() * * Called by mgsl_close() and mgsl_hangup() to shutdown hardware * * Arguments:		info	pointer to device instance data * Return Value:	None */static void shutdown(struct mgsl_struct * info){	unsigned long flags;		if (!(info->flags & ASYNC_INITIALIZED))		return;	if (debug_level >= DEBUG_LEVEL_INFO)		printk("%s(%d):mgsl_shutdown(%s)\n",			 __FILE__,__LINE__, info->device_name );	/* clear status wait queue because status changes */	/* can't happen after shutting down the hardware */	wake_up_interruptible(&info->status_event_wait_q);	wake_up_interruptible(&info->event_wait_q);	del_timer(&info->tx_timer);		if (info->xmit_buf) {		free_page((unsigned long) info->xmit_buf);		info->xmit_buf = 0;	}	spin_lock_irqsave(&info->irq_spinlock,flags);	usc_DisableMasterIrqBit(info);	usc_stop_receiver(info);	usc_stop_transmitter(info);	usc_DisableInterrupts(info,RECEIVE_DATA + RECEIVE_STATUS +		TRANSMIT_DATA + TRANSMIT_STATUS + IO_PIN + MISC );	usc_DisableDmaInterrupts(info,DICR_MASTER + DICR_TRANSMIT + DICR_RECEIVE);		/* Disable DMAEN (Port 7, Bit 14) */	/* This disconnects the DMA request signal from the ISA bus */	/* on the ISA adapter. This has no effect for the PCI adapter */	usc_OutReg(info, PCR, (u16)((usc_InReg(info, PCR) | BIT15) | BIT14));		/* Disable INTEN (Port 6, Bit12) */	/* This disconnects the IRQ request signal to the ISA bus */	/* on the ISA adapter. This has no effect for the PCI adapter */	usc_OutReg(info, PCR, (u16)((usc_InReg(info, PCR) | BIT13) | BIT12));	 	if (!info->tty || info->tty->termios->c_cflag & HUPCL) { 		info->serial_signals &= ~(SerialSignal_DTR + SerialSignal_RTS);		usc_set_serial_signals(info);	}		spin_unlock_irqrestore(&info->irq_spinlock,flags);	mgsl_release_resources(info);			if (info->tty)		set_bit(TTY_IO_ERROR, &info->tty->flags);	info->flags &= ~ASYNC_INITIALIZED;	}	/* end of shutdown() */static void mgsl_program_hw(struct mgsl_struct *info){	unsigned long flags;	spin_lock_irqsave(&info->irq_spinlock,flags);		usc_stop_receiver(info);	usc_stop_transmitter(info);	info->xmit_cnt = info->xmit_head = info->xmit_tail = 0;		if (info->params.mode == MGSL_MODE_HDLC ||	    info->params.mode == MGSL_MODE_RAW ||	    info->netcount)		usc_set_sync_mode(info);	else		usc_set_async_mode(info);			usc_set_serial_signals(info);		info->dcd_chkcount = 0;	info->cts_chkcount = 0;	info->ri_chkcount = 0;	info->dsr_chkcount = 0;	usc_EnableStatusIrqs(info,SICR_CTS+SICR_DSR+SICR_DCD+SICR_RI);			usc_EnableInterrupts(info, IO_PIN);	usc_get_serial_signals(info);			if (info->netcount || info->tty->termios->c_cflag & CREAD)		usc_start_receiver(info);			spin_unlock_irqrestore(&info->irq_spinlock,flags);}/* Reconfigure adapter based on new parameters */static void mgsl_change_params(struct mgsl_struct *info){	unsigned cflag;	int bits_per_char;	if (!info->tty || !info->tty->termios)		return;			if (debug_level >= DEBUG_LEVEL_INFO)		printk("%s(%d):mgsl_change_params(%s)\n",			 __FILE__,__LINE__, info->device_name );			 	cflag = info->tty->termios->c_cflag;	/* if B0 rate (hangup) specified then negate DTR and RTS */	/* otherwise assert DTR and RTS */ 	if (cflag & CBAUD)		info->serial_signals |= SerialSignal_RTS + SerialSignal_DTR;	else		info->serial_signals &= ~(SerialSignal_RTS + SerialSignal_DTR);		/* byte size and parity */		switch (cflag & CSIZE) {	      case CS5: info->params.data_bits = 5; break;	      case CS6: info->params.data_bits = 6; break;	      case CS7: info->params.data_bits = 7; break;	      case CS8: info->params.data_bits = 8; break;	      /* Never happens, but GCC is too dumb to figure it out */	      default:  info->params.data_bits = 7; break;	      }	      	if (cflag & CSTOPB)		info->params.stop_bits = 2;	else		info->params.stop_bits = 1;	info->params.parity = ASYNC_PARITY_NONE;	if (cflag & PARENB) {		if (cflag & PARODD)			info->params.parity = ASYNC_PARITY_ODD;		else			info->params.parity = ASYNC_PARITY_EVEN;#ifdef CMSPAR		if (cflag & CMSPAR)			info->params.parity = ASYNC_PARITY_SPACE;#endif	}	/* calculate number of jiffies to transmit a full	 * FIFO (32 bytes) at specified data rate	 */	bits_per_char = info->params.data_bits + 			info->params.stop_bits + 1;	/* if port data rate is set to 460800 or less then	 * allow tty settings to override, otherwise keep the	 * current data rate.	 */	if (info->params.data_rate <= 460800)		info->params.data_rate = tty_get_baud_rate(info->tty);		if ( info->params.data_rate ) {		info->timeout = (32*HZ*bits_per_char) / 				info->params.data_rate;	}	info->timeout += HZ/50;		/* Add .02 seconds of slop */	if (cflag & CRTSCTS)		info->flags |= ASYNC_CTS_FLOW;	else		info->flags &= ~ASYNC_CTS_FLOW;			if (cflag & CLOCAL)		info->flags &= ~ASYNC_CHECK_CD;	else		info->flags |= ASYNC_CHECK_CD;	/* process tty input control flags */		info->read_status_mask = RXSTATUS_OVERRUN;	if (I_INPCK(info->tty))		info->read_status_mask |= RXSTATUS_PARITY_ERROR | RXSTATUS_FRAMING_ERROR; 	if (I_BRKINT(info->tty) || I_PARMRK(info->tty)) 		info->read_status_mask |= RXSTATUS_BREAK_RECEIVED;		if (I_IGNPAR(info->tty))		info->ignore_status_mask |= RXSTATUS_PARITY_ERROR | RXSTATUS_FRAMING_ERROR;	if (I_IGNBRK(info->tty)) {		info->ignore_status_mask |= RXSTATUS_BREAK_RECEIVED;		/* If ignoring parity and break indicators, ignore 		 * overruns too.  (For real raw support).		 */		if (I_IGNPAR(info->tty))			info->ignore_status_mask |= RXSTATUS_OVERRUN;	}	mgsl_program_hw(info);}	/* end of mgsl_change_params() *//* mgsl_put_char() *  * 	Add a character to the transmit buffer. * 	 * Arguments:		tty	pointer to tty information structure * 			ch	character to add to transmit buffer * 		 * Return Value:	None */static void mgsl_put_char(struct tty_struct *tty, unsigned char ch){	struct mgsl_struct *info = (struct mgsl_struct *)tty->driver_data;	unsigned long flags;	if ( debug_level >= DEBUG_LEVEL_INFO ) {		printk( "%s(%d):mgsl_put_char(%d) on %s\n",			__FILE__,__LINE__,ch,info->device_name);	}				if (mgsl_paranoia_check(info, tty->device, "mgsl_put_char"))		return;	if (!tty || !info->xmit_buf)		return;	spin_lock_irqsave(&info->irq_spinlock,flags);		if ( (info->params.mode == MGSL_MODE_ASYNC ) || !info->tx_active ) {			if (info->xmit_cnt < SERIAL_XMIT_SIZE - 1) {			info->xmit_buf[info->xmit_head++] = ch;			info->xmit_head &= SERIAL_XMIT_SIZE-1;			info->xmit_cnt++;		}	}		spin_unlock_irqrestore(&info->irq_spinlock,flags);	}	/* end of mgsl_put_char() *//* mgsl_flush_chars() *  * 	Enable transmitter so remaining characters in the * 	transmit buffer are sent. * 	 * Arguments:		tty	pointer to tty information structure * Return Value:	None */static void mgsl_flush_chars(struct tty_struct *tty){	struct mgsl_struct *info = (struct mgsl_struct *)tty->driver_data;	unsigned long flags;					if ( debug_level >= DEBUG_LEVEL_INFO )		printk( "%s(%d):mgsl_flush_chars() entry on %s xmit_cnt=%d\n",			__FILE__,__LINE__,info->device_name,info->xmit_cnt);		if (mgsl_paranoia_check(info, tty->device, "mgsl_flush_chars"))		return;	if (info->xmit_cnt <= 0 || tty->stopped || tty->hw_stopped ||	    !info->xmit_buf)		return;	if ( debug_level >= DEBUG_LEVEL_INFO )		printk( "%s(%d):mgsl_flush_chars() entry on %s starting transmitter\n",			__FILE__,__LINE__,info->device_name );	spin_lock_irqsave(&info->irq_spinlock,flags);		if (!info->tx_active) {		if ( (info->params.mode == MGSL_MODE_HDLC ||			info->params.mode == MGSL_MODE_RAW) && info->xmit_cnt ) {			/* operating in synchronous (frame oriented) mode */			/* copy data from circular xmit_buf to */			/* transmit DMA buffer. */			mgsl_load_tx_dma_buffer(info,				 info->xmit_buf,info->xmit_cnt);		}	 	usc_start_transmitter(info);	}		spin_unlock_irqrestore(&info->irq_spinlock,flags);	}	/* end of mgsl_flush_chars() *//* mgsl_write() *  * 	Send a block of data * 	 * Arguments: *  * 	tty		pointer to tty information structure * 	from_user	flag: 1 = from user process * 	buf		pointer to buffer containing send data * 	count		size of send data in bytes * 	 * Return Value:	number of characters written */static int mgsl_write(struct tty_struct * tty, int from_user,		    const unsigned char *buf, int count){	int	c, ret = 0, err;	struct mgsl_struct *info = (struct mgsl_struct *)tty->driver_data;	unsigned long flags;		if ( debug_level >= DEBUG_LEVEL_INFO )		printk( "%s(%d):mgsl_write(%s) count=%d\n",			__FILE__,__LINE__,info->device_name,count);		if (mgsl_paranoia_check(info, tty->device, "mgsl_write"))		goto cleanup;	if (!tty || !info->xmit_buf || !tmp_buf)		goto cleanup;	if ( info->params.mode == MGSL_MODE_HDLC ||			info->params.mode == MGSL_MODE_RAW ) {		/* operating in synchronous (frame oriented) mode */		/* operating in synchronous (frame oriented) mode */		if (info->tx_active) {			if ( info->params.mode == MGSL_MODE_HDLC ) {				ret = 0;				goto cleanup;			}			/* transmitter is actively sending data -			 * if we have multiple transmit dma and			 * holding buffers, attempt to queue this			 * frame for transmission at a later time.			 */			if (info->tx_holding_count >= info->num_tx_holding_buffers ) {				/* no tx holding buffers available */				ret = 0

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品麻豆久久久| 精品一区二区三区的国产在线播放| 久久久精品人体av艺术| 精品sm在线观看| 精品国产乱码久久久久久图片| 欧美一区2区视频在线观看| 欧美精品色综合| 欧美日本在线一区| 91精品国产综合久久精品| 欧美人妖巨大在线| 欧美一二三四区在线| 日韩精品一区二区三区swag| 久久影院视频免费| 久久久精品免费免费| 中文无字幕一区二区三区| 中文文精品字幕一区二区| 国产精品久久久久久久浪潮网站| 亚洲色图制服丝袜| 一区二区三区四区中文字幕| 亚洲午夜久久久| 乱中年女人伦av一区二区| 精彩视频一区二区三区| 国产ts人妖一区二区| 91丨porny丨首页| 欧美区一区二区三区| 日韩欧美在线观看一区二区三区| 久久―日本道色综合久久| 国产精品麻豆网站| 亚洲chinese男男1069| 久久精品免费看| 成人伦理片在线| 欧美自拍偷拍午夜视频| 日韩欧美成人一区二区| 国产精品久久久久久久久免费相片| 亚洲黄色小视频| 青青草精品视频| 成人福利电影精品一区二区在线观看| 91丨porny丨最新| 日韩一级黄色大片| 国产精品久久久久久亚洲伦| 香蕉久久一区二区不卡无毒影院| 国产一区二区三区久久悠悠色av| 99精品视频中文字幕| 91精品国产综合久久小美女| 国产欧美日韩卡一| 亚洲综合色在线| 国产一区二区三区黄视频| 色综合天天天天做夜夜夜夜做| 91精品久久久久久久久99蜜臂| 亚洲国产成人在线| 日韩不卡一区二区三区| www.亚洲色图| 精品少妇一区二区| 夜夜精品浪潮av一区二区三区| 精品一区二区三区不卡| 欧美自拍偷拍一区| 国产欧美日韩精品一区| 天天影视色香欲综合网老头| 99视频国产精品| 精品国产乱码久久久久久图片| 亚洲伊人色欲综合网| 国产精品亚洲午夜一区二区三区 | 久久99久久精品欧美| 99这里都是精品| xnxx国产精品| 日韩精品视频网| 色婷婷久久99综合精品jk白丝| 久久久精品人体av艺术| 日本欧美一区二区| 日本韩国精品在线| 欧美激情一区二区在线| 日韩av一区二区三区四区| 91一区二区在线| 国产性天天综合网| 麻豆极品一区二区三区| 欧美精品乱码久久久久久| 国产精品不卡视频| 国产呦萝稀缺另类资源| 91精品国产91久久久久久一区二区 | 五月婷婷激情综合| 91社区在线播放| 欧美国产精品一区| 黑人精品欧美一区二区蜜桃 | 久久九九久精品国产免费直播| 日本vs亚洲vs韩国一区三区二区| 91久久一区二区| 亚洲天堂精品在线观看| 成人18视频在线播放| 久久九九国产精品| 国内精品久久久久影院一蜜桃| 欧美女孩性生活视频| 亚洲美女屁股眼交| 91理论电影在线观看| 中文字幕中文字幕中文字幕亚洲无线| 激情都市一区二区| 精品国产污污免费网站入口 | 国产成人av一区二区| 精品国产凹凸成av人导航| 蜜桃av一区二区| 日韩欧美中文字幕精品| 六月丁香婷婷色狠狠久久| 日韩欧美亚洲国产另类| 久久国产精品72免费观看| 欧美va天堂va视频va在线| 麻豆91精品视频| 欧美精品一区二区三区视频| 久久国产尿小便嘘嘘| 2021国产精品久久精品| 国产成人在线观看| 国产精品乱人伦一区二区| av电影天堂一区二区在线观看| 中文字幕一区二区三区色视频| 成人av动漫网站| 亚洲日本欧美天堂| 欧美三级中文字| 蜜桃视频一区二区三区| 久久久高清一区二区三区| 国产91精品欧美| 亚洲色欲色欲www| 欧洲一区二区三区在线| 免费成人在线观看视频| 久久精品视频在线看| 99久久久国产精品免费蜜臀| 亚洲精品中文在线影院| 欧美一区二区三区影视| 极品销魂美女一区二区三区| 国产欧美一区二区精品性色超碰 | 欧洲一区二区三区在线| 日韩国产精品久久久久久亚洲| 日韩欧美一二三四区| 国产精品88888| 亚洲精品视频在线观看免费 | 亚洲人精品午夜| 欧美久久久久久久久| 国产综合色精品一区二区三区| 国产拍欧美日韩视频二区| 色素色在线综合| 免费一级欧美片在线观看| 欧美国产日韩亚洲一区| 色88888久久久久久影院野外| 日韩精品免费视频人成| 久久久久久久久一| 色一情一伦一子一伦一区| 日韩在线a电影| 国产精品成人一区二区艾草 | 日韩欧美国产wwwww| 成人午夜视频福利| 午夜婷婷国产麻豆精品| 精品国产不卡一区二区三区| 91蜜桃在线观看| 久久99精品网久久| 亚洲毛片av在线| 久久香蕉国产线看观看99| 一本一道久久a久久精品综合蜜臀| 天天综合色天天| 一区精品在线播放| 日韩免费性生活视频播放| 91在线免费视频观看| 美女mm1313爽爽久久久蜜臀| 亚洲天天做日日做天天谢日日欢| 欧美一区二区久久久| 色猫猫国产区一区二在线视频| 精品写真视频在线观看| 亚洲国产欧美在线| 亚洲国产激情av| 精品1区2区在线观看| 一本色道久久加勒比精品| 国内精品国产成人| 天堂影院一区二区| 亚洲特黄一级片| 久久这里只有精品视频网| 在线播放日韩导航| 欧洲另类一二三四区| 成人高清免费在线播放| 国内外成人在线| 午夜精品成人在线| 亚洲伦理在线免费看| 久久精品视频免费| 欧美v亚洲v综合ⅴ国产v| 欧美日韩久久一区二区| 99精品欧美一区二区三区小说| 国产一区欧美一区| 秋霞电影一区二区| 亚洲电影视频在线| 亚洲色图视频网| 国产欧美日韩精品一区| 久久亚洲影视婷婷| 欧美一级日韩免费不卡| 欧美日韩国产高清一区二区三区 | 亚洲色欲色欲www| 欧美激情综合五月色丁香 | 日韩经典中文字幕一区| 一区二区国产视频| 亚洲女性喷水在线观看一区| 亚洲欧洲日产国码二区| 国产精品美女一区二区| 国产日产欧美一区二区三区| 国产欧美精品一区二区色综合朱莉 | 欧美一卡二卡三卡四卡| 91精品国产综合久久婷婷香蕉|