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

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

?? uipc_sock.c

?? vxworks的完整的源代碼
?? C
?? 第 1 頁 / 共 3 頁
字號:
				*controlp = m_copy(m, 0, m->m_len);			m = m->m_next;		} else {			sbfree(&so->so_rcv, m);			if (controlp) {				if (pr->pr_domain->dom_externalize &&				    mtod(m, struct cmsghdr *)->cmsg_type ==				    SCM_RIGHTS)				   error = (*pr->pr_domain->dom_externalize)(m);				*controlp = m;				so->so_rcv.sb_mb = m->m_next;				m->m_next = 0;				m = so->so_rcv.sb_mb;			} else {				so->so_rcv.sb_mb = m_free(m);				m = so->so_rcv.sb_mb;			}		}		if (controlp) {			orig_resid = 0;			controlp = &(*controlp)->m_next;		}	}	if (m) {		if ((flags & MSG_PEEK) == 0)			m->m_nextpkt = nextrecord;		type = m->m_type;		if (type == MT_OOBDATA)			flags |= MSG_OOB;	}	moff = 0;	offset = 0;	while (m && uio->uio_resid > 0 && error == 0) {		if (m->m_type == MT_OOBDATA) {			if (type != MT_OOBDATA)				break;		} else if (type == MT_OOBDATA)			break;#ifdef DIAGNOSTIC		else if (m->m_type != MT_DATA && m->m_type != MT_HEADER)			panic("receive 3");#endif		so->so_state &= ~SS_RCVATMARK;		len = uio->uio_resid;		if (so->so_oobmark && len > so->so_oobmark - offset)			len = so->so_oobmark - offset;		if (len > m->m_len - moff)			len = m->m_len - moff;		/*		 * If mp is set, just pass back the mbufs.		 * Otherwise copy them out via the uio, then free.		 * Sockbuf must be consistent here (points to current mbuf,		 * it points to next record) when we drop priority;		 * we must note any additions to the sockbuf when we		 * block interrupts again.		 */		if (mp == 0) {			error = uiomove(mtod(m, caddr_t) + moff, (int)len, uio);		} else			uio->uio_resid -= len;		if (len == m->m_len - moff) {			if (m->m_flags & M_EOR)				flags |= MSG_EOR;			if (flags & MSG_PEEK) {				m = m->m_next;				moff = 0;			} else {				nextrecord = m->m_nextpkt;				sbfree(&so->so_rcv, m);				if (mp) {					*mp = m;					mp = &m->m_next;					so->so_rcv.sb_mb = m = m->m_next;					*mp = (struct mbuf *)0;				} else {					so->so_rcv.sb_mb = m_free(m);					m = so->so_rcv.sb_mb;				}				if (m)					m->m_nextpkt = nextrecord;			}		} else {			if (flags & MSG_PEEK)				moff += len;			else {				if (mp)                                    {				    *mp = m_copym(m, 0, len, M_WAIT);                                    if (*mp == NULL)                                        {                                        error = ENOBUFS;                                        goto release;                                        }                                    }				m->m_data += len;				m->m_len -= len;				so->so_rcv.sb_cc -= len;			}		}		if (so->so_oobmark) {			if ((flags & MSG_PEEK) == 0) {				so->so_oobmark -= len;				if (so->so_oobmark == 0) {					so->so_state |= SS_RCVATMARK;					break;				}			} else {				offset += len;				if (offset == so->so_oobmark)					break;			}		}		if (flags & MSG_EOR)			break;		/*		 * If the MSG_WAITALL flag is set (for non-atomic socket),		 * we must not quit until "uio->uio_resid == 0" or an error		 * termination.  If a signal/timeout occurs, return		 * with a short count but without error.		 * Keep sockbuf locked against other readers.		 */		while (flags & MSG_WAITALL && m == 0 && uio->uio_resid > 0 &&		    !sosendallatonce(so) && !nextrecord) {			if (so->so_error || so->so_state & SS_CANTRCVMORE)				break;			sbwait(&so->so_rcv);			if ((m = so->so_rcv.sb_mb))				nextrecord = m->m_nextpkt;		}	}	if (m && pr->pr_flags & PR_ATOMIC) {		flags |= MSG_TRUNC;		if ((flags & MSG_PEEK) == 0)			(void) sbdroprecord(&so->so_rcv);	}	if ((flags & MSG_PEEK) == 0) {		if (m == 0)			so->so_rcv.sb_mb = nextrecord;		if (pr->pr_flags & PR_WANTRCVD && so->so_pcb)			(*pr->pr_usrreq)(so, PRU_RCVD, (struct mbuf *)0,			    (struct mbuf *)(long)flags, (struct mbuf *)0,			    (struct mbuf *)0);	}	if (orig_resid == uio->uio_resid && orig_resid &&	    (flags & MSG_EOR) == 0 && (so->so_state & SS_CANTRCVMORE) == 0) {		goto restart;	}			if (flagsp)		*flagsp |= flags;release:	splx(s);	if (error != 0)            {#ifdef WV_INSTRUMENTATION#ifdef INCLUDE_WVNET    /* WV_NET_CRITICAL event */            WV_NET_EVENT_2 (NET_CORE_EVENT, WV_NET_CRITICAL, 35, 5,                            WV_NETEVENT_SORECV_FAIL, WV_NET_RECV,                            so->so_fd, error)#endif  /* INCLUDE_WVNET */#endif	    netErrnoSet (error);            }#ifdef WV_INSTRUMENTATION#ifdef INCLUDE_WVNET    /* WV_NET_VERBOSE event */        else            {            WV_NET_EVENT_1 (NET_CORE_EVENT, WV_NET_VERBOSE, 55, 21,                            WV_NETEVENT_SORECV_FINISH, WV_NET_RECV, so->so_fd)            }#endif  /* INCLUDE_WVNET */#endif	return (error);}intsoshutdown(so, how)	register struct socket *so;	register int how;{	register struct protosw *pr = so->so_proto;#ifdef WV_INSTRUMENTATION#ifdef INCLUDE_WVNET    /* WV_NET_VERBOSE event */    WV_NET_MARKER_2 (NET_AUX_EVENT, WV_NET_VERBOSE, 56, 22,                     WV_NETEVENT_SOSHUTDOWN_START, so->so_fd, how)#endif  /* INCLUDE_WVNET */#endif	how++;	if (how & 1)		/* <=> FREAD of BSD44 */		sorflush(so);		if (how & 2)		/* <=> FWRITE of BSD44 */		return ((*pr->pr_usrreq)(so, PRU_SHUTDOWN,		    (struct mbuf *)0, (struct mbuf *)0, (struct mbuf *)0));	return (0);}voidsorflush(so)	register struct socket *so;{	register struct sockbuf *sb = &so->so_rcv;	register struct protosw *pr = so->so_proto;	register int s;	struct sockbuf asb;	sb->sb_flags |= SB_NOINTR;	s = splimp();	socantrcvmore(so);	asb = *sb;        if (sb->sb_Sem)            {	    semDelete (sb->sb_Sem);            sb->sb_Sem = NULL;            }	bzero((caddr_t)sb, sizeof (*sb));	splx(s);	if (pr->pr_flags & PR_RIGHTS && pr->pr_domain->dom_dispose)		(*pr->pr_domain->dom_dispose)(asb.sb_mb);	sbrelease(&asb);}intsosetopt(so, level, optname, m0)	register struct socket *so;	int level, optname;	struct mbuf *m0;{	int error = 0;	register struct mbuf *m = m0;	if (level != SOL_SOCKET) {		if (so->so_proto && so->so_proto->pr_ctloutput)			return ((*so->so_proto->pr_ctloutput)				  (PRCO_SETOPT, so, level, optname, &m0));		error = ENOPROTOOPT;	} else {		switch (optname) {		case SO_LINGER:			if (m == NULL || m->m_len != sizeof (struct linger)) {				error = EINVAL;				goto bad;			}			so->so_linger = mtod(m, struct linger *)->l_linger;			/* fall thru... */		case SO_DEBUG:		case SO_KEEPALIVE:		case SO_DONTROUTE:		case SO_USELOOPBACK:		case SO_BROADCAST:		case SO_REUSEADDR:		case SO_REUSEPORT:		case SO_OOBINLINE:                case SO_USEPATHMTU:			if (m == NULL || m->m_len < sizeof (int)) {				error = EINVAL;				goto bad;			}			if (*mtod(m, int *))				so->so_options |= optname;			else				so->so_options &= ~optname;			break;		case SO_SNDBUF:		case SO_RCVBUF:		case SO_SNDLOWAT:		case SO_RCVLOWAT:			if (m == NULL || m->m_len < sizeof (int)) {				error = EINVAL;				goto bad;			}			switch (optname) {			case SO_SNDBUF:			case SO_RCVBUF:				if (sbreserve(optname == SO_SNDBUF ?				    &so->so_snd : &so->so_rcv,				    (u_long) *mtod(m, int *)) == 0) {					error = ENOBUFS;					goto bad;				}				break;			case SO_SNDLOWAT:				so->so_snd.sb_lowat = *mtod(m, int *);				break;			case SO_RCVLOWAT:				so->so_rcv.sb_lowat = *mtod(m, int *);				break;			}			break;		case SO_SNDTIMEO:		case SO_RCVTIMEO:		    {			switch (optname) {			case SO_SNDTIMEO:				so->so_snd.sb_timeo = *mtod(m, int *);				break;			case SO_RCVTIMEO:				so->so_rcv.sb_timeo = *mtod(m, int *);				break;			}			break;		    }#ifdef VIRTUAL_STACK                case SO_VSID:                    so->vsid = *mtod(m, int *);                    break;#endif /* VIRTUAL_STACK */		default:			error = ENOPROTOOPT;			break;		}		if (error == 0 && so->so_proto && so->so_proto->pr_ctloutput) {			(void) ((*so->so_proto->pr_ctloutput)				  (PRCO_SETOPT, so, level, optname, &m0));			m = NULL;	/* freed by protocol */		}	}bad:	if (m)		(void) m_free(m);	return (error);}intsogetopt(so, level, optname, mp)	register struct socket *so;	int level, optname;	struct mbuf **mp;{	register struct mbuf *m;	if (level != SOL_SOCKET) {		if (so->so_proto && so->so_proto->pr_ctloutput) {			return ((*so->so_proto->pr_ctloutput)				  (PRCO_GETOPT, so, level, optname, mp));		} else			return (ENOPROTOOPT);	} else {		m = mBufClGet(M_WAIT, MT_SOOPTS, CL_SIZE_128, TRUE);                if (m == (struct mbuf *) NULL)                    return (ENOBUFS);		m->m_len = sizeof (int);		switch (optname) {		case SO_LINGER:			m->m_len = sizeof (struct linger);			mtod(m, struct linger *)->l_onoff =				so->so_options & SO_LINGER;			mtod(m, struct linger *)->l_linger = so->so_linger;			break;		case SO_USELOOPBACK:		case SO_DONTROUTE:		case SO_DEBUG:		case SO_KEEPALIVE:		case SO_REUSEADDR:		case SO_REUSEPORT:		case SO_BROADCAST:		case SO_OOBINLINE:			*mtod(m, int *) = so->so_options & optname;			break;		case SO_TYPE:			*mtod(m, int *) = so->so_type;			break;		case SO_ERROR:			*mtod(m, int *) = so->so_error;			so->so_error = 0;			break;		case SO_SNDBUF:			*mtod(m, int *) = so->so_snd.sb_hiwat;			break;		case SO_RCVBUF:			*mtod(m, int *) = so->so_rcv.sb_hiwat;			break;		case SO_SNDLOWAT:			*mtod(m, int *) = so->so_snd.sb_lowat;			break;		case SO_RCVLOWAT:			*mtod(m, int *) = so->so_rcv.sb_lowat;			break;		case SO_SNDTIMEO:		case SO_RCVTIMEO:		        *mtod(m, int *) = (optname == SO_SNDTIMEO ?			     so->so_snd.sb_timeo : so->so_rcv.sb_timeo);			break;#ifdef VIRTUAL_STACK                case SO_VSID:                        *mtod(m, int *) = so->vsid;                        break;#endif /* VIRTUAL_STACK */		default:			(void)m_free(m);			return (ENOPROTOOPT);		}		*mp = m;		return (0);	}}voidsohasoutofband(so)	register struct socket *so;{#ifdef UNIXBSD44	/* support for out of band data later on */			/* 			   This can be done by maintaining a taskId in the			   in the socket structure and posting a SIGURG to			   the task which would invoke the signal handler			   for SIGURG if that signal is registered properly			   The taskId should be created in the socket structure			   at the time of the creation of the socket.			   */	struct proc *p;	if (so->so_pgid < 0)		gsignal(-so->so_pgid, SIGURG);	else if (so->so_pgid > 0 && (p = pfind(so->so_pgid)) != 0)		psignal(p, SIGURG);	selwakeup(&so->so_rcv.sb_sel);#endif /* UNIXBSD44 */}int uiomove(cp, n, uio)    register caddr_t cp;    register int n;    register struct uio *uio;    {    register struct iovec *iov;    u_int cnt;    int error = 0;#ifdef DIAGNOSTIC    if (uio->uio_rw != UIO_READ && uio->uio_rw != UIO_WRITE)	panic("uiomove: mode");    if (uio->uio_segflg == UIO_USERSPACE && uio->uio_procp != curproc)	panic("uiomove proc");#endif    while (n > 0 && uio->uio_resid) 	{	iov = uio->uio_iov;	cnt = iov->iov_len;	if (cnt == 0)	    {	    uio->uio_iov++;	    uio->uio_iovcnt--;	    continue;	    }	if (cnt > n)	    cnt = n;	if (uio->uio_rw == UIO_READ)	    bcopy((caddr_t)cp, iov->iov_base, cnt);	else	    bcopy(iov->iov_base, (caddr_t)cp, cnt);	iov->iov_base += cnt;	iov->iov_len -= cnt;	uio->uio_resid -= cnt;	uio->uio_offset += cnt;	cp += cnt;	n -= cnt;	}    return (error);    }

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美精品一二三| 精品一区免费av| 国产婷婷精品av在线| 国产欧美一区二区精品婷婷| 亚洲.国产.中文慕字在线| 91免费看`日韩一区二区| 国产精品久久午夜夜伦鲁鲁| 激情综合色综合久久综合| 欧美一区二区三区日韩视频| 水蜜桃久久夜色精品一区的特点| 91久久精品一区二区三| 亚洲日本在线天堂| 成人蜜臀av电影| 成人欧美一区二区三区黑人麻豆| 成人午夜电影久久影院| 欧美国产精品一区二区三区| 成人黄色777网| 亚洲高清三级视频| 337p粉嫩大胆色噜噜噜噜亚洲 | 欧美大度的电影原声| 国产一区二区三区在线观看精品 | 中文字幕不卡一区| 欧美亚洲综合一区| 日韩av午夜在线观看| 国产日韩欧美亚洲| 欧洲精品在线观看| 国产精品一区二区无线| 亚洲自拍偷拍欧美| www日韩大片| 欧美私模裸体表演在线观看| 久久精品二区亚洲w码| 亚洲精品国产高清久久伦理二区| 91精品在线一区二区| 成人免费av网站| 久久国产福利国产秒拍| 亚洲素人一区二区| 日韩精品一区在线| 亚洲成a人在线观看| 欧美一级精品大片| 欧美日韩三级一区二区| 成人三级伦理片| 激情五月婷婷综合| 日本不卡一二三| 婷婷激情综合网| 亚洲久草在线视频| 日韩色视频在线观看| 色婷婷综合久久久中文字幕| 成人av免费在线播放| 免费观看一级欧美片| 亚洲国产欧美另类丝袜| 一区二区三区在线观看视频| 中文字幕日韩精品一区| 亚洲国产精品t66y| 欧美激情一区二区三区在线| 欧美成人性战久久| 久久亚洲影视婷婷| 久久色成人在线| 日本一区二区免费在线观看视频 | 国产精品美女久久久久高潮 | 色哦色哦哦色天天综合| 在线观看www91| 91免费观看国产| 岛国一区二区三区| 色综合夜色一区| 欧美色电影在线| 日韩小视频在线观看专区| 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 欧美系列亚洲系列| 欧美亚洲尤物久久| 日韩三级.com| 国产精品久久影院| 蜜臀va亚洲va欧美va天堂| 国产精品一区二区免费不卡 | 911精品国产一区二区在线| 精品一二三四区| 亚洲狠狠丁香婷婷综合久久久| 成人欧美一区二区三区在线播放| 一区二区三区精品在线| 精品一区二区三区影院在线午夜| 国产成人精品免费| 欧美电影在线免费观看| 国产精品色哟哟网站| 蜜臀av性久久久久蜜臀aⅴ流畅 | 国产一区二区三区电影在线观看 | 欧美日本乱大交xxxxx| 久久九九99视频| 美女精品一区二区| 欧美日韩精品三区| 日韩免费高清电影| 亚洲福中文字幕伊人影院| 国产精品自拍三区| 日韩一二三区不卡| 亚洲国产欧美在线| 欧美视频完全免费看| 亚洲精品一区二区三区香蕉| 亚洲欧洲精品天堂一级| 国产成人精品免费在线| 欧美成人bangbros| 久久精品国产99久久6| 在线不卡欧美精品一区二区三区| 一区二区高清免费观看影视大全| 国产suv精品一区二区6| 精品不卡在线视频| 国产一区二区福利| 国产女人aaa级久久久级| 成人免费看的视频| 国产精品久久久久久一区二区三区| 国产在线视频一区二区三区| 精品国产乱码久久久久久影片| 欧美aⅴ一区二区三区视频| 日韩视频一区在线观看| 国产成人免费视频一区| 国产日产欧产精品推荐色| 亚洲综合精品自拍| 欧美精品三级日韩久久| 麻豆精品一区二区三区| 久久久亚洲午夜电影| 成人一级片网址| 午夜私人影院久久久久| 精品国产一区久久| 色综合天天综合在线视频| 夜夜揉揉日日人人青青一国产精品| 欧美久久免费观看| 国产麻豆视频一区二区| 亚洲一区在线观看视频| 欧美大片日本大片免费观看| 波多野结衣一区二区三区| 亚洲国产一区二区三区青草影视| 精品粉嫩aⅴ一区二区三区四区| eeuss鲁一区二区三区| 激情综合网最新| 亚洲成人动漫av| 成人免费在线播放视频| 久久久久久亚洲综合| 91蜜桃免费观看视频| 国产一区二区三区最好精华液| 亚洲女人的天堂| 中文字幕永久在线不卡| 日韩一区二区免费高清| 欧美日韩亚洲高清一区二区| 成人毛片在线观看| 久久av资源站| 国产美女av一区二区三区| 青青草精品视频| 日韩影院免费视频| 亚洲大片在线观看| 亚洲超碰97人人做人人爱| 亚洲激情第一区| 亚洲人成在线播放网站岛国| 国产精品久久久久天堂| 最新成人av在线| 夜夜爽夜夜爽精品视频| 亚洲在线中文字幕| 青青青伊人色综合久久| 日韩成人免费看| 国模无码大尺度一区二区三区| 久久国产精品99久久久久久老狼| 蜜臀va亚洲va欧美va天堂 | 国产精品久线观看视频| 亚洲人成亚洲人成在线观看图片| 久久男人中文字幕资源站| 欧美女孩性生活视频| 欧美日精品一区视频| 欧美日韩一区二区不卡| 日韩一区二区免费高清| 久久久久久亚洲综合影院红桃| 国产精品沙发午睡系列990531| 亚洲视频狠狠干| 日本亚洲视频在线| 成人av综合一区| 51午夜精品国产| 综合亚洲深深色噜噜狠狠网站| 五月开心婷婷久久| 成人黄色小视频| 日韩欧美不卡在线观看视频| 亚洲激情一二三区| 午夜精品视频一区| 粉嫩绯色av一区二区在线观看| 欧美少妇一区二区| 亚洲国产精品成人综合色在线婷婷| 亚洲精品v日韩精品| 国产福利一区在线| 欧美一区二区在线视频| 一二三区精品福利视频| 国产大陆a不卡| 久久久久久日产精品| 美女一区二区久久| 欧美色视频一区| 一区二区三区四区不卡在线| 国产成人精品一区二区三区网站观看| 欧美日韩国产综合视频在线观看| 亚洲男人的天堂av| 97久久超碰精品国产| 国产欧美一区二区精品性色超碰 | 亚洲网友自拍偷拍| 色综合中文字幕国产| 亚洲日本韩国一区| 99久久国产综合精品麻豆| 国产精品乱人伦中文| 菠萝蜜视频在线观看一区|