这篇教程C++ virq_to_hw函数代码示例写得很实用,希望能帮到您。
本文整理汇总了C++中virq_to_hw函数的典型用法代码示例。如果您正苦于以下问题:C++ virq_to_hw函数的具体用法?C++ virq_to_hw怎么用?C++ virq_to_hw使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。 在下文中一共展示了virq_to_hw函数的30个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。 示例1: ehv_pic_set_irq_typeint ehv_pic_set_irq_type(struct irq_data *d, unsigned int flow_type){ unsigned int src = virq_to_hw(d->irq); unsigned int vecpri, vold, vnew, prio, cpu_dest; unsigned long flags; if (flow_type == IRQ_TYPE_NONE) flow_type = IRQ_TYPE_LEVEL_LOW; irqd_set_trigger_type(d, flow_type); vecpri = ehv_pic_type_to_vecpri(flow_type); spin_lock_irqsave(&ehv_pic_lock, flags); ev_int_get_config(src, &vold, &prio, &cpu_dest); vnew = vold & ~(EHV_PIC_INFO(VECPRI_POLARITY_MASK) | EHV_PIC_INFO(VECPRI_SENSE_MASK)); vnew |= vecpri; /* * TODO : Add specific interface call for platform to set * individual interrupt priorities. * platform currently using static/default priority for all ints */ prio = 8; ev_int_set_config(src, vecpri, prio, cpu_dest); spin_unlock_irqrestore(&ehv_pic_lock, flags); return IRQ_SET_MASK_OK_NOCOPY;}
开发者ID:01org,项目名称:thunderbolt-software-kernel-tree,代码行数:32,
示例2: ras_hotplug_interruptstatic irqreturn_t ras_hotplug_interrupt(int irq, void *dev_id){ struct pseries_errorlog *pseries_log; struct pseries_hp_errorlog *hp_elog; spin_lock(&ras_log_buf_lock); rtas_call(ras_check_exception_token, 6, 1, NULL, RTAS_VECTOR_EXTERNAL_INTERRUPT, virq_to_hw(irq), RTAS_HOTPLUG_EVENTS, 0, __pa(&ras_log_buf), rtas_get_error_log_max()); pseries_log = get_pseries_errorlog((struct rtas_error_log *)ras_log_buf, PSERIES_ELOG_SECT_ID_HOTPLUG); hp_elog = (struct pseries_hp_errorlog *)pseries_log->data; /* * Since PCI hotplug is not currently supported on pseries, put PCI * hotplug events on the ras_log_buf to be handled by rtas_errd. */ if (hp_elog->resource == PSERIES_HP_ELOG_RESOURCE_MEM || hp_elog->resource == PSERIES_HP_ELOG_RESOURCE_CPU || hp_elog->resource == PSERIES_HP_ELOG_RESOURCE_PMEM) queue_hotplug_event(hp_elog); else log_error(ras_log_buf, ERR_TYPE_RTAS_LOG, 0); spin_unlock(&ras_log_buf_lock); return IRQ_HANDLED;}
开发者ID:150balbes,项目名称:Amlogic_s905-kernel,代码行数:30,
示例3: ps3_connect_event_irqint ps3_connect_event_irq(const struct ps3_device_id *did, unsigned int interrupt_id, unsigned int *virq){ int result; result = ps3_alloc_event_irq(virq); if (result) return result; result = lv1_connect_interrupt_event_receive_port(did->bus_id, did->dev_id, virq_to_hw(*virq), interrupt_id); if (result) { pr_debug("%s:%d: lv1_connect_interrupt_event_receive_port" " failed: %s/n", __func__, __LINE__, ps3_result(result)); ps3_free_event_irq(*virq); *virq = NO_IRQ; return result; } pr_debug("%s:%d: interrupt_id %u, virq %u/n", __func__, __LINE__, interrupt_id, *virq); return 0;}
开发者ID:ivucica,项目名称:linux,代码行数:27,
示例4: ps3_sb_event_receive_port_destroyint ps3_sb_event_receive_port_destroy(struct ps3_system_bus_device *dev, unsigned int virq){ /* */ int result; DBG(" -> %s:%d: interrupt_id %u, virq %u/n", __func__, __LINE__, dev->interrupt_id, virq); result = lv1_disconnect_interrupt_event_receive_port(dev->bus_id, dev->dev_id, virq_to_hw(virq), dev->interrupt_id); if (result) FAIL("%s:%d: lv1_disconnect_interrupt_event_receive_port" " failed: %s/n", __func__, __LINE__, ps3_result(result)); result = ps3_event_receive_port_destroy(virq); BUG_ON(result); /* */ result = ps3_virq_destroy(virq); BUG_ON(result); DBG(" <- %s:%d/n", __func__, __LINE__); return result;}
开发者ID:romanbb,项目名称:android_kernel_lge_d851,代码行数:32,
示例5: ps3_sb_event_receive_port_destroyint ps3_sb_event_receive_port_destroy(struct ps3_system_bus_device *dev, unsigned int virq){ /* this should go in system-bus.c */ int result; pr_debug(" -> %s:%d: interrupt_id %u, virq %u/n", __func__, __LINE__, dev->interrupt_id, virq); result = lv1_disconnect_interrupt_event_receive_port(dev->bus_id, dev->dev_id, virq_to_hw(virq), dev->interrupt_id); if (result) pr_debug("%s:%d: lv1_disconnect_interrupt_event_receive_port" " failed: %s/n", __func__, __LINE__, ps3_result(result)); result = ps3_event_receive_port_destroy(virq); BUG_ON(result); /* * ps3_event_receive_port_destroy() destroys the IRQ plug, * so don't call ps3_irq_plug_destroy() here. */ result = ps3_virq_destroy(virq); BUG_ON(result); pr_debug(" <- %s:%d/n", __func__, __LINE__); return result;}
开发者ID:119-org,项目名称:hi3518-osdrv,代码行数:32,
示例6: xilinx_intc_mask/* * The interrupt controller is setup such that it doesn't work well with * the level interrupt handler in the kernel because the handler acks the * interrupt before calling the application interrupt handler. To deal with * that, we use 2 different irq chips so that different functions can be * used for level and edge type interrupts. * * IRQ Chip common (across level and edge) operations */static void xilinx_intc_mask(unsigned int virq){ int irq = virq_to_hw(virq); void * regs = get_irq_chip_data(virq); pr_debug("mask: %d/n", irq); out_be32(regs + XINTC_CIE, 1 << irq);}
开发者ID:mikuhatsune001,项目名称:linux2.6.32,代码行数:16,
示例7: ras_epow_interrupt/* Handle environmental and power warning (EPOW) interrupts. */static irqreturn_t ras_epow_interrupt(int irq, void *dev_id){ int status; int state; int critical; status = rtas_get_sensor_fast(EPOW_SENSOR_TOKEN, EPOW_SENSOR_INDEX, &state); if (state > 3) critical = 1; /* Time Critical */ else critical = 0; spin_lock(&ras_log_buf_lock); status = rtas_call(ras_check_exception_token, 6, 1, NULL, RTAS_VECTOR_EXTERNAL_INTERRUPT, virq_to_hw(irq), RTAS_EPOW_WARNING, critical, __pa(&ras_log_buf), rtas_get_error_log_max()); log_error(ras_log_buf, ERR_TYPE_RTAS_LOG, 0); rtas_parse_epow_errlog((struct rtas_error_log *)ras_log_buf); spin_unlock(&ras_log_buf_lock); return IRQ_HANDLED;}
开发者ID:150balbes,项目名称:Amlogic_s905-kernel,代码行数:31,
示例8: xilinx_intc_edge_ackstatic void xilinx_intc_edge_ack(unsigned int virq){ int irq = virq_to_hw(virq); void * regs = get_irq_chip_data(virq); pr_debug("ack: %d/n", irq); out_be32(regs + XINTC_IAR, 1 << irq);}
开发者ID:mikuhatsune001,项目名称:linux2.6.32,代码行数:7,
示例9: ps3_sb_event_receive_port_setupint ps3_sb_event_receive_port_setup(struct ps3_system_bus_device *dev, enum ps3_cpu_binding cpu, unsigned int *virq){ /* this should go in system-bus.c */ int result; result = ps3_event_receive_port_setup(cpu, virq); if (result) return result; result = lv1_connect_interrupt_event_receive_port(dev->bus_id, dev->dev_id, virq_to_hw(*virq), dev->interrupt_id); if (result) { pr_debug("%s:%d: lv1_connect_interrupt_event_receive_port" " failed: %s/n", __func__, __LINE__, ps3_result(result)); ps3_event_receive_port_destroy(*virq); *virq = NO_IRQ; return result; } pr_debug("%s:%d: interrupt_id %u, virq %u/n", __func__, __LINE__, dev->interrupt_id, *virq); return 0;}
开发者ID:119-org,项目名称:hi3518-osdrv,代码行数:29,
示例10: flipper_pic_unmaskstatic void flipper_pic_unmask(unsigned int virq){ int irq = virq_to_hw(virq); void __iomem *io_base = get_irq_chip_data(virq); setbits32(io_base + FLIPPER_IMR, 1 << irq);}
开发者ID:12019,项目名称:linux-2.6.34-ts471x,代码行数:7,
示例11: cpm2_set_irq_typestatic int cpm2_set_irq_type(unsigned int virq, unsigned int flow_type){ unsigned int src = virq_to_hw(virq); struct irq_desc *desc = irq_to_desc(virq); unsigned int vold, vnew, edibit; /* Port C interrupts are either IRQ_TYPE_EDGE_FALLING or * IRQ_TYPE_EDGE_BOTH (default). All others are IRQ_TYPE_EDGE_FALLING * or IRQ_TYPE_LEVEL_LOW (default) */ if (src >= CPM2_IRQ_PORTC15 && src <= CPM2_IRQ_PORTC0) { if (flow_type == IRQ_TYPE_NONE) flow_type = IRQ_TYPE_EDGE_BOTH; if (flow_type != IRQ_TYPE_EDGE_BOTH && flow_type != IRQ_TYPE_EDGE_FALLING) goto err_sense; } else { if (flow_type == IRQ_TYPE_NONE) flow_type = IRQ_TYPE_LEVEL_LOW; if (flow_type & (IRQ_TYPE_EDGE_RISING | IRQ_TYPE_LEVEL_HIGH)) goto err_sense; } desc->status &= ~(IRQ_TYPE_SENSE_MASK | IRQ_LEVEL); desc->status |= flow_type & IRQ_TYPE_SENSE_MASK; if (flow_type & IRQ_TYPE_LEVEL_LOW) { desc->status |= IRQ_LEVEL; desc->handle_irq = handle_level_irq; } else desc->handle_irq = handle_edge_irq; /* internal IRQ senses are LEVEL_LOW * EXT IRQ and Port C IRQ senses are programmable */ if (src >= CPM2_IRQ_EXT1 && src <= CPM2_IRQ_EXT7) edibit = (14 - (src - CPM2_IRQ_EXT1)); else if (src >= CPM2_IRQ_PORTC15 && src <= CPM2_IRQ_PORTC0) edibit = (31 - (CPM2_IRQ_PORTC0 - src)); else return (flow_type & IRQ_TYPE_LEVEL_LOW) ? 0 : -EINVAL; vold = in_be32(&cpm2_intctl->ic_siexr); if ((flow_type & IRQ_TYPE_SENSE_MASK) == IRQ_TYPE_EDGE_FALLING) vnew = vold | (1 << edibit); else vnew = vold & ~(1 << edibit); if (vold != vnew) out_be32(&cpm2_intctl->ic_siexr, vnew); return 0;err_sense: pr_err("CPM2 PIC: sense type 0x%x not supported/n", flow_type); return -EINVAL;}
开发者ID:Medvedroid,项目名称:OT_903D-kernel-2.6.35.7,代码行数:59,
示例12: flipper_pic_ackstatic void flipper_pic_ack(unsigned int virq){ int irq = virq_to_hw(virq); void __iomem *io_base = get_irq_chip_data(virq); /* this is at least needed for RSW */ out_be32(io_base + FLIPPER_ICR, 1 << irq);}
开发者ID:12019,项目名称:linux-2.6.34-ts471x,代码行数:8,
示例13: opal_interruptstatic irqreturn_t opal_interrupt(int irq, void *data){ uint64_t events; opal_handle_interrupt(virq_to_hw(irq), &events); /* XXX TODO: Do something with the events */ return IRQ_HANDLED;}
开发者ID:AudioGod,项目名称:Gods_kernel_yu_msm8916,代码行数:10,
示例14: flipper_pic_mask_and_ackstatic void flipper_pic_mask_and_ack(unsigned int virq){ int irq = virq_to_hw(virq); void __iomem *io_base = get_irq_chip_data(virq); u32 mask = 1 << irq; clrbits32(io_base + FLIPPER_IMR, mask); /* this is at least needed for RSW */ out_be32(io_base + FLIPPER_ICR, mask);}
开发者ID:12019,项目名称:linux-2.6.34-ts471x,代码行数:10,
示例15: opal_interruptstatic irqreturn_t opal_interrupt(int irq, void *data){ __be64 events; opal_handle_interrupt(virq_to_hw(irq), &events); opal_do_notifier(events); return IRQ_HANDLED;}
开发者ID:AnadoluPanteri,项目名称:kernel-plus-harmattan,代码行数:10,
示例16: cpm2_ackstatic void cpm2_ack(unsigned int virq){ int bit, word; unsigned int irq_nr = virq_to_hw(virq); bit = irq_to_siubit[irq_nr]; word = irq_to_siureg[irq_nr]; out_be32(&cpm2_intctl->ic_sipnrh + word, 1 << bit);}
开发者ID:Medvedroid,项目名称:OT_903D-kernel-2.6.35.7,代码行数:10,
示例17: opal_interruptstatic irqreturn_t opal_interrupt(int irq, void *data){ __be64 events; opal_handle_interrupt(virq_to_hw(irq), &events); last_outstanding_events = be64_to_cpu(events); if (opal_have_pending_events()) opal_wake_poller(); return IRQ_HANDLED;}
开发者ID:CCNITSilchar,项目名称:linux,代码行数:11,
示例18: cpm2_unmask_irqstatic void cpm2_unmask_irq(unsigned int virq){ int bit, word; unsigned int irq_nr = virq_to_hw(virq); bit = irq_to_siubit[irq_nr]; word = irq_to_siureg[irq_nr]; ppc_cached_irq_mask[word] |= 1 << bit; out_be32(&cpm2_intctl->ic_simrh + word, ppc_cached_irq_mask[word]);}
开发者ID:Medvedroid,项目名称:OT_903D-kernel-2.6.35.7,代码行数:11,
示例19: xilinx_intc_level_unmask/* * IRQ Chip level operations */static void xilinx_intc_level_unmask(unsigned int virq){ int irq = virq_to_hw(virq); void * regs = get_irq_chip_data(virq); pr_debug("unmask: %d/n", irq); out_be32(regs + XINTC_SIE, 1 << irq); /* ack level irqs because they can't be acked during * ack function since the handle_level_irq function * acks the irq before calling the inerrupt handler */ out_be32(regs + XINTC_IAR, 1 << irq);}
开发者ID:mikuhatsune001,项目名称:linux2.6.32,代码行数:16,
示例20: pq2ads_pci_unmask_irqstatic void pq2ads_pci_unmask_irq(unsigned int virq){ struct pq2ads_pci_pic *priv = get_irq_chip_data(virq); int irq = NUM_IRQS - virq_to_hw(virq) - 1; if (irq != -1) { unsigned long flags; spin_lock_irqsave(&pci_pic_lock, flags); clrbits32(&priv->regs->mask, 1 << irq); spin_unlock_irqrestore(&pci_pic_lock, flags); }}
开发者ID:458941968,项目名称:mini2440-kernel-2.6.29,代码行数:13,
示例21: ps3_free_io_irqint ps3_free_io_irq(unsigned int virq){ int result; result = lv1_destruct_io_irq_outlet(virq_to_hw(virq)); if (result) pr_debug("%s:%d: lv1_destruct_io_irq_outlet failed: %s/n", __func__, __LINE__, ps3_result(result)); irq_dispose_mapping(virq); return result;}
开发者ID:ivucica,项目名称:linux,代码行数:14,
示例22: ehv_pic_set_affinityint ehv_pic_set_affinity(struct irq_data *d, const struct cpumask *dest, bool force){ unsigned int src = virq_to_hw(d->irq); unsigned int config, prio, cpu_dest; int cpuid = irq_choose_cpu(dest); unsigned long flags; spin_lock_irqsave(&ehv_pic_lock, flags); ev_int_get_config(src, &config, &prio, &cpu_dest); ev_int_set_config(src, config, prio, cpuid); spin_unlock_irqrestore(&ehv_pic_lock, flags); return IRQ_SET_MASK_OK;}
开发者ID:01org,项目名称:thunderbolt-software-kernel-tree,代码行数:15,
示例23: ps3_io_irq_destroyint ps3_io_irq_destroy(unsigned int virq){ int result; result = lv1_destruct_io_irq_outlet(virq_to_hw(virq)); if (result) pr_debug("%s:%d: lv1_destruct_io_irq_outlet failed: %s/n", __func__, __LINE__, ps3_result(result)); result = ps3_irq_plug_destroy(virq); BUG_ON(result); return result;}
开发者ID:3sOx,项目名称:asuswrt-merlin,代码行数:15,
示例24: ps3_free_event_irqint ps3_free_event_irq(unsigned int virq){ int result; pr_debug(" -> %s:%d/n", __func__, __LINE__); result = lv1_destruct_event_receive_port(virq_to_hw(virq)); if (result) pr_debug("%s:%d: lv1_destruct_event_receive_port failed: %s/n", __func__, __LINE__, ps3_result(result)); irq_dispose_mapping(virq); pr_debug(" <- %s:%d/n", __func__, __LINE__); return result;}
开发者ID:ivucica,项目名称:linux,代码行数:17,
示例25: cpm2_set_irq_typestatic int cpm2_set_irq_type(unsigned int virq, unsigned int flow_type){ unsigned int src = virq_to_hw(virq); struct irq_desc *desc = get_irq_desc(virq); unsigned int vold, vnew, edibit; if (flow_type == IRQ_TYPE_NONE) flow_type = IRQ_TYPE_LEVEL_LOW; if (flow_type & IRQ_TYPE_EDGE_RISING) { printk(KERN_ERR "CPM2 PIC: sense type 0x%x not supported/n", flow_type); return -EINVAL; } desc->status &= ~(IRQ_TYPE_SENSE_MASK | IRQ_LEVEL); desc->status |= flow_type & IRQ_TYPE_SENSE_MASK; if (flow_type & IRQ_TYPE_LEVEL_LOW) { desc->status |= IRQ_LEVEL; desc->handle_irq = handle_level_irq; } else desc->handle_irq = handle_edge_irq; /* internal IRQ senses are LEVEL_LOW * EXT IRQ and Port C IRQ senses are programmable */ if (src >= CPM2_IRQ_EXT1 && src <= CPM2_IRQ_EXT7) edibit = (14 - (src - CPM2_IRQ_EXT1)); else if (src >= CPM2_IRQ_PORTC15 && src <= CPM2_IRQ_PORTC0) edibit = (31 - (src - CPM2_IRQ_PORTC15)); else return (flow_type & IRQ_TYPE_LEVEL_LOW) ? 0 : -EINVAL; vold = in_be32(&cpm2_intctl->ic_siexr); if ((flow_type & IRQ_TYPE_SENSE_MASK) == IRQ_TYPE_EDGE_FALLING) vnew = vold | (1 << edibit); else vnew = vold & ~(1 << edibit); if (vold != vnew) out_be32(&cpm2_intctl->ic_siexr, vnew); return 0;}
开发者ID:274914765,项目名称:C,代码行数:45,
示例26: ics_rtas_mapstatic int ics_rtas_map(struct ics *ics, unsigned int virq){ unsigned int hw_irq = (unsigned int)virq_to_hw(virq); int status[2]; int rc; if (WARN_ON(hw_irq == XICS_IPI || hw_irq == XICS_IRQ_SPURIOUS)) return -EINVAL; /* Check if RTAS knows about this interrupt */ rc = rtas_call(ibm_get_xive, 1, 3, status, hw_irq); if (rc) return -ENXIO; irq_set_chip_and_handler(virq, &ics_rtas_irq_chip, handle_fasteoi_irq); irq_set_chip_data(virq, &ics_rtas); return 0;}
开发者ID:0x000000FF,项目名称:edison-linux,代码行数:19,
示例27: cpm2_end_irqstatic void cpm2_end_irq(unsigned int virq){ struct irq_desc *desc; int bit, word; unsigned int irq_nr = virq_to_hw(virq); desc = irq_to_desc(irq_nr); if (!(desc->status & (IRQ_DISABLED|IRQ_INPROGRESS)) && desc->action) { bit = irq_to_siubit[irq_nr]; word = irq_to_siureg[irq_nr]; ppc_cached_irq_mask[word] |= 1 << bit; out_be32(&cpm2_intctl->ic_simrh + word, ppc_cached_irq_mask[word]); mb(); }}
开发者ID:1703011,项目名称:asuswrt-merlin,代码行数:19,
示例28: ics_opal_mapstatic int ics_opal_map(struct ics *ics, unsigned int virq){ unsigned int hw_irq = (unsigned int)virq_to_hw(virq); int64_t rc; int16_t server; int8_t priority; if (WARN_ON(hw_irq == XICS_IPI || hw_irq == XICS_IRQ_SPURIOUS)) return -EINVAL; rc = opal_get_xive(hw_irq, &server, &priority); if (rc != OPAL_SUCCESS) return -ENXIO; irq_set_chip_and_handler(virq, &ics_opal_irq_chip, handle_fasteoi_irq); irq_set_chip_data(virq, &ics_hal); return 0;}
开发者ID:Blackburn29,项目名称:PsycoKernel,代码行数:20,
示例29: cpm2_end_irqstatic void cpm2_end_irq(unsigned int virq){ int bit, word; unsigned int irq_nr = virq_to_hw(virq); if (!(irq_desc[irq_nr].status & (IRQ_DISABLED|IRQ_INPROGRESS)) && irq_desc[irq_nr].action) { bit = irq_to_siubit[irq_nr]; word = irq_to_siureg[irq_nr]; ppc_cached_irq_mask[word] |= 1 << bit; out_be32(&cpm2_intctl->ic_simrh + word, ppc_cached_irq_mask[word]); /* * Work around large numbers of spurious IRQs on PowerPC 82xx * systems. */ mb(); }}
开发者ID:274914765,项目名称:C,代码行数:21,
示例30: ps3_disconnect_event_irqint ps3_disconnect_event_irq(const struct ps3_device_id *did, unsigned int interrupt_id, unsigned int virq){ int result; pr_debug(" -> %s:%d: interrupt_id %u, virq %u/n", __func__, __LINE__, interrupt_id, virq); result = lv1_disconnect_interrupt_event_receive_port(did->bus_id, did->dev_id, virq_to_hw(virq), interrupt_id); if (result) pr_debug("%s:%d: lv1_disconnect_interrupt_event_receive_port" " failed: %s/n", __func__, __LINE__, ps3_result(result)); ps3_free_event_irq(virq); pr_debug(" <- %s:%d/n", __func__, __LINE__); return result;}
开发者ID:ivucica,项目名称:linux,代码行数:21,
注:本文中的virq_to_hw函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 C++ virtGetErrorCode函数代码示例 C++ virXPathString函数代码示例 |