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

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

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

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

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

示例1: _rtl_usb_rx_process_agg

//.........这里部分代码省略.........    case -ENOENT:    case -ECONNRESET:    case -ENODEV:    case -ESHUTDOWN:        goto free;    default:        break;    }resubmit:    usb_anchor_urb(_urb, &rtlusb->rx_submitted);    err = usb_submit_urb(_urb, GFP_ATOMIC);    if (unlikely(err)) {        usb_unanchor_urb(_urb);        goto free;    }    return;free:    /* On some architectures, usb_free_coherent must not be called from     * hardirq context. Queue urb to cleanup list.     */    usb_anchor_urb(_urb, &rtlusb->rx_cleanup_urbs);}#undef __RADIO_TAP_SIZE_RSVstatic void _rtl_usb_cleanup_rx(struct ieee80211_hw *hw){    struct rtl_priv *rtlpriv = rtl_priv(hw);    struct rtl_usb *rtlusb = rtl_usbdev(rtl_usbpriv(hw));    struct urb *urb;    usb_kill_anchored_urbs(&rtlusb->rx_submitted);    tasklet_kill(&rtlusb->rx_work_tasklet);    cancel_work_sync(&rtlpriv->works.lps_change_work);    flush_workqueue(rtlpriv->works.rtl_wq);    destroy_workqueue(rtlpriv->works.rtl_wq);    skb_queue_purge(&rtlusb->rx_queue);    while ((urb = usb_get_from_anchor(&rtlusb->rx_cleanup_urbs))) {        usb_free_coherent(urb->dev, urb->transfer_buffer_length,                          urb->transfer_buffer, urb->transfer_dma);        usb_free_urb(urb);    }}static int _rtl_usb_receive(struct ieee80211_hw *hw){    struct urb *urb;    int err;    int i;    struct rtl_priv *rtlpriv = rtl_priv(hw);    struct rtl_usb *rtlusb = rtl_usbdev(rtl_usbpriv(hw));    WARN_ON(0 == rtlusb->rx_urb_num);    /* 1600 == 1514 + max WLAN header + rtk info */    WARN_ON(rtlusb->rx_max_size < 1600);    for (i = 0; i < rtlusb->rx_urb_num; i++) {        err = -ENOMEM;        urb = usb_alloc_urb(0, GFP_KERNEL);        if (!urb) {
开发者ID:EvolutionMod,项目名称:ath10-lenovo,代码行数:67,


示例2: btusb_stop_traffic

static void btusb_stop_traffic(struct btusb_data *data){	usb_kill_anchored_urbs(&data->intr_anchor);	usb_kill_anchored_urbs(&data->bulk_anchor);	usb_kill_anchored_urbs(&data->isoc_anchor);}
开发者ID:LorDClockaN,项目名称:htc-kernel-msm7x30,代码行数:6,


示例3: usblp_unlink_urbs

static void usblp_unlink_urbs(struct usblp *usblp){	usb_kill_anchored_urbs(&usblp->urbs);}
开发者ID:magnusjjj,项目名称:android_kernel_huawei_rle,代码行数:4,


示例4: rmnet_usb_ctrl_write

static int rmnet_usb_ctrl_write(struct rmnet_ctrl_dev *dev,		struct ctrl_pkt *cpkt, size_t size){	int			result;	struct urb		*sndurb;	struct usb_ctrlrequest	*out_ctlreq;	struct usb_device	*udev;	if (!test_bit(RMNET_CTRL_DEV_READY, &dev->status))		return -ENETRESET;	udev = interface_to_usbdev(dev->intf);	sndurb = usb_alloc_urb(0, GFP_KERNEL);	if (!sndurb) {		dev_err(dev->devicep, "Error allocating read urb/n");		return -ENOMEM;	}	out_ctlreq = kmalloc(sizeof(*out_ctlreq), GFP_KERNEL);	if (!out_ctlreq) {		usb_free_urb(sndurb);		dev_err(dev->devicep, "Error allocating setup packet buffer/n");		return -ENOMEM;	}	/* CDC Send Encapsulated Request packet */	out_ctlreq->bRequestType = (USB_DIR_OUT | USB_TYPE_CLASS |			     USB_RECIP_INTERFACE);	out_ctlreq->bRequest = USB_CDC_SEND_ENCAPSULATED_COMMAND;	out_ctlreq->wValue = 0;	out_ctlreq->wIndex = dev->intf->cur_altsetting->desc.bInterfaceNumber;	out_ctlreq->wLength = cpu_to_le16(cpkt->data_size);	usb_fill_control_urb(sndurb, udev,			     usb_sndctrlpipe(udev, 0),			     (unsigned char *)out_ctlreq, (void *)cpkt->data,			     cpkt->data_size, ctrl_write_callback, cpkt);	result = usb_autopm_get_interface(dev->intf);	if (result < 0) {		dev_dbg(dev->devicep, "%s: Unable to resume interface: %d/n",			__func__, result);		/*		* Revisit:  if (result == -EPERM)		*		rmnet_usb_suspend(dev->intf, PMSG_SUSPEND);		*/		usb_free_urb(sndurb);		kfree(out_ctlreq);		return result;	}	usb_anchor_urb(sndurb, &dev->tx_submitted);	dev->snd_encap_cmd_cnt++;	result = usb_submit_urb(sndurb, GFP_KERNEL);	if (result < 0) {		if (result != -ENODEV)			dev_err(dev->devicep,			"%s: Submit URB error %d/n",			__func__, result);		dev->snd_encap_cmd_cnt--;		usb_autopm_put_interface(dev->intf);		usb_unanchor_urb(sndurb);		usb_free_urb(sndurb);		kfree(out_ctlreq);		return result;	}	if (usb_wait_anchor_empty_timeout(&dev->tx_submitted, 1000) > 0)		return size;	else {		usb_kill_anchored_urbs(&dev->tx_submitted);		return -EAGAIN;	}}
开发者ID:Svard73,项目名称:SM-T700-T705-Kernel,代码行数:77,


示例5: _rtl_usb_rx_process_agg

//.........这里部分代码省略.........free:	dev_kfree_skb_irq(skb);}static int _rtl_usb_receive(struct ieee80211_hw *hw){	struct urb *urb;	struct sk_buff *skb;	int err;	int i;	struct rtl_priv *rtlpriv = rtl_priv(hw);	struct rtl_usb *rtlusb = rtl_usbdev(rtl_usbpriv(hw));	WARN_ON(0 == rtlusb->rx_urb_num);	/* 1600 == 1514 + max WLAN header + rtk info */	WARN_ON(rtlusb->rx_max_size < 1600);	for (i = 0; i < rtlusb->rx_urb_num; i++) {		err = -ENOMEM;		urb = usb_alloc_urb(0, GFP_KERNEL);		if (!urb) {			RT_TRACE(rtlpriv, COMP_USB, DBG_EMERG,				 "Failed to alloc URB!!/n");			goto err_out;		}		skb = _rtl_prep_rx_urb(hw, rtlusb, urb, GFP_KERNEL);		if (IS_ERR(skb)) {			RT_TRACE(rtlpriv, COMP_USB, DBG_EMERG,				 "Failed to prep_rx_urb!!/n");			err = PTR_ERR(skb);			goto err_out;		}		usb_anchor_urb(urb, &rtlusb->rx_submitted);		err = usb_submit_urb(urb, GFP_KERNEL);		if (err)			goto err_out;		usb_free_urb(urb);	}	return 0;err_out:	usb_kill_anchored_urbs(&rtlusb->rx_submitted);	return err;}static int rtl_usb_start(struct ieee80211_hw *hw){	int err;	struct rtl_priv *rtlpriv = rtl_priv(hw);	struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw));	struct rtl_usb *rtlusb = rtl_usbdev(rtl_usbpriv(hw));	err = rtlpriv->cfg->ops->hw_init(hw);	if (!err) {		rtl_init_rx_config(hw);		/* Enable software */		SET_USB_START(rtlusb);		/* should after adapter start and interrupt enable. */		set_hal_start(rtlhal);		/* Start bulk IN */		_rtl_usb_receive(hw);	}	return err;}/** * * *//*=======================  tx =========================================*/static void rtl_usb_cleanup(struct ieee80211_hw *hw){	u32 i;	struct sk_buff *_skb;	struct rtl_usb *rtlusb = rtl_usbdev(rtl_usbpriv(hw));	struct ieee80211_tx_info *txinfo;	SET_USB_STOP(rtlusb);	/* clean up rx stuff. */	usb_kill_anchored_urbs(&rtlusb->rx_submitted);	/* clean up tx stuff */	for (i = 0; i < RTL_USB_MAX_EP_NUM; i++) {		while ((_skb = skb_dequeue(&rtlusb->tx_skb_queue[i]))) {			rtlusb->usb_tx_cleanup(hw, _skb);			txinfo = IEEE80211_SKB_CB(_skb);			ieee80211_tx_info_clear_status(txinfo);			txinfo->flags |= IEEE80211_TX_STAT_ACK;			ieee80211_tx_status_irqsafe(hw, _skb);		}		usb_kill_anchored_urbs(&rtlusb->tx_pending[i]);	}	usb_kill_anchored_urbs(&rtlusb->tx_submitted);}
开发者ID:0xroot,项目名称:Blackphone-BP1-Kernel,代码行数:101,


示例6: rmnet_usb_suspend

static int rmnet_usb_suspend(struct usb_interface *iface, pm_message_t message){	struct usbnet		*unet = usb_get_intfdata(iface);	struct rmnet_ctrl_dev	*dev;	int			i, n, rdev_cnt, unet_id;	int			retval = 0;	rdev_cnt = unet->data[4] ? no_rmnet_insts_per_dev : 1;	for (n = 0; n < rdev_cnt; n++) {		unet_id = n + unet->driver_info->data * no_rmnet_insts_per_dev;		unet =		unet->data[4] ? unet_list[unet_id] : usb_get_intfdata(iface);		dev = (struct rmnet_ctrl_dev *)unet->data[1];		spin_lock_irq(&unet->txq.lock);		if (work_busy(&dev->get_encap_work) || unet->txq.qlen) {			spin_unlock_irq(&unet->txq.lock);			retval = -EBUSY;			goto abort_suspend;		}		set_bit(EVENT_DEV_ASLEEP, &unet->flags);		spin_unlock_irq(&unet->txq.lock);		usb_kill_anchored_urbs(&dev->rx_submitted);		if (work_busy(&dev->get_encap_work)) {			spin_lock_irq(&unet->txq.lock);			clear_bit(EVENT_DEV_ASLEEP, &unet->flags);			spin_unlock_irq(&unet->txq.lock);			retval = -EBUSY;			goto abort_suspend;		}	}	for (n = 0; n < rdev_cnt; n++) {		unet_id = n + unet->driver_info->data * no_rmnet_insts_per_dev;		unet =		unet->data[4] ? unet_list[unet_id] : usb_get_intfdata(iface);		dev = (struct rmnet_ctrl_dev *)unet->data[1];		netif_device_detach(unet->net);		usbnet_terminate_urbs(unet);		netif_device_attach(unet->net);	}	return 0;abort_suspend:	for (i = 0; i < n; i++) {		unet_id = i + unet->driver_info->data * no_rmnet_insts_per_dev;		unet =		unet->data[4] ? unet_list[unet_id] : usb_get_intfdata(iface);		dev = (struct rmnet_ctrl_dev *)unet->data[1];		rmnet_usb_ctrl_start_rx(dev);		spin_lock_irq(&unet->txq.lock);		clear_bit(EVENT_DEV_ASLEEP, &unet->flags);		spin_unlock_irq(&unet->txq.lock);	}	return retval;}
开发者ID:romanbb,项目名称:android_kernel_lge_d851,代码行数:62,


示例7: gs_usb_probe

static int gs_usb_probe(struct usb_interface *intf,			const struct usb_device_id *id){	struct gs_usb *dev;	int rc = -ENOMEM;	unsigned int icount, i;	struct gs_host_config *hconf;	struct gs_device_config *dconf;	hconf = kmalloc(sizeof(*hconf), GFP_KERNEL);	if (!hconf)		return -ENOMEM;	hconf->byte_order = 0x0000beef;	/* send host config */	rc = usb_control_msg(interface_to_usbdev(intf),			     usb_sndctrlpipe(interface_to_usbdev(intf), 0),			     GS_USB_BREQ_HOST_FORMAT,			     USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_INTERFACE,			     1,			     intf->altsetting[0].desc.bInterfaceNumber,			     hconf,			     sizeof(*hconf),			     1000);	kfree(hconf);	if (rc < 0) {		dev_err(&intf->dev, "Couldn't send data format (err=%d)/n",			rc);		return rc;	}	dconf = kmalloc(sizeof(*dconf), GFP_KERNEL);	if (!dconf)		return -ENOMEM;	/* read device config */	rc = usb_control_msg(interface_to_usbdev(intf),			     usb_rcvctrlpipe(interface_to_usbdev(intf), 0),			     GS_USB_BREQ_DEVICE_CONFIG,			     USB_DIR_IN | USB_TYPE_VENDOR | USB_RECIP_INTERFACE,			     1,			     intf->altsetting[0].desc.bInterfaceNumber,			     dconf,			     sizeof(*dconf),			     1000);	if (rc < 0) {		dev_err(&intf->dev, "Couldn't get device config: (err=%d)/n",			rc);		kfree(dconf);		return rc;	}	icount = dconf->icount + 1;	dev_info(&intf->dev, "Configuring for %d interfaces/n", icount);	if (icount > GS_MAX_INTF) {		dev_err(&intf->dev,			"Driver cannot handle more that %d CAN interfaces/n",			GS_MAX_INTF);		kfree(dconf);		return -EINVAL;	}	dev = kzalloc(sizeof(*dev), GFP_KERNEL);	if (!dev) {		kfree(dconf);		return -ENOMEM;	}	init_usb_anchor(&dev->rx_submitted);	atomic_set(&dev->active_channels, 0);	usb_set_intfdata(intf, dev);	dev->udev = interface_to_usbdev(intf);	for (i = 0; i < icount; i++) {		dev->canch[i] = gs_make_candev(i, intf, dconf);		if (IS_ERR_OR_NULL(dev->canch[i])) {			/* save error code to return later */			rc = PTR_ERR(dev->canch[i]);			/* on failure destroy previously created candevs */			icount = i;			for (i = 0; i < icount; i++)				gs_destroy_candev(dev->canch[i]);			usb_kill_anchored_urbs(&dev->rx_submitted);			kfree(dconf);			kfree(dev);			return rc;		}		dev->canch[i]->parent = dev;	}	kfree(dconf);//.........这里部分代码省略.........
开发者ID:asmalldev,项目名称:linux,代码行数:101,


示例8: gs_destroy_candev

static void gs_destroy_candev(struct gs_can *dev){	unregister_candev(dev->netdev);	usb_kill_anchored_urbs(&dev->tx_submitted);	free_candev(dev->netdev);}
开发者ID:asmalldev,项目名称:linux,代码行数:6,


示例9: unlink_all_urbs

static void unlink_all_urbs(struct sam4e_usb *dev){	usb_kill_anchored_urbs(&dev->rx_submitted);	usb_kill_anchored_urbs(&dev->tx_submitted);	atomic_set(&dev->active_tx_urbs, 0);}
开发者ID:kamarush,项目名称:caf_kernel_mm,代码行数:6,



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


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