本文整理汇总了C++中callout_drain函数的典型用法代码示例。如果您正苦于以下问题:C++ callout_drain函数的具体用法?C++ callout_drain怎么用?C++ callout_drain使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了callout_drain函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: sdp_tx_ring_destroy
void
sdp_tx_ring_destroy(struct sdp_sock *ssk)
{
sdp_dbg(ssk->socket, "tx ring destroy\n");
SDP_WLOCK(ssk);
callout_stop(&ssk->tx_ring.timer);
callout_stop(&ssk->nagle_timer);
SDP_WUNLOCK(ssk);
callout_drain(&ssk->tx_ring.timer);
callout_drain(&ssk->nagle_timer);
if (ssk->tx_ring.buffer) {
sdp_tx_ring_purge(ssk);
kfree(ssk->tx_ring.buffer);
ssk->tx_ring.buffer = NULL;
}
if (ssk->tx_ring.cq) {
if (ib_destroy_cq(ssk->tx_ring.cq)) {
sdp_warn(ssk->socket, "destroy cq(%p) failed\n",
ssk->tx_ring.cq);
} else {
ssk->tx_ring.cq = NULL;
}
}
WARN_ON(ring_head(ssk->tx_ring) != ring_tail(ssk->tx_ring));
}
开发者ID:AhmadTux,项目名称:freebsd,代码行数:30,代码来源:sdp_tx.c
示例2: ntb_transport_link_cleanup
/* Link down event*/
static void
ntb_transport_link_cleanup(struct ntb_transport_ctx *nt)
{
struct ntb_transport_qp *qp;
struct _qpset qp_bitmap_alloc;
unsigned i;
BIT_COPY(QP_SETSIZE, &nt->qp_bitmap, &qp_bitmap_alloc);
BIT_NAND(QP_SETSIZE, &qp_bitmap_alloc, &nt->qp_bitmap_free);
/* Pass along the info to any clients */
for (i = 0; i < nt->qp_count; i++)
if (test_bit(i, &qp_bitmap_alloc)) {
qp = &nt->qp_vec[i];
ntb_qp_link_cleanup(qp);
callout_drain(&qp->link_work);
}
if (!nt->link_is_up)
callout_drain(&nt->link_work);
/*
* The scratchpad registers keep the values if the remote side
* goes down, blast them now to give them a sane value the next
* time they are accessed
*/
for (i = 0; i < IF_NTB_MAX_SPAD; i++)
ntb_spad_write(nt->ntb, i, 0);
}
开发者ID:Digital-Chaos,项目名称:freebsd,代码行数:30,代码来源:if_ntb.c
示例3: ntb_transport_free
static void
ntb_transport_free(struct ntb_transport_ctx *nt)
{
struct ntb_softc *ntb = nt->ntb;
struct _qpset qp_bitmap_alloc;
uint8_t i;
ntb_transport_link_cleanup(nt);
taskqueue_drain(taskqueue_swi, &nt->link_cleanup);
callout_drain(&nt->link_work);
callout_drain(&nt->link_watchdog);
BIT_COPY(QP_SETSIZE, &nt->qp_bitmap, &qp_bitmap_alloc);
BIT_NAND(QP_SETSIZE, &qp_bitmap_alloc, &nt->qp_bitmap_free);
/* Verify that all the QPs are freed */
for (i = 0; i < nt->qp_count; i++)
if (test_bit(i, &qp_bitmap_alloc))
ntb_transport_free_queue(&nt->qp_vec[i]);
ntb_link_disable(ntb);
ntb_clear_ctx(ntb);
for (i = 0; i < nt->mw_count; i++)
ntb_free_mw(nt, i);
free(nt->qp_vec, M_NTB_IF);
}
开发者ID:Digital-Chaos,项目名称:freebsd,代码行数:28,代码来源:if_ntb.c
示例4: ntb_detach
static int
ntb_detach(device_t device)
{
struct ntb_softc *ntb = DEVICE2SOFTC(device);
callout_drain(&ntb->heartbeat_timer);
callout_drain(&ntb->lr_timer);
ntb_teardown_interrupts(ntb);
ntb_unmap_pci_bar(ntb);
return (0);
}
开发者ID:Alkzndr,项目名称:freebsd,代码行数:12,代码来源:ntb_hw.c
示例5: stop_ep_timer
static void
stop_ep_timer(struct iwch_ep *ep)
{
CTR2(KTR_IW_CXGB, "%s ep %p", __FUNCTION__, ep);
callout_drain(&ep->timer);
put_ep(&ep->com);
}
开发者ID:AhmadTux,项目名称:freebsd,代码行数:7,代码来源:iw_cxgb_cm.c
示例6: in6_detachhead
int
in6_detachhead(void **head, int off)
{
callout_drain(&V_rtq_mtutimer);
return (rn_detachhead(head));
}
开发者ID:embedclub,项目名称:freebsd,代码行数:7,代码来源:in6_rmx.c
示例7: ed_detach
/*
* Detach the driver from the hardware and other systems in the kernel.
*/
int
ed_detach(device_t dev)
{
struct ed_softc *sc = device_get_softc(dev);
struct ifnet *ifp = sc->ifp;
if (mtx_initialized(ED_MUTEX(sc)))
ED_ASSERT_UNLOCKED(sc);
if (ifp) {
ED_LOCK(sc);
if (bus_child_present(dev))
ed_stop(sc);
ifp->if_drv_flags &= ~IFF_DRV_RUNNING;
ED_UNLOCK(sc);
ether_ifdetach(ifp);
callout_drain(&sc->tick_ch);
}
if (sc->irq_res != NULL && sc->irq_handle)
bus_teardown_intr(dev, sc->irq_res, sc->irq_handle);
ed_release_resources(dev);
if (sc->miibus)
device_delete_child(dev, sc->miibus);
if (mtx_initialized(ED_MUTEX(sc)))
ED_LOCK_DESTROY(sc);
bus_generic_detach(dev);
return (0);
}
开发者ID:ChaosJohn,项目名称:freebsd,代码行数:30,代码来源:if_ed.c
示例8: ip6_destroy
void
ip6_destroy()
{
nd6_destroy();
callout_drain(&V_in6_tmpaddrtimer_ch);
}
开发者ID:chrisinthemorning,项目名称:m0n0wall2,代码行数:7,代码来源:ip6_input.c
示例9: adv_destroy_ccb_info
static void
adv_destroy_ccb_info(struct adv_softc *adv, struct adv_ccb_info *cinfo)
{
callout_drain(&cinfo->timer);
bus_dmamap_destroy(adv->buffer_dmat, cinfo->dmamap);
}
开发者ID:2asoft,项目名称:freebsd,代码行数:7,代码来源:advansys.c
示例10: ntb_transport_free_queue
static void
ntb_transport_free_queue(struct ntb_transport_qp *qp)
{
struct ntb_queue_entry *entry;
if (qp == NULL)
return;
callout_drain(&qp->link_work);
ntb_db_set_mask(qp->ntb, 1ull << qp->qp_num);
taskqueue_drain(taskqueue_swi, &qp->rxc_db_work);
taskqueue_drain(taskqueue_swi, &qp->rx_completion_task);
qp->cb_data = NULL;
qp->rx_handler = NULL;
qp->tx_handler = NULL;
qp->event_handler = NULL;
while ((entry = ntb_list_rm(&qp->ntb_rx_q_lock, &qp->rx_pend_q)))
free(entry, M_NTB_IF);
while ((entry = ntb_list_rm(&qp->ntb_rx_q_lock, &qp->rx_post_q)))
free(entry, M_NTB_IF);
while ((entry = ntb_list_rm(&qp->ntb_tx_free_q_lock, &qp->tx_free_q)))
free(entry, M_NTB_IF);
set_bit(qp->qp_num, &qp->transport->qp_bitmap_free);
}
开发者ID:Digital-Chaos,项目名称:freebsd,代码行数:30,代码来源:if_ntb.c
示例11: in_detachhead
int
in_detachhead(void **head, int off)
{
callout_drain(&V_rtq_timer);
return (1);
}
开发者ID:dcui,项目名称:FreeBSD-9.3_kernel,代码行数:7,代码来源:in_rmx.c
示例12: at91_udp_detach
static int
at91_udp_detach(device_t dev)
{
struct at91_udp_softc *sc = device_get_softc(dev);
device_t bdev;
int err;
if (sc->sc_dci.sc_bus.bdev) {
bdev = sc->sc_dci.sc_bus.bdev;
device_detach(bdev);
device_delete_child(dev, bdev);
}
/* during module unload there are lots of children leftover */
device_delete_children(dev);
USB_BUS_LOCK(&sc->sc_dci.sc_bus);
callout_stop(&sc->sc_vbus);
USB_BUS_UNLOCK(&sc->sc_dci.sc_bus);
callout_drain(&sc->sc_vbus);
/* disable Transceiver */
AT91_UDP_WRITE_4(&sc->sc_dci, AT91_UDP_TXVC, AT91_UDP_TXVC_DIS);
/* disable and clear all interrupts */
AT91_UDP_WRITE_4(&sc->sc_dci, AT91_UDP_IDR, 0xFFFFFFFF);
AT91_UDP_WRITE_4(&sc->sc_dci, AT91_UDP_ICR, 0xFFFFFFFF);
if (sc->sc_dci.sc_irq_res && sc->sc_dci.sc_intr_hdl) {
/*
* only call at91_udp_uninit() after at91_udp_init()
*/
at91dci_uninit(&sc->sc_dci);
err = bus_teardown_intr(dev, sc->sc_dci.sc_irq_res,
sc->sc_dci.sc_intr_hdl);
sc->sc_dci.sc_intr_hdl = NULL;
}
if (sc->sc_dci.sc_irq_res) {
bus_release_resource(dev, SYS_RES_IRQ, 0,
sc->sc_dci.sc_irq_res);
sc->sc_dci.sc_irq_res = NULL;
}
if (sc->sc_dci.sc_io_res) {
bus_release_resource(dev, SYS_RES_MEMORY, MEM_RID,
sc->sc_dci.sc_io_res);
sc->sc_dci.sc_io_res = NULL;
}
usb_bus_mem_free_all(&sc->sc_dci.sc_bus, NULL);
/* disable clocks */
at91_pmc_clock_disable(sc->sc_iclk);
at91_pmc_clock_disable(sc->sc_fclk);
at91_pmc_clock_disable(sc->sc_mclk);
at91_pmc_clock_deref(sc->sc_fclk);
at91_pmc_clock_deref(sc->sc_iclk);
at91_pmc_clock_deref(sc->sc_mclk);
return (0);
}
开发者ID:JabirTech,项目名称:Source,代码行数:60,代码来源:at91dci_atmelarm.c
示例13: cmx_detach
/*
* Bus independant device detachment routine. Makes sure all
* allocated resources are freed, callouts disabled and waiting
* processes unblocked.
*/
int
cmx_detach(device_t dev)
{
struct cmx_softc *sc = device_get_softc(dev);
DEBUG_printf(dev, "called\n");
sc->dying = 1;
CMX_LOCK(sc);
if (sc->polling) {
DEBUG_printf(sc->dev, "disabling polling\n");
callout_stop(&sc->ch);
sc->polling = 0;
CMX_UNLOCK(sc);
callout_drain(&sc->ch);
selwakeuppri(&sc->sel, PZERO);
} else {
CMX_UNLOCK(sc);
}
wakeup(sc);
destroy_dev(sc->cdev);
DEBUG_printf(dev, "releasing resources\n");
cmx_release_resources(dev);
return 0;
}
开发者ID:dcui,项目名称:FreeBSD-9.3_kernel,代码行数:33,代码来源:cmx.c
示例14: cmx_close
/*
* Close the character device.
*/
static int
cmx_close(struct cdev *cdev, int flags, int fmt, struct thread *td)
{
struct cmx_softc *sc = cdev->si_drv1;
if (sc == NULL || sc->dying)
return ENXIO;
CMX_LOCK(sc);
if (!sc->open) {
CMX_UNLOCK(sc);
return EINVAL;
}
if (sc->polling) {
DEBUG_printf(sc->dev, "disabling polling\n");
callout_stop(&sc->ch);
sc->polling = 0;
CMX_UNLOCK(sc);
callout_drain(&sc->ch);
selwakeuppri(&sc->sel, PZERO);
CMX_LOCK(sc);
}
sc->open = 0;
CMX_UNLOCK(sc);
DEBUG_printf(sc->dev, "close (flags=%b thread=%p)\n",
flags, MODEBITS, td);
return 0;
}
开发者ID:dcui,项目名称:FreeBSD-9.3_kernel,代码行数:32,代码来源:cmx.c
示例15: ntb_transport_free
static void
ntb_transport_free(void *transport)
{
struct ntb_netdev *nt = transport;
struct ntb_softc *ntb = nt->ntb;
int i;
nt->transport_link = NTB_LINK_DOWN;
callout_drain(&nt->link_work);
/* verify that all the qps are freed */
for (i = 0; i < nt->max_qps; i++)
if (!test_bit(i, &nt->qp_bitmap))
ntb_transport_free_queue(&nt->qps[i]);
ntb_unregister_event_callback(ntb);
for (i = 0; i < NTB_NUM_MW; i++)
if (nt->mw[i].virt_addr != NULL)
contigfree(nt->mw[i].virt_addr, nt->mw[i].size,
M_NTB_IF);
free(nt->qps, M_NTB_IF);
ntb_unregister_transport(ntb);
}
开发者ID:ele7enxxh,项目名称:dtrace-pf,代码行数:27,代码来源:if_ntb.c
示例16: ieee80211_scan_detach
void
ieee80211_scan_detach(struct ieee80211com *ic)
{
struct ieee80211_scan_state *ss = ic->ic_scan;
if (ss != NULL) {
IEEE80211_LOCK(ic);
SCAN_PRIVATE(ss)->ss_iflags |= ISCAN_ABORT;
scan_signal(ss);
IEEE80211_UNLOCK(ic);
ieee80211_draintask(ic, &SCAN_PRIVATE(ss)->ss_scan_task);
callout_drain(&SCAN_PRIVATE(ss)->ss_scan_timer);
KASSERT((ic->ic_flags & IEEE80211_F_SCAN) == 0,
("scan still running"));
if (ss->ss_ops != NULL) {
ss->ss_ops->scan_detach(ss);
ss->ss_ops = NULL;
}
ic->ic_scan = NULL;
free(SCAN_PRIVATE(ss), M_80211_SCAN);
}
#if defined(__ANTARES__)
ieee80211_scan_sta_uninit();
#endif
}
开发者ID:mmanley,项目名称:Antares,代码行数:27,代码来源:ieee80211_scan.c
示例17: ip6_destroy
void
ip6_destroy()
{
hashdestroy(V_in6_ifaddrhashtbl, M_IFADDR, V_in6_ifaddrhmask);
nd6_destroy();
callout_drain(&V_in6_tmpaddrtimer_ch);
}
开发者ID:rchander,项目名称:freebsd,代码行数:8,代码来源:ip6_input.c
示例18: ath_rate_detach
void
ath_rate_detach(struct ath_ratectrl *arc)
{
struct amrr_softc *asc = (struct amrr_softc *) arc;
callout_drain(&asc->timer);
free(asc, M_DEVBUF);
}
开发者ID:eyberg,项目名称:rumpkernel-netbsd-src,代码行数:8,代码来源:athrate-amrr.c
示例19: pckbd_term
/* finish using this keyboard */
static int
pckbd_term(keyboard_t *kbd)
{
pckbd_state_t *state = (pckbd_state_t *)kbd->kb_data;
kbd_unregister(kbd);
callout_drain(&state->ks_timer);
return 0;
}
开发者ID:2asoft,项目名称:freebsd,代码行数:10,代码来源:pckbd.c
示例20: in6_detachhead
int
in6_detachhead(void **head, int off)
{
callout_drain(&V_rtq_mtutimer);
rt_table_destroy((struct rib_head *)(*head));
return (1);
}
开发者ID:hmatyschok,项目名称:MeshBSD,代码行数:9,代码来源:in6_rmx.c
注:本文中的callout_drain函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论