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

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

?? uipc_sock.c

?? vxwork源代碼
?? 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);    }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区久久久| 91精品国产综合久久精品图片 | 久久综合久久综合亚洲| 国产伦精品一区二区三区视频青涩 | 韩国视频一区二区| 91麻豆免费在线观看| 日韩丝袜情趣美女图片| 午夜精品影院在线观看| 91免费视频观看| 国产精品1区二区.| 国产精品二区一区二区aⅴ污介绍| 国产精品一品二品| 日韩国产精品大片| 7777精品久久久大香线蕉| 91玉足脚交白嫩脚丫在线播放| 青青草国产精品97视觉盛宴| 久久免费美女视频| 成人国产免费视频| 亚洲精品美腿丝袜| 欧美日韩国产中文| 中文字幕不卡的av| 蜜桃视频一区二区| 欧美一区二区精品| 久久精品国产**网站演员| 久久精品综合网| 99re这里都是精品| 亚洲va韩国va欧美va精品| 欧美电影免费观看高清完整版| 国产一区亚洲一区| 精品制服美女丁香| 国产精品激情偷乱一区二区∴| 欧美精品一区二区三区蜜桃视频| 成人av电影在线| 极品美女销魂一区二区三区| 久久99久久久久久久久久久| 午夜成人免费视频| 天天色图综合网| 久久狠狠亚洲综合| 日本欧美加勒比视频| 青青草伊人久久| 麻豆成人91精品二区三区| 麻豆国产欧美一区二区三区| 男女男精品视频| 亚洲综合在线五月| 亚洲精选视频免费看| 国产午夜精品一区二区 | 欧美国产日本韩| 国产拍欧美日韩视频二区| 不卡av免费在线观看| 成人免费高清在线| 日韩av网站免费在线| 日本美女一区二区三区视频| 奇米在线7777在线精品| 男女性色大片免费观看一区二区 | 青娱乐精品视频在线| 麻豆久久一区二区| 国内一区二区视频| 国产成人在线免费观看| 日韩精品亚洲一区| 国产精品热久久久久夜色精品三区| 欧美三区在线观看| 北条麻妃国产九九精品视频| 麻豆国产欧美日韩综合精品二区 | 福利一区二区在线| 一区二区中文视频| 日韩一级黄色大片| 精品国产电影一区二区| 亚洲国产精品99久久久久久久久| 国产精品二三区| 亚洲一区在线观看视频| 国产精品视频免费看| 亚洲视频中文字幕| 国产欧美一区二区三区网站| 日韩美女啊v在线免费观看| 亚洲国产成人av| 亚洲人亚洲人成电影网站色| 欧美一级日韩免费不卡| 久久久久亚洲综合| 亚洲免费在线观看视频| 免费在线观看成人| 成人app软件下载大全免费| 欧美日韩激情在线| 国产午夜亚洲精品羞羞网站| 亚洲精品亚洲人成人网| 久久99精品国产麻豆婷婷| 91视频.com| 欧美成人乱码一区二区三区| 3d成人h动漫网站入口| 欧美日韩日日骚| 精品剧情v国产在线观看在线| 色老汉av一区二区三区| 国产黄色精品视频| 在线观看免费亚洲| 欧美影视一区二区三区| 色综合天天综合在线视频| 丰满放荡岳乱妇91ww| 精品视频一区二区三区免费| 国产欧美精品区一区二区三区| 一区二区三区**美女毛片| 韩国精品一区二区| 欧美三片在线视频观看| 国产精品免费观看视频| 久久精品99国产国产精| 欧美色图激情小说| 国产精品萝li| 紧缚奴在线一区二区三区| 欧美日韩亚洲高清一区二区| 1000部国产精品成人观看| 国产一区二区电影| 91精品欧美综合在线观看最新| 亚洲丝袜精品丝袜在线| 国产乱一区二区| 欧美不卡一区二区三区四区| 亚洲成精国产精品女| 99re这里都是精品| 亚洲国产成人一区二区三区| 激情综合色播激情啊| 69久久夜色精品国产69蝌蚪网| 一区二区在线观看av| 成人成人成人在线视频| 国产精品欧美一区喷水| 亚洲成av人在线观看| 欧美视频一区在线观看| 91黄色在线观看| 国产精品丝袜在线| 国产一区二区不卡| 精品久久久久久综合日本欧美| 亚洲高清免费观看| 欧美日韩在线播放| 一区二区三区在线观看欧美 | 欧美专区亚洲专区| 亚洲精品中文在线影院| 色综合久久久久综合体桃花网| 日本丰满少妇一区二区三区| 国产精品久久看| 99在线视频精品| 成人免费视频在线观看| 99久久综合国产精品| 国产精品久久久久三级| 成人高清伦理免费影院在线观看| 久久久99精品久久| 国产成人丝袜美腿| 欧美激情综合网| 成人免费av在线| 亚洲人成影院在线观看| 在线免费观看日本欧美| 亚洲高清免费在线| 欧美久久久久免费| 亚洲欧美日韩国产另类专区| 91色九色蝌蚪| 韩国成人精品a∨在线观看| 日韩黄色免费网站| 一区二区三区日韩欧美精品 | 自拍偷拍欧美精品| 色94色欧美sute亚洲线路二 | 日韩欧美国产综合| 另类调教123区| 久久精品人人做人人综合| 成人av免费在线观看| 亚洲蜜臀av乱码久久精品| 欧美影院精品一区| 蜜臀a∨国产成人精品| 国产人成亚洲第一网站在线播放| 成人福利视频网站| 亚洲国产精品久久久男人的天堂| 7777女厕盗摄久久久| 韩国成人在线视频| 亚洲欧美一区二区三区国产精品 | 日韩欧美国产综合在线一区二区三区| 国内成人免费视频| 中文字幕一区二区三区在线观看| 欧美伊人久久久久久久久影院| 日本欧美在线观看| 国产精品视频看| 这里只有精品电影| 国产99久久久国产精品潘金网站| 亚洲精品成人a在线观看| 91精品国产乱| voyeur盗摄精品| 日韩精品一二三四| 国产精品久久免费看| 日本一区二区不卡视频| 99国内精品久久| 中文字幕一区二区三区不卡| 欧美日本乱大交xxxxx| 国产高清精品久久久久| 亚洲国产精品视频| 国产欧美一区二区三区在线看蜜臀 | 亚洲女子a中天字幕| 欧美刺激脚交jootjob| 91麻豆成人久久精品二区三区| 免费久久精品视频| 亚洲美女少妇撒尿| 久久这里只有精品6| 欧美网站一区二区| 懂色av噜噜一区二区三区av| 免费高清成人在线| 艳妇臀荡乳欲伦亚洲一区| 久久久精品人体av艺术| 日韩一区二区在线观看视频|