您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ splnet函数代码示例

51自学网 2021-06-03 08:10:58
  C++
这篇教程C++ splnet函数代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中splnet函数的典型用法代码示例。如果您正苦于以下问题:C++ splnet函数的具体用法?C++ splnet怎么用?C++ splnet使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。

在下文中一共展示了splnet函数的23个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: rtwn_free_rx_list

voidrtwn_free_rx_list(struct rtwn_pci_softc *sc){	struct rtwn_rx_ring *rx_ring = &sc->rx_ring;	struct rtwn_rx_data *rx_data;	int i, s;	s = splnet();	if (rx_ring->map) {		if (rx_ring->desc) {			bus_dmamap_unload(sc->sc_dmat, rx_ring->map);			bus_dmamem_unmap(sc->sc_dmat, (caddr_t)rx_ring->desc,			    sizeof (struct r92c_rx_desc_pci) *			    RTWN_RX_LIST_COUNT);			bus_dmamem_free(sc->sc_dmat, &rx_ring->seg,			    rx_ring->nsegs);			rx_ring->desc = NULL;		}		bus_dmamap_destroy(sc->sc_dmat, rx_ring->map);		rx_ring->map = NULL;	}	for (i = 0; i < RTWN_RX_LIST_COUNT; i++) {		rx_data = &rx_ring->rx_data[i];		if (rx_data->m != NULL) {			bus_dmamap_unload(sc->sc_dmat, rx_data->map);			m_freem(rx_data->m);			rx_data->m = NULL;		}		bus_dmamap_destroy(sc->sc_dmat, rx_data->map);		rx_data->map = NULL;	}	splx(s);}
开发者ID:mosconi,项目名称:openbsd,代码行数:37,


示例2: ppp_clone_create

intppp_clone_create(struct if_clone *ifc, int unit){    struct ppp_softc *sc;    int s;    sc = malloc(sizeof(*sc), M_DEVBUF, M_NOWAIT|M_ZERO);    if (!sc)	return (ENOMEM);    sc->sc_unit = unit;    snprintf(sc->sc_if.if_xname, sizeof sc->sc_if.if_xname, "%s%d",	ifc->ifc_name, unit);    sc->sc_if.if_softc = sc;    sc->sc_if.if_mtu = PPP_MTU;    sc->sc_if.if_flags = IFF_POINTOPOINT | IFF_MULTICAST;    sc->sc_if.if_type = IFT_PPP;    sc->sc_if.if_hdrlen = PPP_HDRLEN;    sc->sc_if.if_ioctl = pppsioctl;    sc->sc_if.if_output = pppoutput;    sc->sc_if.if_start = ppp_ifstart;    IFQ_SET_MAXLEN(&sc->sc_if.if_snd, IFQ_MAXLEN);    mq_init(&sc->sc_inq, IFQ_MAXLEN, IPL_NET);    IFQ_SET_MAXLEN(&sc->sc_fastq, IFQ_MAXLEN);    ppp_pkt_list_init(&sc->sc_rawq, IFQ_MAXLEN);    IFQ_SET_READY(&sc->sc_if.if_snd);    if_attach(&sc->sc_if);    if_alloc_sadl(&sc->sc_if);#if NBPFILTER > 0    bpfattach(&sc->sc_bpf, &sc->sc_if, DLT_PPP, PPP_HDRLEN);#endif    s = splnet();    LIST_INSERT_HEAD(&ppp_softc_list, sc, sc_list);    splx(s);    return (0);}
开发者ID:orumin,项目名称:openbsd-efivars,代码行数:37,


示例3: bpfpoll

/* * Support for poll() system call */intbpfpoll(dev_t dev, int events, struct proc *p){    struct bpf_d *d;    int s, revents;    revents = events & (POLLIN | POLLRDNORM);    if (revents == 0)        return (0);		/* only support reading */    /*     * An imitation of the FIONREAD ioctl code.     */    d = bpfilter_lookup(minor(dev));    /*     * XXX The USB stack manages it to trigger some race condition     * which causes bpfilter_lookup to return NULL when a USB device     * gets detached while it is up and has an open bpf handler (e.g.     * dhclient).  We still should recheck if we can fix the root     * cause of this issue.     */    if (d == NULL)        return (POLLERR);    s = splnet();    if (d->bd_hlen == 0 && (!d->bd_immediate || d->bd_slen == 0)) {        revents = 0;		/* no data waiting */        /*         * if there's a timeout, mark the time we started waiting.         */        if (d->bd_rtout != -1 && d->bd_rdStart == 0)            d->bd_rdStart = ticks;        selrecord(p, &d->bd_sel);    }    splx(s);    return (revents);}
开发者ID:repos-holder,项目名称:openbsd-patches,代码行数:39,


示例4: url_ioctl

Static inturl_ioctl(struct ifnet *ifp, u_long cmd, void *data){	struct url_softc *sc = ifp->if_softc;	int s, error = 0;	DPRINTF(("%s: %s: enter/n", device_xname(sc->sc_dev), __func__));	if (sc->sc_dying)		return (EIO);	s = splnet();	error = ether_ioctl(ifp, cmd, data);	if (error == ENETRESET) {		if (ifp->if_flags & IFF_RUNNING)			url_setmulti(sc);		error = 0;	}	splx(s);	return (error);}
开发者ID:eyberg,项目名称:rumpkernel-netbsd-src,代码行数:24,


示例5: return

STATUS ifIndexToIfName     (    unsigned short	ifIndex,/* Interface index */    char *		ifName	/* Where the name is to be stored */    )    {    FAST struct ifnet *		ifp;    int				s;    if (ifName == NULL)        return (ERROR);    s = splnet ();    if ((ifp = ifIndexToIfp (ifIndex)) == NULL)        {        splx (s);        return (ERROR);        }    sprintf (ifName, "%s%d", ifp->if_name, ifp->if_unit);    splx (s);    return (OK);    }
开发者ID:andy345,项目名称:vxworks5,代码行数:24,


示例6: net_init_domain

/* * Add a new protocol domain to the list of supported domains * Note: you cant unload it again because  a socket may be using it. * XXX can't fail at this time. */static voidnet_init_domain(struct domain *dp){	register struct protosw *pr;	int	s;	s = splnet();	if (dp->dom_init)		(*dp->dom_init)();	for (pr = dp->dom_protosw; pr < dp->dom_protoswNPROTOSW; pr++){		if (pr->pr_usrreqs == 0)			panic("domaininit: %ssw[%d] has no usrreqs!",			      dp->dom_name, 			      (int)(pr - dp->dom_protosw));		if (pr->pr_init)			(*pr->pr_init)();	}	/*	 * update global informatio about maximums	 */	max_hdr = max_linkhdr + max_protohdr;	max_datalen = MHLEN - max_hdr;	splx(s);}
开发者ID:UnitedMarsupials,项目名称:kame,代码行数:29,


示例7: nsmb_dev_open

intnsmb_dev_open(dev_t dev, int oflags, int devtype, struct proc *p){	struct smb_dev *sdp;	int s;	sdp = SMB_GETDEV(dev);	if (sdp && (sdp->sd_flags & NSMBFL_OPEN))		return EBUSY;	if (sdp == NULL) {		sdp = malloc(sizeof(*sdp), M_SMBDATA, M_WAITOK);		smb_devtbl[minor(dev)] = (void*)sdp;	}#ifndef __NetBSD__	/*	 * XXX: this is just crazy - make a device for an already passed device...	 * someone should take care of it.	 */	if ((dev->si_flags & SI_NAMED) == 0)		make_dev(&nsmb_cdevsw, minor(dev), cred->cr_uid, cred->cr_gid, 0700,		    NSMB_NAME"%d", dev2unit(dev));#endif /* !__NetBSD__ */	bzero(sdp, sizeof(*sdp));/*	STAILQ_INIT(&sdp->sd_rqlist);	STAILQ_INIT(&sdp->sd_rplist);	bzero(&sdp->sd_pollinfo, sizeof(struct selinfo));*/	s = splnet();	sdp->sd_level = -1;	sdp->sd_flags |= NSMBFL_OPEN;	splx(s);	return 0;}
开发者ID:MarginC,项目名称:kame,代码行数:36,


示例8: isdntrcopen

/*---------------------------------------------------------------------------* *	open trace device *---------------------------------------------------------------------------*/PDEVSTATIC intisdntrcopen(dev_t dev, int flag, int fmt, struct proc *p){	int x;	int unit = minor(dev);	if(unit >= NISDNTRC)		return(ENXIO);	if(device_state[unit] & ST_ISOPEN)		return(EBUSY);	if(analyzemode && (unit == outunit || unit == rxunit || unit == txunit))		return(EBUSY);		x = splnet();		device_state[unit] = ST_ISOPEN;			splx(x);		return(0);}
开发者ID:MarginC,项目名称:kame,代码行数:27,


示例9: sq_ioctl

intsq_ioctl(struct ifnet *ifp, u_long cmd, void *data){	int s, error = 0;	SQ_TRACE(SQ_IOCTL, (struct sq_softc *)ifp->if_softc, 0, 0);	s = splnet();	error = ether_ioctl(ifp, cmd, data);	if (error == ENETRESET) {		/*		 * Multicast list has changed; set the hardware filter		 * accordingly.		 */		if (ifp->if_flags & IFF_RUNNING)			error = sq_init(ifp);		else			error = 0;	}	splx(s);	return error;}
开发者ID:yazshel,项目名称:netbsd-kernel,代码行数:24,


示例10: del_entry

static intdel_entry(struct ip_fw_head *chainptr, u_short number){	struct ip_fw_chain *fcp;	int s;	s = splnet();	fcp = chainptr->lh_first; 	if (number != (u_short)-1) {		for (; fcp; fcp = fcp->chain.le_next) {			if (fcp->rule->fw_number == number) {				LIST_REMOVE(fcp, chain);				splx(s);				free(fcp->rule, M_IPFW);				free(fcp, M_IPFW);				return 0;			}		}	}	splx(s);	return (EINVAL);}
开发者ID:aniwang2013,项目名称:leon-rtems,代码行数:24,


示例11: octeon_eth_tick_free

/* * octeon_eth_tick_free * * => garbage collect send gather buffer / mbuf * => called at softclock */voidocteon_eth_tick_free(void *arg){	struct octeon_eth_softc *sc = arg;	int timo;	int s;	s = splnet();	/* XXX */	if (ml_len(&sc->sc_sendq) > 0) {		octeon_eth_send_queue_flush_prefetch(sc);		octeon_eth_send_queue_flush_fetch(sc);		octeon_eth_send_queue_flush(sc);	}	/* XXX */	/* XXX ??? */	timo = hz - (100 * sc->sc_ext_callback_cnt);	if (timo < 10)		 timo = 10;	timeout_add_msec(&sc->sc_tick_free_ch, 1000 * timo / hz);	/* XXX */	splx(s);}
开发者ID:ajinkya93,项目名称:OpenBSD,代码行数:30,


示例12: natmintr

voidnatmintr(){  int s;  struct mbuf *m;  struct socket *so;  struct natmpcb *npcb;next:  s = splnet();  IF_DEQUEUE(&natmintrq, m);  splx(s);  if (m == NULL)    return;#ifdef DIAGNOSTIC  if ((m->m_flags & M_PKTHDR) == 0)    panic("natmintr no HDR");#endif  npcb = (struct natmpcb *) m->m_pkthdr.rcvif; /* XXX: overloaded */  so = npcb->npcb_socket;  s = splnet();			/* could have atm devs @ different levels */  npcb->npcb_inq--;  splx(s);  if (npcb->npcb_flags & NPCB_DRAIN) {    m_freem(m);    if (npcb->npcb_inq == 0)      free(npcb, M_PCB);			/* done! */    goto next;  }  if (npcb->npcb_flags & NPCB_FREE) {    m_freem(m);					/* drop */    goto next;  }#ifdef NEED_TO_RESTORE_IFP  m->m_pkthdr.rcvif = npcb->npcb_ifp;#else#ifdef DIAGNOSTICm->m_pkthdr.rcvif = NULL;	/* null it out to be safe */#endif#endif  if (sbspace(&so->so_rcv) > m->m_pkthdr.len ||     ((npcb->npcb_flags & NPCB_RAW) != 0 && so->so_rcv.sb_cc < NPCB_RAWCC) ) {#ifdef NATM_STAT    natm_sookcnt++;    natm_sookbytes += m->m_pkthdr.len;#endif    sbappendrecord(&so->so_rcv, m);    sorwakeup(so);  } else {#ifdef NATM_STAT    natm_sodropcnt++;    natm_sodropbytes += m->m_pkthdr.len;#endif    m_freem(m);  }  goto next;}
开发者ID:sofuture,项目名称:bitrig,代码行数:66,


示例13: add_entry

static intadd_entry(struct ip_fw_head *chainptr, struct ip_fw *frwl){	struct ip_fw *ftmp = 0;	struct ip_fw_chain *fwc = 0, *fcp, *fcpl = 0;	u_short nbr = 0;	int s;	fwc = malloc(sizeof *fwc, M_IPFW, M_DONTWAIT);	ftmp = malloc(sizeof *ftmp, M_IPFW, M_DONTWAIT);	if (!fwc || !ftmp) {		dprintf(("%s malloc said no/n", err_prefix));		if (fwc)  free(fwc, M_IPFW);		if (ftmp) free(ftmp, M_IPFW);		return (ENOSPC);	}	bcopy(frwl, ftmp, sizeof(struct ip_fw));	ftmp->fw_in_if.fu_via_if.name[FW_IFNLEN - 1] = '/0';	ftmp->fw_pcnt = 0L;	ftmp->fw_bcnt = 0L;	fwc->rule = ftmp;		s = splnet();	if (!chainptr->lh_first) {		LIST_INSERT_HEAD(chainptr, fwc, chain);		splx(s);		return(0);        } else if (ftmp->fw_number == (u_short)-1) {		if (fwc)  free(fwc, M_IPFW);		if (ftmp) free(ftmp, M_IPFW);		splx(s);		dprintf(("%s bad rule number/n", err_prefix));		return (EINVAL);        }	/* If entry number is 0, find highest numbered rule and add 100 */	if (ftmp->fw_number == 0) {		for (fcp = chainptr->lh_first; fcp; fcp = fcp->chain.le_next) {			if (fcp->rule->fw_number != (u_short)-1)				nbr = fcp->rule->fw_number;			else				break;		}		if (nbr < (u_short)-1 - 100)			nbr += 100;		ftmp->fw_number = nbr;	}	/* Got a valid number; now insert it, keeping the list ordered */	for (fcp = chainptr->lh_first; fcp; fcp = fcp->chain.le_next) {		if (fcp->rule->fw_number > ftmp->fw_number) {			if (fcpl) {				LIST_INSERT_AFTER(fcpl, fwc, chain);			} else {				LIST_INSERT_HEAD(chainptr, fwc, chain);			}			break;		} else {			fcpl = fcp;		}	}	splx(s);	return (0);}
开发者ID:aniwang2013,项目名称:leon-rtems,代码行数:67,


示例14: return

	int s;	if (m) {		if (m->m_len != sizeof(struct ip_fw))			return(EINVAL);		frwl = mtod(m, struct ip_fw *);	}	else		frwl = NULL;	/*	 *	It's possible to insert multiple chain entries with the	 *	same number, so we don't stop after finding the first	 *	match if zeroing a specific entry.	 */	s = splnet();	for (fcp = ip_fw_chain.lh_first; fcp; fcp = fcp->chain.le_next)		if (!frwl || frwl->fw_number == fcp->rule->fw_number) {			fcp->rule->fw_bcnt = fcp->rule->fw_pcnt = 0;			fcp->rule->timestamp = 0;		}	splx(s);	if (fw_verbose) {		if (frwl)			printf("ipfw: Entry %d cleared./n", frwl->fw_number);		else			printf("ipfw: Accounting cleared./n");	}	return(0);
开发者ID:aniwang2013,项目名称:leon-rtems,代码行数:31,


示例15: scope6_set

intscope6_set(struct ifnet *ifp, struct scope6_id *idlist){	int i, s;	int error = 0;	struct scope6_id *sid = SID(ifp);	if (sid == NULL)	/* paranoid? */		return (EINVAL);	/*	 * XXX: We need more consistency checks of the relationship among	 * scopes (e.g. an organization should be larger than a site).	 */	/*	 * TODO(XXX): after setting, we should reflect the changes to	 * interface addresses, routing table entries, PCB entries...	 */#if defined(__NetBSD__) || defined(__OpenBSD__)	s = splsoftnet();#else	s = splnet();#endif	for (i = 0; i < 16; i++) {		if (idlist->s6id_list[i] &&		    idlist->s6id_list[i] != sid->s6id_list[i]) {			/*			 * An interface zone ID must be the corresponding			 * interface index by definition.			 */			if (i == IPV6_ADDR_SCOPE_INTFACELOCAL &&			    idlist->s6id_list[i] != ifp->if_index) {				splx(s);				return (EINVAL);			}			if (i == IPV6_ADDR_SCOPE_LINKLOCAL) {				if (idlist->s6id_list[i] >= if_indexlim ||#ifdef __FreeBSD__				    ifnet_byindex(idlist->s6id_list[i]) == NULL#else				    ifindex2ifnet[idlist->s6id_list[i]] == NULL#endif				    ) {					/*					 * XXX: theoretically, there should be					 * no relationship between link IDs and					 * interface IDs, but we check the					 * consistency for safety in later use.					 */					splx(s);					return (EINVAL);				}			}			/*			 * XXX: we must need lots of work in this case,			 * but we simply set the new value in this initial			 * implementation.			 */			sid->s6id_list[i] = idlist->s6id_list[i];		}	}	splx(s);	return (error);}
开发者ID:MarginC,项目名称:kame,代码行数:70,


示例16: cas_init

/* * Initialization of interface; set up initialization block * and transmit/receive descriptor rings. */intcas_init(struct ifnet *ifp){	struct cas_softc *sc = (struct cas_softc *)ifp->if_softc;	bus_space_tag_t t = sc->sc_memt;	bus_space_handle_t h = sc->sc_memh;	int s;	u_int max_frame_size;	u_int32_t v;	s = splnet();	DPRINTF(sc, ("%s: cas_init: calling stop/n", sc->sc_dev.dv_xname));	/*	 * Initialization sequence. The numbered steps below correspond	 * to the sequence outlined in section 6.3.5.1 in the Ethernet	 * Channel Engine manual (part of the PCIO manual).	 * See also the STP2002-STQ document from Sun Microsystems.	 */	/* step 1 & 2. Reset the Ethernet Channel */	cas_stop(ifp, 0);	cas_reset(sc);	DPRINTF(sc, ("%s: cas_init: restarting/n", sc->sc_dev.dv_xname));	/* Re-initialize the MIF */	cas_mifinit(sc);	/* step 3. Setup data structures in host memory */	cas_meminit(sc);	/* step 4. TX MAC registers & counters */	cas_init_regs(sc);	max_frame_size = ETHER_MAX_LEN + ETHER_VLAN_ENCAP_LEN;	v = (max_frame_size) | (0x2000 << 16) /* Burst size */;	bus_space_write_4(t, h, CAS_MAC_MAC_MAX_FRAME, v);	/* step 5. RX MAC registers & counters */	cas_setladrf(sc);	/* step 6 & 7. Program Descriptor Ring Base Addresses */	KASSERT((CAS_CDTXADDR(sc, 0) & 0x1fff) == 0);	bus_space_write_4(t, h, CAS_TX_RING_PTR_HI,	    (((uint64_t)CAS_CDTXADDR(sc,0)) >> 32));	bus_space_write_4(t, h, CAS_TX_RING_PTR_LO, CAS_CDTXADDR(sc, 0));	KASSERT((CAS_CDRXADDR(sc, 0) & 0x1fff) == 0);	bus_space_write_4(t, h, CAS_RX_DRING_PTR_HI,	    (((uint64_t)CAS_CDRXADDR(sc,0)) >> 32));	bus_space_write_4(t, h, CAS_RX_DRING_PTR_LO, CAS_CDRXADDR(sc, 0));	KASSERT((CAS_CDRXCADDR(sc, 0) & 0x1fff) == 0);	bus_space_write_4(t, h, CAS_RX_CRING_PTR_HI,	    (((uint64_t)CAS_CDRXCADDR(sc,0)) >> 32));	bus_space_write_4(t, h, CAS_RX_CRING_PTR_LO, CAS_CDRXCADDR(sc, 0));	if (CAS_PLUS(sc)) {		KASSERT((CAS_CDRXADDR2(sc, 0) & 0x1fff) == 0);		bus_space_write_4(t, h, CAS_RX_DRING_PTR_HI2,		    (((uint64_t)CAS_CDRXADDR2(sc,0)) >> 32));		bus_space_write_4(t, h, CAS_RX_DRING_PTR_LO2,		    CAS_CDRXADDR2(sc, 0));	}	/* step 8. Global Configuration & Interrupt Mask */	bus_space_write_4(t, h, CAS_INTMASK,		      ~(CAS_INTR_TX_INTME|CAS_INTR_TX_EMPTY|			CAS_INTR_TX_TAG_ERR|			CAS_INTR_RX_DONE|CAS_INTR_RX_NOBUF|			CAS_INTR_RX_TAG_ERR|			CAS_INTR_RX_COMP_FULL|CAS_INTR_PCS|			CAS_INTR_MAC_CONTROL|CAS_INTR_MIF|			CAS_INTR_BERR));	bus_space_write_4(t, h, CAS_MAC_RX_MASK,	    CAS_MAC_RX_DONE|CAS_MAC_RX_FRAME_CNT);	bus_space_write_4(t, h, CAS_MAC_TX_MASK, CAS_MAC_TX_XMIT_DONE);	bus_space_write_4(t, h, CAS_MAC_CONTROL_MASK, 0); /* XXXX */	/* step 9. ETX Configuration: use mostly default values */	/* Enable DMA */	v = cas_ringsize(CAS_NTXDESC /*XXX*/) << 10;	bus_space_write_4(t, h, CAS_TX_CONFIG,	    v|CAS_TX_CONFIG_TXDMA_EN|(1<<24)|(1<<29));	bus_space_write_4(t, h, CAS_TX_KICK, 0);	/* step 10. ERX Configuration */	/* Encode Receive Descriptor ring size */	v = cas_ringsize(CAS_NRXDESC) << CAS_RX_CONFIG_RXDRNG_SZ_SHIFT;	if (CAS_PLUS(sc))		v |= cas_ringsize(32) << CAS_RX_CONFIG_RXDRNG2_SZ_SHIFT;	/* Encode Receive Completion ring size */	v |= cas_cringsize(CAS_NRXCOMP) << CAS_RX_CONFIG_RXCRNG_SZ_SHIFT;//.........这里部分代码省略.........
开发者ID:repos-holder,项目名称:openbsd-patches,代码行数:101,


示例17: cas_ioctl

/* * Process an ioctl request. */intcas_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data){	struct cas_softc *sc = ifp->if_softc;	struct ifaddr *ifa = (struct ifaddr *)data;	struct ifreq *ifr = (struct ifreq *)data;	int s, error = 0;	s = splnet();	if ((error = ether_ioctl(ifp, &sc->sc_arpcom, cmd, data)) > 0) {		splx(s);		return (error);	}	switch (cmd) {	case SIOCSIFADDR:		ifp->if_flags |= IFF_UP;		if ((ifp->if_flags & IFF_RUNNING) == 0)			cas_init(ifp);#ifdef INET		if (ifa->ifa_addr->sa_family == AF_INET)			arp_ifinit(&sc->sc_arpcom, ifa);#endif		break;	case SIOCSIFFLAGS:		if (ifp->if_flags & IFF_UP) {			if ((ifp->if_flags & IFF_RUNNING) &&			    ((ifp->if_flags ^ sc->sc_if_flags) &			     (IFF_ALLMULTI | IFF_PROMISC)) != 0)				cas_setladrf(sc);			else {				if ((ifp->if_flags & IFF_RUNNING) == 0)					cas_init(ifp);			}		} else {			if (ifp->if_flags & IFF_RUNNING)				cas_stop(ifp, 1);		}		sc->sc_if_flags = ifp->if_flags;#ifdef CAS_DEBUG		sc->sc_debug = (ifp->if_flags & IFF_DEBUG) != 0 ? 1 : 0;#endif		break;	case SIOCSIFMTU:		if (ifr->ifr_mtu > ETHERMTU || ifr->ifr_mtu < ETHERMIN) {			error = EINVAL;		} else if (ifp->if_mtu != ifr->ifr_mtu) {			ifp->if_mtu = ifr->ifr_mtu;		}		break;	case SIOCADDMULTI:	case SIOCDELMULTI:		error = (cmd == SIOCADDMULTI) ?		    ether_addmulti(ifr, &sc->sc_arpcom) :		    ether_delmulti(ifr, &sc->sc_arpcom);		if (error == ENETRESET) {			/*			 * Multicast list has changed; set the hardware filter			 * accordingly.			 */			if (ifp->if_flags & IFF_RUNNING)				cas_setladrf(sc);			error = 0;		}		break;	case SIOCGIFMEDIA:	case SIOCSIFMEDIA:		error = ifmedia_ioctl(ifp, ifr, &sc->sc_media, cmd);		break;	default:		error = ENOTTY;		break;	}	splx(s);	return (error);}
开发者ID:repos-holder,项目名称:openbsd-patches,代码行数:89,


示例18: libcfs_sock_write

//.........这里部分代码省略.........        bzero(&sopt, sizeof sopt);        sopt.sopt_dir = SOPT_GET;        sopt.sopt_level = SOL_SOCKET;        if (txbufsize != NULL) {                sopt.sopt_val = txbufsize;                sopt.sopt_valsize = sizeof(*txbufsize);                sopt.sopt_name = SO_SNDBUF;                CFS_NET_IN;                rc = sogetopt(sock, &sopt);                CFS_NET_EX;                if (rc != 0) {                        CERROR ("Can't get send buffer size: %d/n", rc);                        return -rc;                }        }        if (rxbufsize != NULL) {                sopt.sopt_val = rxbufsize;                sopt.sopt_valsize = sizeof(*rxbufsize);                sopt.sopt_name = SO_RCVBUF;                CFS_NET_IN;                rc = sogetopt(sock, &sopt);                CFS_NET_EX;                if (rc != 0) {                        CERROR ("Can't get receive buffer size: %d/n", rc);                        return -rc;                }        }        return 0;}intlibcfs_sock_connect (struct socket **sockp, int *fatal,                     __u32 local_ip, int local_port,                     __u32 peer_ip, int peer_port){        struct sockaddr_in  srvaddr;        struct socket      *so;        int                 s;        int                 rc;         CFS_DECL_FUNNEL_DATA;                rc = libcfs_sock_create(sockp, fatal, local_ip, local_port);        if (rc != 0)                return rc;        so = *sockp;        bzero(&srvaddr, sizeof(srvaddr));        srvaddr.sin_len = sizeof(struct sockaddr_in);        srvaddr.sin_family = AF_INET;        srvaddr.sin_port = htons (peer_port);        srvaddr.sin_addr.s_addr = htonl (peer_ip);        CFS_NET_IN;        rc = soconnect(so, (struct sockaddr *)&srvaddr);        if (rc != 0) {                CFS_NET_EX;                if (rc != EADDRNOTAVAIL && rc != EADDRINUSE)                        CDEBUG(D_NETERROR,                               "Error %d connecting %u.%u.%u.%u/%d -> %u.%u.%u.%u/%d/n", rc,                               HIPQUAD(local_ip), local_port, HIPQUAD(peer_ip), peer_port);                goto out;        }        s = splnet();        while ((so->so_state & SS_ISCONNECTING) && so->so_error == 0) {                CDEBUG(D_NET, "ksocknal sleep for waiting auto_connect./n");                (void) tsleep((caddr_t)&so->so_timeo, PSOCK, "ksocknal_conn", hz);        }        if ((rc = so->so_error) != 0) {                so->so_error = 0;                splx(s);                CFS_NET_EX;                CDEBUG(D_NETERROR,                       "Error %d connecting %u.%u.%u.%u/%d -> %u.%u.%u.%u/%d/n", rc,                       HIPQUAD(local_ip), local_port, HIPQUAD(peer_ip), peer_port);                goto out;        }        LASSERT(so->so_state & SS_ISCONNECTED);        splx(s);        CFS_NET_EX;        if (sockp)                *sockp = so;        return (0);out:        CFS_NET_IN;        soshutdown(so, 2);        soclose(so);        CFS_NET_EX;        return (-rc);}voidlibcfs_sock_release (struct socket *sock){        CFS_DECL_FUNNEL_DATA;        CFS_NET_IN;        soshutdown(sock, 0);        CFS_NET_EX;}
开发者ID:DCteam,项目名称:lustre,代码行数:101,


示例19: libcfs_sock_accept

intlibcfs_sock_accept (struct socket **newsockp, struct socket *sock){        struct socket *so;        struct sockaddr *sa;        int error, s;        CFS_DECL_FUNNEL_DATA;        CFS_NET_IN;        s = splnet();        if ((sock->so_options & SO_ACCEPTCONN) == 0) {                splx(s);                CFS_NET_EX;                return (-EINVAL);        }        if ((sock->so_state & SS_NBIO) && sock->so_comp.tqh_first == NULL) {                splx(s);                CFS_NET_EX;                return (-EWOULDBLOCK);        }        error = 0;        while (TAILQ_EMPTY(&sock->so_comp) && sock->so_error == 0) {                if (sock->so_state & SS_CANTRCVMORE) {                        sock->so_error = ECONNABORTED;                        break;                }                error = tsleep((caddr_t)&sock->so_timeo, PSOCK | PCATCH,                                "accept", 0);                if (error) {                        splx(s);                        CFS_NET_EX;                        return (-error);                }        }        if (sock->so_error) {                error = sock->so_error;                sock->so_error = 0;                splx(s);                CFS_NET_EX;                return (-error);        }        /*         * At this point we know that there is at least one connection         * ready to be accepted. Remove it from the queue prior to         * allocating the file descriptor for it since falloc() may         * block allowing another process to accept the connection         * instead.         */        so = TAILQ_FIRST(&sock->so_comp);        TAILQ_REMOVE(&sock->so_comp, so, so_list);        sock->so_qlen--;        so->so_state &= ~SS_COMP;        so->so_head = NULL;        sa = 0;        (void) soaccept(so, &sa);        *newsockp = so;        FREE(sa, M_SONAME);        splx(s);        CFS_NET_EX;        return (-error);}
开发者ID:DCteam,项目名称:lustre,代码行数:66,


示例20: octeon_eth_ioctl

intocteon_eth_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data){	struct octeon_eth_softc *sc = ifp->if_softc;	struct ifreq *ifr = (struct ifreq *)data;	int s, error = 0;	s = splnet();	switch (cmd) {	case SIOCSIFADDR:		ifp->if_flags |= IFF_UP;		if (!(ifp->if_flags & IFF_RUNNING))			octeon_eth_init(ifp);		break;	case SIOCSIFFLAGS:		if (ifp->if_flags & IFF_UP) {			if (ifp->if_flags & IFF_RUNNING)				error = ENETRESET;			else				octeon_eth_init(ifp);		} else {			if (ifp->if_flags & IFF_RUNNING)				octeon_eth_stop(ifp, 0);		}		break;	case SIOCSIFMEDIA:		/* Flow control requires full-duplex mode. */		if (IFM_SUBTYPE(ifr->ifr_media) == IFM_AUTO ||		    (ifr->ifr_media & IFM_FDX) == 0) {			ifr->ifr_media &= ~IFM_ETH_FMASK;		}		if (IFM_SUBTYPE(ifr->ifr_media) != IFM_AUTO) {			if ((ifr->ifr_media & IFM_ETH_FMASK) == IFM_FLOW) {				ifr->ifr_media |=				    IFM_ETH_TXPAUSE | IFM_ETH_RXPAUSE;			}			sc->sc_gmx_port->sc_port_flowflags = 				ifr->ifr_media & IFM_ETH_FMASK;		}		/* FALLTHROUGH */	case SIOCGIFMEDIA:		error = ifmedia_ioctl(ifp, ifr, &sc->sc_mii.mii_media, cmd);		break;	default:		error = ether_ioctl(ifp, &sc->sc_arpcom, cmd, data);	}	if (error == ENETRESET) {		if (ISSET(ifp->if_flags, IFF_RUNNING))			cn30xxgmx_set_filter(sc->sc_gmx_port);		error = 0;	}	octeon_eth_start(ifp);	splx(s);	return (error);}
开发者ID:ajinkya93,项目名称:OpenBSD,代码行数:62,


示例21: priq_class_create

static struct priq_class *priq_class_create(struct priq_if *pif, int pri, int qlimit, int flags, int qid){	struct priq_class *cl;	int s;#ifndef ALTQ_RED	if (flags & PRCF_RED) {#ifdef ALTQ_DEBUG		printf("priq_class_create: RED not configured for PRIQ!/n");#endif		return (NULL);	}#endif	if ((cl = pif->pif_classes[pri]) != NULL) {		/* modify the class instead of creating a new one */		s = splnet();		if (!qempty(cl->cl_q))			priq_purgeq(cl);		splx(s);#ifdef ALTQ_RIO		if (q_is_rio(cl->cl_q))			rio_destroy((rio_t *)cl->cl_red);#endif#ifdef ALTQ_RED		if (q_is_red(cl->cl_q))			red_destroy(cl->cl_red);#endif	} else {		cl = malloc(sizeof(struct priq_class), M_DEVBUF,		    M_WAITOK|M_ZERO);		if (cl == NULL)			return (NULL);		cl->cl_q = malloc(sizeof(class_queue_t), M_DEVBUF,		    M_WAITOK|M_ZERO);		if (cl->cl_q == NULL)			goto err_ret;	}	pif->pif_classes[pri] = cl;	if (flags & PRCF_DEFAULTCLASS)		pif->pif_default = cl;	if (qlimit == 0)		qlimit = 50;  /* use default */	qlimit(cl->cl_q) = qlimit;	qtype(cl->cl_q) = Q_DROPTAIL;	qlen(cl->cl_q) = 0;	cl->cl_flags = flags;	cl->cl_pri = pri;	if (pri > pif->pif_maxpri)		pif->pif_maxpri = pri;	cl->cl_pif = pif;	cl->cl_handle = qid;#ifdef ALTQ_RED	if (flags & (PRCF_RED|PRCF_RIO)) {		int red_flags, red_pkttime;		red_flags = 0;		if (flags & PRCF_ECN)			red_flags |= REDF_ECN;#ifdef ALTQ_RIO		if (flags & PRCF_CLEARDSCP)			red_flags |= RIOF_CLEARDSCP;#endif		if (pif->pif_bandwidth < 8)			red_pkttime = 1000 * 1000 * 1000; /* 1 sec */		else			red_pkttime = (int64_t)pif->pif_ifq->altq_ifp->if_mtu			  * 1000 * 1000 * 1000 / (pif->pif_bandwidth / 8);#ifdef ALTQ_RIO		if (flags & PRCF_RIO) {			cl->cl_red = (red_t *)rio_alloc(0, NULL,						red_flags, red_pkttime);			if (cl->cl_red != NULL)				qtype(cl->cl_q) = Q_RIO;		} else#endif		if (flags & PRCF_RED) {			cl->cl_red = red_alloc(0, 0,			    qlimit(cl->cl_q) * 10/100,			    qlimit(cl->cl_q) * 30/100,			    red_flags, red_pkttime);			if (cl->cl_red != NULL)				qtype(cl->cl_q) = Q_RED;		}	}#endif /* ALTQ_RED */	return (cl); err_ret:	if (cl->cl_red != NULL) {#ifdef ALTQ_RIO		if (q_is_rio(cl->cl_q))			rio_destroy((rio_t *)cl->cl_red);#endif#ifdef ALTQ_RED//.........这里部分代码省略.........
开发者ID:Tommmster,项目名称:netbsd-avr32,代码行数:101,


示例22: natm_usrreq

//.........这里部分代码省略.........      /*       * convert interface string to ifp, validate.       */      ifp = ifunit(snatm->snatm_if);      if (ifp == NULL || (ifp->if_flags & IFF_RUNNING) == 0) {	error = ENXIO;	break;      }      if (ifp->if_output != atm_output) {	error = EAFNOSUPPORT;	break;      }      /*       * register us with the NATM PCB layer       */      if (npcb_add(npcb, ifp, snatm->snatm_vci, snatm->snatm_vpi) != npcb) {        error = EADDRINUSE;        break;      }      /*       * enable rx       */      ATM_PH_FLAGS(&api.aph) = (proto == PROTO_NATMAAL5) ? ATM_PH_AAL5 : 0;      ATM_PH_VPI(&api.aph) = npcb->npcb_vpi;      ATM_PH_SETVCI(&api.aph, npcb->npcb_vci);      api.rxhand = npcb;      s2 = splnet();      if (ifp->if_ioctl == NULL || 	  ifp->if_ioctl(ifp, SIOCATMENA, (caddr_t) &api) != 0) {	splx(s2);	npcb_free(npcb, NPCB_REMOVE);        error = EIO;	break;      }      splx(s2);      soisconnected(so);      break;    case PRU_DISCONNECT:		/* disconnect from peer */      if ((npcb->npcb_flags & NPCB_CONNECTED) == 0) {        printf("natm: disconnected check/n");        error = EIO;	break;      }      ifp = npcb->npcb_ifp;      /*       * disable rx       */      ATM_PH_FLAGS(&api.aph) = ATM_PH_AAL5;      ATM_PH_VPI(&api.aph) = npcb->npcb_vpi;      ATM_PH_SETVCI(&api.aph, npcb->npcb_vci);      api.rxhand = npcb;      s2 = splnet();      if (ifp->if_ioctl != NULL)
开发者ID:sofuture,项目名称:bitrig,代码行数:67,


示例23: iavc_load

int iavc_load(capi_softc_t *capi_sc, int len, u_int8_t *cp){    iavc_softc_t *sc = (iavc_softc_t*) capi_sc->ctx;    u_int8_t val;    aprint_debug_dev(&sc->sc_dev, "reset card ..../n");    if (sc->sc_dma)	iavc_b1dma_reset(sc);	/* PCI cards */    else if (sc->sc_t1)	iavc_t1_reset(sc);		/* ISA attachment T1 */    else	iavc_b1_reset(sc);		/* ISA attachment B1 */    DELAY(1000);    aprint_debug_dev(&sc->sc_dev, "start loading %d bytes firmware/n", len);    while (len && b1io_save_put_byte(sc, *cp++) == 0)	len--;    if (len) {	aprint_error_dev(&sc->sc_dev, "loading failed, can't write to card, len = %d/n", len);	return (EIO);    }    aprint_debug_dev(&sc->sc_dev, "firmware loaded, wait for ACK/n");    if(sc->sc_capi.card_type == CARD_TYPEC_AVM_B1_ISA)	    iavc_put_byte(sc, SEND_POLL);    else	    iavc_put_byte(sc, SEND_POLLACK);    for (len = 0; len < 1000 && !iavc_rx_full(sc); len++)	DELAY(100);    if (!iavc_rx_full(sc)) {	aprint_error_dev(&sc->sc_dev, "loading failed, no ack/n");	return (EIO);    }    val = iavc_get_byte(sc);    if ((sc->sc_dma && val != RECEIVE_POLLDWORD) ||      (!sc->sc_dma && val != RECEIVE_POLL)) {	aprint_error_dev(&sc->sc_dev, "loading failed, bad ack = %02x/n", val);	return (EIO);    }    aprint_debug_dev(&sc->sc_dev, "got ACK = 0x%02x/n", val);    /* Start the DMA engine */    if (sc->sc_dma) {	int s;	s = splnet();	sc->sc_csr = AVM_FLAG;	AMCC_WRITE(sc, AMCC_INTCSR, sc->sc_csr);	AMCC_WRITE(sc, AMCC_MCSR, (EN_A2P_TRANSFERS|EN_P2A_TRANSFERS|				   A2P_HI_PRIORITY|P2A_HI_PRIORITY|				   RESET_A2P_FLAGS|RESET_P2A_FLAGS));	iavc_write_port(sc, 0x07, 0x30); /* XXX magic numbers from */	iavc_write_port(sc, 0x10, 0xf0); /* XXX the linux driver */	bus_dmamap_sync(sc->dmat, sc->rx_map, 0, sc->rx_map->dm_mapsize,	  BUS_DMASYNC_PREREAD);	sc->sc_recv1 = 0;	AMCC_WRITE(sc, AMCC_RXPTR, sc->rx_map->dm_segs[0].ds_addr);	AMCC_WRITE(sc, AMCC_RXLEN, 4);	sc->sc_csr |= EN_RX_TC_INT|EN_TX_TC_INT;	AMCC_WRITE(sc, AMCC_INTCSR, sc->sc_csr);	splx(s);    }#ifdef notyet    /* good happy place */    if(sc->sc_capi.card_type == CARD_TYPEC_AVM_B1_ISA)	b1isa_setup_irq(sc);#endif    iavc_send_init(sc);    return 0;}
开发者ID:Tommmster,项目名称:netbsd-avr32,代码行数:88,



注:本文中的splnet函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


C++ spltty函数代码示例
C++ split_string函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。