这篇教程C++ ACM_READY函数代码示例写得很实用,希望能帮到您。
本文整理汇总了C++中ACM_READY函数的典型用法代码示例。如果您正苦于以下问题:C++ ACM_READY函数的具体用法?C++ ACM_READY怎么用?C++ ACM_READY使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。 在下文中一共展示了ACM_READY函数的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。 示例1: acm_softintstatic void acm_softint(struct work_struct *work){ struct acm *acm = container_of(work, struct acm, work); struct tty_struct *tty; dev_vdbg(&acm->data->dev, "%s/n", __func__); if (!ACM_READY(acm)) return; tty = tty_port_tty_get(&acm->port); if (!tty) return; tty_wakeup(tty); tty_kref_put(tty);}
开发者ID:schidler,项目名称:flyzjhz-rt-n56u,代码行数:15,
示例2: acm_ctrl_irqstatic void acm_ctrl_irq(struct urb *urb){ struct acm *acm = urb->context; devrequest *dr = urb->transfer_buffer; unsigned char *data = (unsigned char *)(dr + 1); int newctrl; if (!ACM_READY(acm)) return; if (urb->status < 0) { dbg("nonzero ctrl irq status received: %d", urb->status); return; } switch (dr->request) { case ACM_IRQ_NETWORK: dbg("%s network", data[0] ? "connected to" : "disconnected from"); return; case ACM_IRQ_LINE_STATE: newctrl = le16_to_cpup((__u16 *) data); if (acm->tty && !acm->clocal && (acm->ctrlin & ~newctrl & ACM_CTRL_DCD)) { dbg("calling hangup"); tty_hangup(acm->tty); } acm->ctrlin = newctrl; dbg("input control lines: dcd%c dsr%c break%c ring%c framing%c parity%c overrun%c", acm->ctrlin & ACM_CTRL_DCD ? '+' : '-', acm->ctrlin & ACM_CTRL_DSR ? '+' : '-', acm->ctrlin & ACM_CTRL_BRK ? '+' : '-', acm->ctrlin & ACM_CTRL_RI ? '+' : '-', acm->ctrlin & ACM_CTRL_FRAMING ? '+' : '-', acm->ctrlin & ACM_CTRL_PARITY ? '+' : '-', acm->ctrlin & ACM_CTRL_OVERRUN ? '+' : '-'); return; default: dbg("unknown control event received: request %d index %d len %d data0 %d data1 %d", dr->request, dr->index, dr->length, data[0], data[1]); return; }}
开发者ID:liexusong,项目名称:Linux-2.4.16,代码行数:46,
示例3: acm_tty_tiocmsetstatic int acm_tty_tiocmset(struct tty_struct *tty, struct file *file, unsigned int set, unsigned int clear){ struct acm *acm = tty->driver_data; unsigned int newctrl; if (!ACM_READY(acm)) return -EINVAL; newctrl = acm->ctrlout; set = (set & TIOCM_DTR ? ACM_CTRL_DTR : 0) | (set & TIOCM_RTS ? ACM_CTRL_RTS : 0); clear = (clear & TIOCM_DTR ? ACM_CTRL_DTR : 0) | (clear & TIOCM_RTS ? ACM_CTRL_RTS : 0); newctrl = (newctrl & ~clear) | set; if (acm->ctrlout == newctrl) return 0; return acm_set_control(acm, acm->ctrlout = newctrl);}
开发者ID:IgnasD,项目名称:Tomato-RAF,代码行数:19,
示例4: acm_read_bulk/* data interface returns incoming bytes, or we got unthrottled */static void acm_read_bulk(struct urb *urb){ struct acm_rb *buf; struct acm_ru *rcv = urb->context; struct acm *acm = rcv->instance; int status = urb->status; dbg("Entering acm_read_bulk with status %d", status); if (!ACM_READY(acm)) { dev_dbg(&acm->data->dev, "Aborting, acm not ready"); return; } usb_mark_last_busy(acm->dev); if (status) dev_dbg(&acm->data->dev, "bulk rx status %d/n", status); buf = rcv->buffer; buf->size = urb->actual_length; if (likely(status == 0)) { spin_lock(&acm->read_lock); acm->processing++; list_add_tail(&rcv->list, &acm->spare_read_urbs); list_add_tail(&buf->list, &acm->filled_read_bufs); spin_unlock(&acm->read_lock); } else { /* we drop the buffer due to an error */ spin_lock(&acm->read_lock); list_add_tail(&rcv->list, &acm->spare_read_urbs); list_add(&buf->list, &acm->spare_read_bufs); spin_unlock(&acm->read_lock); /* nevertheless the tasklet must be kicked unconditionally so the queue cannot dry up */ } if (likely(!acm->susp_count)) tasklet_schedule(&acm->urb_task);}
开发者ID:IgnasD,项目名称:Tomato-RAF,代码行数:40,
示例5: acm_read_bulk/* data interface returns incoming bytes, or we got unthrottled */static void acm_read_bulk(struct urb *urb, struct pt_regs *regs){ struct acm_rb *buf; struct acm_ru *rcv = urb->context; struct acm *acm = rcv->instance; dbg("Entering acm_read_bulk with status %d/n", urb->status); if (!ACM_READY(acm)) return; if (urb->status) dev_dbg(&acm->data->dev, "bulk rx status %d/n", urb->status); buf = rcv->buffer; buf->size = urb->actual_length; spin_lock(&acm->read_lock); list_add_tail(&rcv->list, &acm->spare_read_urbs); list_add_tail(&buf->list, &acm->filled_read_bufs); spin_unlock(&acm->read_lock); tasklet_schedule(&acm->urb_task);}
开发者ID:BackupTheBerlios,项目名称:arp2-svn,代码行数:24,
示例6: acm_read_bulkstatic void acm_read_bulk(struct urb *urb){ struct acm *acm = urb->context; struct tty_struct *tty = acm->tty; unsigned char *data = urb->transfer_buffer; int i = 0; if (!ACM_READY(acm)) return; if (urb->status) dbg("nonzero read bulk status received: %d", urb->status); if (!urb->status & !acm->throttle) { for (i = 0; i < urb->actual_length && !acm->throttle; i++) { /* if we insert more than TTY_FLIPBUF_SIZE characters, * we drop them. */ if (tty->flip.count >= TTY_FLIPBUF_SIZE) { tty_flip_buffer_push(tty); } tty_insert_flip_char(tty, data[i], 0); } tty_flip_buffer_push(tty); } if (acm->throttle) { memmove(data, data + i, urb->actual_length - i); urb->actual_length -= i; return; } urb->actual_length = 0; urb->dev = acm->dev; if (usb_submit_urb(urb)) dbg("failed resubmitting read urb");}
开发者ID:liexusong,项目名称:Linux-2.4.16,代码行数:36,
示例7: acm_rx_taskletstatic void acm_rx_tasklet(unsigned long _acm){ struct acm *acm = (void *)_acm; struct acm_rb *buf; struct tty_struct *tty = acm->tty; struct acm_ru *rcv; unsigned long flags; unsigned char throttled; dbg("Entering acm_rx_tasklet"); if (!ACM_READY(acm)) { dbg("acm_rx_tasklet: ACM not ready"); return; } spin_lock_irqsave(&acm->throttle_lock, flags); throttled = acm->throttle; spin_unlock_irqrestore(&acm->throttle_lock, flags); if (throttled) { dbg("acm_rx_tasklet: throttled"); return; }next_buffer: spin_lock_irqsave(&acm->read_lock, flags); if (list_empty(&acm->filled_read_bufs)) { spin_unlock_irqrestore(&acm->read_lock, flags); goto urbs; } buf = list_entry(acm->filled_read_bufs.next, struct acm_rb, list); list_del(&buf->list); spin_unlock_irqrestore(&acm->read_lock, flags); dbg("acm_rx_tasklet: procesing buf 0x%p, size = %d", buf, buf->size); tty_buffer_request_room(tty, buf->size); spin_lock_irqsave(&acm->throttle_lock, flags); throttled = acm->throttle; spin_unlock_irqrestore(&acm->throttle_lock, flags); if (!throttled) tty_insert_flip_string(tty, buf->base, buf->size); tty_flip_buffer_push(tty); if (throttled) { dbg("Throttling noticed"); spin_lock_irqsave(&acm->read_lock, flags); list_add(&buf->list, &acm->filled_read_bufs); spin_unlock_irqrestore(&acm->read_lock, flags); return; } spin_lock_irqsave(&acm->read_lock, flags); list_add(&buf->list, &acm->spare_read_bufs); spin_unlock_irqrestore(&acm->read_lock, flags); goto next_buffer;urbs: while (!list_empty(&acm->spare_read_bufs)) { spin_lock_irqsave(&acm->read_lock, flags); if (list_empty(&acm->spare_read_urbs)) { acm->processing = 0; spin_unlock_irqrestore(&acm->read_lock, flags); return; } rcv = list_entry(acm->spare_read_urbs.next, struct acm_ru, list); list_del(&rcv->list); spin_unlock_irqrestore(&acm->read_lock, flags); buf = list_entry(acm->spare_read_bufs.next, struct acm_rb, list); list_del(&buf->list); rcv->buffer = buf; usb_fill_bulk_urb(rcv->urb, acm->dev, acm->rx_endpoint, buf->base, acm->readsize, acm_read_bulk, rcv); rcv->urb->transfer_dma = buf->dma; rcv->urb->transfer_flags |= URB_NO_TRANSFER_DMA_MAP; /* This shouldn't kill the driver as unsuccessful URBs are returned to the free-urbs-pool and resubmited ASAP */ spin_lock_irqsave(&acm->read_lock, flags); if (acm->susp_count || usb_submit_urb(rcv->urb, GFP_ATOMIC) < 0) { list_add(&buf->list, &acm->spare_read_bufs); list_add(&rcv->list, &acm->spare_read_urbs); acm->processing = 0; spin_unlock_irqrestore(&acm->read_lock, flags); return; } else { spin_unlock_irqrestore(&acm->read_lock, flags); dbg("acm_rx_tasklet: sending urb 0x%p, rcv 0x%p, buf 0x%p", rcv->urb, rcv, buf); }//.........这里部分代码省略.........
开发者ID:IgnasD,项目名称:Tomato-RAF,代码行数:101,
示例8: acm_ctrl_irq/* control interface reports status changes with "interrupt" transfers */static void acm_ctrl_irq(struct urb *urb){ struct acm *acm = urb->context; struct usb_cdc_notification *dr = urb->transfer_buffer; unsigned char *data; int newctrl; int retval; int status = urb->status; switch (status) { case 0: /* success */ break; case -ECONNRESET: case -ENOENT: case -ESHUTDOWN: /* this urb is terminated, clean up */ dbg("%s - urb shutting down with status: %d", __FUNCTION__, status); return; default: dbg("%s - nonzero urb status received: %d", __FUNCTION__, status); goto exit; } if (!ACM_READY(acm)) goto exit; data = (unsigned char *)(dr + 1); switch (dr->bNotificationType) { case USB_CDC_NOTIFY_NETWORK_CONNECTION: dbg("%s network", dr->wValue ? "connected to" : "disconnected from"); break; case USB_CDC_NOTIFY_SERIAL_STATE: newctrl = le16_to_cpu(get_unaligned((__le16 *) data)); if (acm->tty && !acm->clocal && (acm->ctrlin & ~newctrl & ACM_CTRL_DCD)) { dbg("calling hangup"); tty_hangup(acm->tty); } acm->ctrlin = newctrl; dbg("input control lines: dcd%c dsr%c break%c ring%c framing%c parity%c overrun%c", acm->ctrlin & ACM_CTRL_DCD ? '+' : '-', acm->ctrlin & ACM_CTRL_DSR ? '+' : '-', acm->ctrlin & ACM_CTRL_BRK ? '+' : '-', acm->ctrlin & ACM_CTRL_RI ? '+' : '-', acm->ctrlin & ACM_CTRL_FRAMING ? '+' : '-', acm->ctrlin & ACM_CTRL_PARITY ? '+' : '-', acm->ctrlin & ACM_CTRL_OVERRUN ? '+' : '-'); break; default: dbg("unknown notification %d received: index %d len %d data0 %d data1 %d", dr->bNotificationType, dr->wIndex, dr->wLength, data[0], data[1]); break; }exit: usb_mark_last_busy(acm->dev); retval = usb_submit_urb (urb, GFP_ATOMIC); if (retval) err ("%s - usb_submit_urb failed with result %d", __FUNCTION__, retval);}
开发者ID:IgnasD,项目名称:Tomato-RAF,代码行数:68,
示例9: acm_rx_taskletstatic void acm_rx_tasklet(unsigned long _acm){ struct acm *acm = (void *)_acm; struct acm_rb *buf; struct tty_struct *tty = acm->tty; struct acm_ru *rcv; //unsigned long flags; int i = 0; dbg("Entering acm_rx_tasklet"); if (!ACM_READY(acm) || acm->throttle) return;next_buffer: spin_lock(&acm->read_lock); if (list_empty(&acm->filled_read_bufs)) { spin_unlock(&acm->read_lock); goto urbs; } buf = list_entry(acm->filled_read_bufs.next, struct acm_rb, list); list_del(&buf->list); spin_unlock(&acm->read_lock); dbg("acm_rx_tasklet: procesing buf 0x%p, size = %d/n", buf, buf->size); tty_buffer_request_room(tty, buf->size); if (!acm->throttle) tty_insert_flip_string(tty, buf->base, buf->size); tty_flip_buffer_push(tty); spin_lock(&acm->throttle_lock); if (acm->throttle) { dbg("Throtteling noticed"); memmove(buf->base, buf->base + i, buf->size - i); buf->size -= i; spin_unlock(&acm->throttle_lock); spin_lock(&acm->read_lock); list_add(&buf->list, &acm->filled_read_bufs); spin_unlock(&acm->read_lock); return; } spin_unlock(&acm->throttle_lock); spin_lock(&acm->read_lock); list_add(&buf->list, &acm->spare_read_bufs); spin_unlock(&acm->read_lock); goto next_buffer;urbs: while (!list_empty(&acm->spare_read_bufs)) { spin_lock(&acm->read_lock); if (list_empty(&acm->spare_read_urbs)) { spin_unlock(&acm->read_lock); return; } rcv = list_entry(acm->spare_read_urbs.next, struct acm_ru, list); list_del(&rcv->list); spin_unlock(&acm->read_lock); buf = list_entry(acm->spare_read_bufs.next, struct acm_rb, list); list_del(&buf->list); rcv->buffer = buf; usb_fill_bulk_urb(rcv->urb, acm->dev, acm->rx_endpoint, buf->base, acm->readsize, acm_read_bulk, rcv); rcv->urb->transfer_dma = buf->dma; rcv->urb->transfer_flags |= URB_NO_TRANSFER_DMA_MAP; dbg("acm_rx_tasklet: sending urb 0x%p, rcv 0x%p, buf 0x%p/n", rcv->urb, rcv, buf); /* This shouldn't kill the driver as unsuccessful URBs are returned to the free-urbs-pool and resubmited ASAP */ if (usb_submit_urb(rcv->urb, GFP_ATOMIC) < 0) { list_add(&buf->list, &acm->spare_read_bufs); spin_lock(&acm->read_lock); list_add(&rcv->list, &acm->spare_read_urbs); spin_unlock(&acm->read_lock); return; } }}
开发者ID:BackupTheBerlios,项目名称:arp2-svn,代码行数:88,
示例10: acm_ctrl_irq/* control interface reports status changes with "interrupt" transfers */static void acm_ctrl_irq(struct urb *urb, struct pt_regs *regs){ struct acm *acm = urb->context; struct usb_ctrlrequest *dr = urb->transfer_buffer; unsigned char *data = (unsigned char *)(dr + 1); int newctrl; int status; switch (urb->status) { case 0: /* success */ break; case -ECONNRESET: case -ENOENT: case -ESHUTDOWN: /* this urb is terminated, clean up */ dbg("%s - urb shutting down with status: %d", __FUNCTION__, urb->status); return; default: dbg("%s - nonzero urb status received: %d", __FUNCTION__, urb->status); goto exit; } if (!ACM_READY(acm)) goto exit; switch (dr->bRequest) { case ACM_IRQ_NETWORK: dbg("%s network", dr->wValue ? "connected to" : "disconnected from"); break; case ACM_IRQ_LINE_STATE: newctrl = le16_to_cpup((__u16 *) data); if (acm->tty && !acm->clocal && (acm->ctrlin & ~newctrl & ACM_CTRL_DCD)) { dbg("calling hangup"); tty_hangup(acm->tty); } acm->ctrlin = newctrl; dbg("input control lines: dcd%c dsr%c break%c ring%c framing%c parity%c overrun%c", acm->ctrlin & ACM_CTRL_DCD ? '+' : '-', acm->ctrlin & ACM_CTRL_DSR ? '+' : '-', acm->ctrlin & ACM_CTRL_BRK ? '+' : '-', acm->ctrlin & ACM_CTRL_RI ? '+' : '-', acm->ctrlin & ACM_CTRL_FRAMING ? '+' : '-', acm->ctrlin & ACM_CTRL_PARITY ? '+' : '-', acm->ctrlin & ACM_CTRL_OVERRUN ? '+' : '-'); break; default: dbg("unknown control event received: request %d index %d len %d data0 %d data1 %d", dr->bRequest, dr->wIndex, dr->wLength, data[0], data[1]); break; }exit: status = usb_submit_urb (urb, GFP_ATOMIC); if (status) err ("%s - usb_submit_urb failed with result %d", __FUNCTION__, status);}
开发者ID:iPodLinux,项目名称:linux-2.6.7-ipod,代码行数:64,
注:本文中的ACM_READY函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 C++ ACPI_ADD_PTR函数代码示例 C++ ACL_VSTREAM_SOCK函数代码示例 |