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

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

?? istallion.c

?? linux和2410結(jié)合開發(fā) 用他可以生成2410所需的zImage文件
?? C
?? 第 1 頁 / 共 5 頁
字號:
	printk("stli_writeroom(tty=%x)\n", (int) tty);#endif	if (tty == (struct tty_struct *) NULL)		return(0);	if (tty == stli_txcooktty) {		if (stli_txcookrealsize != 0) {			len = stli_txcookrealsize - stli_txcooksize;			return(len);		}	}	portp = tty->driver_data;	if (portp == (stliport_t *) NULL)		return(0);	if ((portp->brdnr < 0) || (portp->brdnr >= stli_nrbrds))		return(0);	brdp = stli_brds[portp->brdnr];	if (brdp == (stlibrd_t *) NULL)		return(0);	save_flags(flags);	cli();	EBRDENABLE(brdp);	rp = &((volatile cdkasy_t *) EBRDGETMEMPTR(brdp, portp->addr))->txq;	head = (unsigned int) rp->head;	tail = (unsigned int) rp->tail;	if (tail != ((unsigned int) rp->tail))		tail = (unsigned int) rp->tail;	len = (head >= tail) ? (portp->txsize - (head - tail)) : (tail - head);	len--;	EBRDDISABLE(brdp);	restore_flags(flags);	if (tty == stli_txcooktty) {		stli_txcookrealsize = len;		len -= stli_txcooksize;	}	return(len);}/*****************************************************************************//* *	Return the number of characters in the transmit buffer. Normally we *	will return the number of chars in the shared memory ring queue. *	We need to kludge around the case where the shared memory buffer is *	empty but not all characters have drained yet, for this case just *	return that there is 1 character in the buffer! */static int stli_charsinbuffer(struct tty_struct *tty){	volatile cdkasyrq_t	*rp;	stliport_t		*portp;	stlibrd_t		*brdp;	unsigned int		head, tail, len;	unsigned long		flags;#if DEBUG	printk("stli_charsinbuffer(tty=%x)\n", (int) tty);#endif	if (tty == (struct tty_struct *) NULL)		return(0);	if (tty == stli_txcooktty)		stli_flushchars(tty);	portp = tty->driver_data;	if (portp == (stliport_t *) NULL)		return(0);	if ((portp->brdnr < 0) || (portp->brdnr >= stli_nrbrds))		return(0);	brdp = stli_brds[portp->brdnr];	if (brdp == (stlibrd_t *) NULL)		return(0);	save_flags(flags);	cli();	EBRDENABLE(brdp);	rp = &((volatile cdkasy_t *) EBRDGETMEMPTR(brdp, portp->addr))->txq;	head = (unsigned int) rp->head;	tail = (unsigned int) rp->tail;	if (tail != ((unsigned int) rp->tail))		tail = (unsigned int) rp->tail;	len = (head >= tail) ? (head - tail) : (portp->txsize - (tail - head));	if ((len == 0) && test_bit(ST_TXBUSY, &portp->state))		len = 1;	EBRDDISABLE(brdp);	restore_flags(flags);	return(len);}/*****************************************************************************//* *	Generate the serial struct info. */static void stli_getserial(stliport_t *portp, struct serial_struct *sp){	struct serial_struct	sio;	stlibrd_t		*brdp;#if DEBUG	printk("stli_getserial(portp=%x,sp=%x)\n", (int) portp, (int) sp);#endif	memset(&sio, 0, sizeof(struct serial_struct));	sio.type = PORT_UNKNOWN;	sio.line = portp->portnr;	sio.irq = 0;	sio.flags = portp->flags;	sio.baud_base = portp->baud_base;	sio.close_delay = portp->close_delay;	sio.closing_wait = portp->closing_wait;	sio.custom_divisor = portp->custom_divisor;	sio.xmit_fifo_size = 0;	sio.hub6 = 0;	brdp = stli_brds[portp->brdnr];	if (brdp != (stlibrd_t *) NULL)		sio.port = brdp->iobase;			copy_to_user(sp, &sio, sizeof(struct serial_struct));}/*****************************************************************************//* *	Set port according to the serial struct info. *	At this point we do not do any auto-configure stuff, so we will *	just quietly ignore any requests to change irq, etc. */static int stli_setserial(stliport_t *portp, struct serial_struct *sp){	struct serial_struct	sio;	int			rc;#if DEBUG	printk("stli_setserial(portp=%x,sp=%x)\n", (int) portp, (int) sp);#endif	copy_from_user(&sio, sp, sizeof(struct serial_struct));	if (!capable(CAP_SYS_ADMIN)) {		if ((sio.baud_base != portp->baud_base) ||		    (sio.close_delay != portp->close_delay) ||		    ((sio.flags & ~ASYNC_USR_MASK) !=		    (portp->flags & ~ASYNC_USR_MASK)))			return(-EPERM);	} 	portp->flags = (portp->flags & ~ASYNC_USR_MASK) |		(sio.flags & ASYNC_USR_MASK);	portp->baud_base = sio.baud_base;	portp->close_delay = sio.close_delay;	portp->closing_wait = sio.closing_wait;	portp->custom_divisor = sio.custom_divisor;	if ((rc = stli_setport(portp)) < 0)		return(rc);	return(0);}/*****************************************************************************/static int stli_ioctl(struct tty_struct *tty, struct file *file, unsigned int cmd, unsigned long arg){	stliport_t	*portp;	stlibrd_t	*brdp;	unsigned long	lval;	unsigned int	ival;	int		rc;#if DEBUG	printk("stli_ioctl(tty=%x,file=%x,cmd=%x,arg=%x)\n",		(int) tty, (int) file, cmd, (int) arg);#endif	if (tty == (struct tty_struct *) NULL)		return(-ENODEV);	portp = tty->driver_data;	if (portp == (stliport_t *) NULL)		return(-ENODEV);	if ((portp->brdnr < 0) || (portp->brdnr >= stli_nrbrds))		return(0);	brdp = stli_brds[portp->brdnr];	if (brdp == (stlibrd_t *) NULL)		return(0);	if ((cmd != TIOCGSERIAL) && (cmd != TIOCSSERIAL) && 	    (cmd != COM_GETPORTSTATS) && (cmd != COM_CLRPORTSTATS)) {		if (tty->flags & (1 << TTY_IO_ERROR))			return(-EIO);	}	rc = 0;	switch (cmd) {	case TIOCGSOFTCAR:		rc = put_user(((tty->termios->c_cflag & CLOCAL) ? 1 : 0),			(unsigned int *) arg);		break;	case TIOCSSOFTCAR:		if ((rc = get_user(ival, (unsigned int *) arg)) == 0)			tty->termios->c_cflag =				(tty->termios->c_cflag & ~CLOCAL) |				(ival ? CLOCAL : 0);		break;	case TIOCMGET:		if ((rc = verify_area(VERIFY_WRITE, (void *) arg,		    sizeof(unsigned int))) == 0) {			if ((rc = stli_cmdwait(brdp, portp, A_GETSIGNALS,			    &portp->asig, sizeof(asysigs_t), 1)) < 0)				return(rc);			lval = stli_mktiocm(portp->asig.sigvalue);			put_user(lval, (unsigned int *) arg);		}		break;	case TIOCMBIS:		if ((rc = get_user(ival, (unsigned int *) arg)) == 0) {			stli_mkasysigs(&portp->asig,				((ival & TIOCM_DTR) ? 1 : -1),				((ival & TIOCM_RTS) ? 1 : -1));			rc = stli_cmdwait(brdp, portp, A_SETSIGNALS,				&portp->asig, sizeof(asysigs_t), 0);		}		break;	case TIOCMBIC:		if ((rc = get_user(ival, (unsigned int *) arg)) == 0) {			stli_mkasysigs(&portp->asig,				((ival & TIOCM_DTR) ? 0 : -1),				((ival & TIOCM_RTS) ? 0 : -1));			rc = stli_cmdwait(brdp, portp, A_SETSIGNALS,				&portp->asig, sizeof(asysigs_t), 0);		}		break;	case TIOCMSET:		if ((rc = get_user(ival, (unsigned int *) arg)) == 0) {			stli_mkasysigs(&portp->asig,				((ival & TIOCM_DTR) ? 1 : 0),				((ival & TIOCM_RTS) ? 1 : 0));			rc = stli_cmdwait(brdp, portp, A_SETSIGNALS,				&portp->asig, sizeof(asysigs_t), 0);		}		break;	case TIOCGSERIAL:		if ((rc = verify_area(VERIFY_WRITE, (void *) arg,		    sizeof(struct serial_struct))) == 0)			stli_getserial(portp, (struct serial_struct *) arg);		break;	case TIOCSSERIAL:		if ((rc = verify_area(VERIFY_READ, (void *) arg,		    sizeof(struct serial_struct))) == 0)			rc = stli_setserial(portp, (struct serial_struct *)arg);		break;	case STL_GETPFLAG:		rc = put_user(portp->pflag, (unsigned int *) arg);		break;	case STL_SETPFLAG:		if ((rc = get_user(portp->pflag, (unsigned int *) arg)) == 0)			stli_setport(portp);		break;	case COM_GETPORTSTATS:		if ((rc = verify_area(VERIFY_WRITE, (void *) arg,		    sizeof(comstats_t))) == 0)			rc = stli_getportstats(portp, (comstats_t *) arg);		break;	case COM_CLRPORTSTATS:		if ((rc = verify_area(VERIFY_WRITE, (void *) arg,		    sizeof(comstats_t))) == 0)			rc = stli_clrportstats(portp, (comstats_t *) arg);		break;	case TIOCSERCONFIG:	case TIOCSERGWILD:	case TIOCSERSWILD:	case TIOCSERGETLSR:	case TIOCSERGSTRUCT:	case TIOCSERGETMULTI:	case TIOCSERSETMULTI:	default:		rc = -ENOIOCTLCMD;		break;	}	return(rc);}/*****************************************************************************//* *	This routine assumes that we have user context and can sleep. *	Looks like it is true for the current ttys implementation..!! */static void stli_settermios(struct tty_struct *tty, struct termios *old){	stliport_t	*portp;	stlibrd_t	*brdp;	struct termios	*tiosp;	asyport_t	aport;#if DEBUG	printk("stli_settermios(tty=%x,old=%x)\n", (int) tty, (int) old);#endif	if (tty == (struct tty_struct *) NULL)		return;	portp = tty->driver_data;	if (portp == (stliport_t *) NULL)		return;	if ((portp->brdnr < 0) || (portp->brdnr >= stli_nrbrds))		return;	brdp = stli_brds[portp->brdnr];	if (brdp == (stlibrd_t *) NULL)		return;	tiosp = tty->termios;	if ((tiosp->c_cflag == old->c_cflag) &&	    (tiosp->c_iflag == old->c_iflag))		return;	stli_mkasyport(portp, &aport, tiosp);	stli_cmdwait(brdp, portp, A_SETPORT, &aport, sizeof(asyport_t), 0);	stli_mkasysigs(&portp->asig, ((tiosp->c_cflag & CBAUD) ? 1 : 0), -1);	stli_cmdwait(brdp, portp, A_SETSIGNALS, &portp->asig,		sizeof(asysigs_t), 0);	if ((old->c_cflag & CRTSCTS) && ((tiosp->c_cflag & CRTSCTS) == 0))		tty->hw_stopped = 0;	if (((old->c_cflag & CLOCAL) == 0) && (tiosp->c_cflag & CLOCAL))		wake_up_interruptible(&portp->open_wait);}/*****************************************************************************//* *	Attempt to flow control who ever is sending us data. We won't really *	do any flow control action here. We can't directly, and even if we *	wanted to we would have to send a command to the slave. The slave *	knows how to flow control, and will do so when its buffers reach its *	internal high water marks. So what we will do is set a local state *	bit that will stop us sending any RX data up from the poll routine *	(which is the place where RX data from the slave is handled). */static void stli_throttle(struct tty_struct *tty){	stliport_t	*portp;#if DEBUG	printk("stli_throttle(tty=%x)\n", (int) tty);#endif	if (tty == (struct tty_struct *) NULL)		return;	portp = tty->driver_data;	if (portp == (stliport_t *) NULL)		return;	set_bit(ST_RXSTOP, &portp->state);}/*****************************************************************************//* *	Unflow control the device sending us data... That means that all *	we have to do is clear the RXSTOP state bit. The next poll call *	will then be able to pass the RX data back up. */static void stli_unthrottle(struct tty_struct *tty){	stliport_t	*portp;#if DEBUG	printk("stli_unthrottle(tty=%x)\n", (int) tty);#endif	if (tty == (struct tty_struct *) NULL)		return;	portp = tty->driver_data;	if (portp == (stliport_t *) NULL)		return;	clear_bit(ST_RXSTOP, &portp->state);}/*****************************************************************************//* *	Stop the transmitter. Basically to do this we will just turn TX *	interrupts off. */static void stli_stop(struct tty_struct *tty){	stlibrd_t	*brdp;	stliport_t	*portp;	asyctrl_t	actrl;#if DEBUG	printk("stli_stop(tty=%x)\n", (int) tty);#endif	if (tty == (struct tty_struct *) NULL)		return;	portp = tty->driver_data;	if (portp == (stliport_t *) NULL)		return;	if ((portp->brdnr < 0) || (portp->brdnr >= stli_nrbrds))		return;	brdp = stli_brds[portp->brdnr];	if (brdp == (stlibrd_t *) NULL)		return;	memset(&actrl, 0, sizeof(asyctrl_t));	actrl.txctrl = CT_STOPFLOW;#if 0	stli_cmdwait(brdp, portp, A_PORTCTRL, &actrl, sizeof(asyctrl_t), 0);#endif}/*****************************************************************************//* *	Start the transmitter again. Just turn TX interrupts back on. */static void stli_start(struct tty_struct *tty){	stliport_t	*portp;	stlibrd_t	*brdp;	asyctrl_t	actrl;#if DEBUG	printk("stli_start(tty=%x)\n", (int) tty);#endif	if (tty == (struct tty_struct *) NULL)		return;	portp = tty->driver_data;	if (portp == (stliport_t *) NULL)		return;	if ((portp->brdnr < 0) || (portp->brdnr >= stli_nrbrds))		return;	brdp = stli_brds[portp->brdnr];	if (brdp == (stlibrd_t *) NULL)		return;	memset(&actrl, 0, sizeof(asyctrl_t));	actrl.txctrl = CT_STARTFLOW;#if 0	stli_cmdwait(brdp, portp, A_PORTCTRL, &actrl, sizeof(asyctrl_t), 0);#endif}/*****************************************************************************//* *	Scheduler called hang up routine. This is called from the scheduler, *	not direct from the driver "poll" routine. We can't call it there *	since the real local hangup code will enable/disable the board and *	other things that we can't do while handling the poll. Much easier *	to deal with it some time later (don't really care when, hangups *	aren't that time critical).

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
麻豆成人av在线| 亚洲色图19p| 91浏览器打开| 日本欧美大码aⅴ在线播放| 国产欧美日产一区| 欧美一级淫片007| 91国产福利在线| 成人黄色小视频| 国产在线日韩欧美| 日韩av电影天堂| 一卡二卡欧美日韩| 亚洲欧洲综合另类| 国产调教视频一区| 精品久久国产字幕高潮| 欧美老女人在线| 日本韩国欧美在线| 99久久精品费精品国产一区二区| 极品尤物av久久免费看| 日日夜夜精品视频天天综合网| 中文字幕亚洲电影| 欧美激情一区二区三区四区| 精品国产一区二区亚洲人成毛片 | 欧美一区二区在线观看| 91蝌蚪porny九色| 床上的激情91.| 国产成人免费9x9x人网站视频| 麻豆精品视频在线观看视频| 亚洲va天堂va国产va久| 一区二区三区国产豹纹内裤在线| 国产精品免费av| 欧美国产禁国产网站cc| 久久综合久色欧美综合狠狠| 日韩一级片在线播放| 日韩一卡二卡三卡| 日韩一区二区三区在线观看| 欧美一区二区三区在线电影| 欧美精品在线一区二区| 欧美日韩成人综合天天影院| 欧美日韩美少妇| 91 com成人网| 91麻豆精品国产91久久久| 91精品国产综合久久精品性色| 欧美日韩在线精品一区二区三区激情 | 成人小视频在线| 成人免费看视频| 99免费精品视频| 91在线国产福利| 日本韩国欧美在线| 欧美精品一二三区| 日韩免费观看高清完整版| 欧美xxxxxxxxx| 国产人久久人人人人爽| 欧美国产视频在线| 国产精品不卡在线| 国产一区二区伦理| 国产精品一区二区男女羞羞无遮挡 | 欧美日韩电影在线播放| 91精品国产综合久久蜜臀| 欧美第一区第二区| 国产精品免费人成网站| 中文字幕一区二区三区不卡在线 | 国产欧美一区二区精品性| 欧美国产日本视频| 伊人色综合久久天天| 亚洲电影你懂得| 精品一区二区三区在线播放视频| 国产综合久久久久久鬼色 | 国产精品99久久久久久久女警| 国产精品自拍av| 色综合天天做天天爱| 欧美性猛交xxxx乱大交退制版| 欧美日本视频在线| 久久精品日韩一区二区三区| 中文字幕一区二区三区四区| 亚洲午夜影视影院在线观看| 青青草精品视频| 国v精品久久久网| 欧美日精品一区视频| 精品国产亚洲在线| 亚洲乱码日产精品bd| 免费高清不卡av| 成人亚洲一区二区一| 欧美另类videos死尸| 欧美激情综合五月色丁香 | 狠狠色丁香婷综合久久| 99久久国产综合色|国产精品| 884aa四虎影成人精品一区| 久久久精品免费免费| 亚洲电影中文字幕在线观看| 国产一区二区成人久久免费影院| 色先锋资源久久综合| 欧美变态tickle挠乳网站| 亚洲黄色录像片| 国产成人在线色| 69堂精品视频| 亚洲色欲色欲www在线观看| 日韩影视精彩在线| 色系网站成人免费| 国产欧美在线观看一区| 无码av免费一区二区三区试看| 国产91在线观看| 日韩片之四级片| 一区二区三区美女视频| 国产91丝袜在线播放0| 欧美一区国产二区| 亚洲永久精品国产| 波多野结衣在线aⅴ中文字幕不卡| 日韩一区国产二区欧美三区| 亚洲成人免费视频| k8久久久一区二区三区| 久久久不卡网国产精品二区| 日本不卡高清视频| 欧美午夜宅男影院| 一区二区三区蜜桃网| 97se亚洲国产综合自在线观| 久久精品水蜜桃av综合天堂| 精品午夜久久福利影院| 日韩写真欧美这视频| 午夜在线成人av| 色婷婷久久久综合中文字幕| 国产精品美女久久福利网站| 国产在线视频不卡二| 精品国产乱码久久久久久久| 日本欧美一区二区三区| 91精品在线免费| 肉色丝袜一区二区| 欧美精品日韩精品| 午夜精品一区二区三区电影天堂 | 色播五月激情综合网| 亚洲欧美综合色| 972aa.com艺术欧美| 国产精品超碰97尤物18| 成人av网站在线| 中文字幕一区二区三区在线观看| 岛国精品在线观看| 亚洲国产精品传媒在线观看| 国产宾馆实践打屁股91| 国产精品三级在线观看| av不卡在线播放| 亚洲三级小视频| 91国偷自产一区二区三区成为亚洲经典 | 一二三四区精品视频| 91国产福利在线| 午夜久久久影院| 欧美精品日日鲁夜夜添| 男女男精品视频| 精品久久久久久久久久久久包黑料| 久久66热re国产| 日本一区二区免费在线观看视频| 福利一区二区在线| 综合久久综合久久| 欧美在线一区二区三区| 日韩精品一级中文字幕精品视频免费观看 | 韩国成人福利片在线播放| 久久久久久一级片| 99久久99精品久久久久久| 亚洲一区二区三区四区在线观看| 在线观看成人小视频| 日韩在线一区二区| 久久中文娱乐网| 97精品国产露脸对白| 午夜欧美大尺度福利影院在线看 | 亚洲精品你懂的| 6080日韩午夜伦伦午夜伦| 久久国产生活片100| 国产欧美精品一区aⅴ影院| 色综合中文字幕国产| 亚洲午夜在线电影| 精品福利一区二区三区免费视频| 国产v综合v亚洲欧| 亚洲午夜精品网| 精品免费99久久| 日本黄色一区二区| 蜜桃久久精品一区二区| 中文字幕高清一区| 欧美色图在线观看| 国产一区二区精品久久| 玉足女爽爽91| 精品国产1区2区3区| 色婷婷亚洲一区二区三区| 久久精品国产秦先生| 成人欧美一区二区三区小说 | 国产人妖乱国产精品人妖| 91国偷自产一区二区开放时间| 久久91精品国产91久久小草| 亚洲女女做受ⅹxx高潮| 精品欧美乱码久久久久久| 不卡一区二区在线| 麻豆国产一区二区| 亚洲特黄一级片| 久久久久国产精品麻豆| 欧美猛男gaygay网站| 国产高清无密码一区二区三区| 亚洲妇女屁股眼交7| 国产精品全国免费观看高清| 日韩欧美国产麻豆| 欧美三级三级三级| jlzzjlzz欧美大全| 国产资源在线一区| 日韩高清一区在线|