/linux/virt/lib/ |
H A D | irqbypass.c | 56 cons->producer = prod; in __connect() 81 cons->producer = NULL; in __disconnect() 85 * irq_bypass_register_producer - register IRQ bypass producer 86 * @producer: pointer to producer structure 87 * @eventfd: pointer to the eventfd context associated with the producer 88 * @irq: Linux IRQ number of the underlying producer device 90 * Add the provided IRQ producer to the set of producers and connect with the 93 int irq_bypass_register_producer(struct irq_bypass_producer *producer, in irq_bypass_register_producer() argument 100 if (WARN_ON_ONCE(producer in irq_bypass_register_producer() 133 irq_bypass_unregister_producer(struct irq_bypass_producer * producer) irq_bypass_unregister_producer() argument 162 struct irq_bypass_producer *producer; irq_bypass_register_consumer() local [all...] |
/linux/tools/testing/selftests/bpf/benchs/ |
H A D | bench_rename.c | 17 fprintf(stderr, "benchmark doesn't support multi-producer!\n"); in validate() 26 static void *producer(void *input) in producer() function 113 .producer_thread = producer, 123 .producer_thread = producer, 133 .producer_thread = producer, 143 .producer_thread = producer, 153 .producer_thread = producer, 163 .producer_thread = producer,
|
H A D | bench_bloom_filter_map.c | 122 static void *producer(void *input) in producer() function 429 .producer_thread = producer, 440 .producer_thread = producer, 451 .producer_thread = producer, 462 .producer_thread = producer, 473 .producer_thread = producer,
|
H A D | bench_local_storage.c | 74 fprintf(stderr, "benchmark doesn't support multi-producer!\n"); in validate() 233 static void *producer(void *input) in producer() function 256 .producer_thread = producer, 267 .producer_thread = producer, 278 .producer_thread = producer,
|
H A D | bench_bpf_loop.c | 56 static void *producer(void *input) in producer() function 96 .producer_thread = producer,
|
H A D | bench_bpf_hashmap_full_update.c | 23 static void *producer(void *input) in producer() function 85 .producer_thread = producer,
|
H A D | bench_local_storage_rcu_tasks_trace.c | 72 fprintf(stderr, "benchmark doesn't support multi-producer!\n"); in validate() 200 static void *producer(void *input) in producer() function 259 .producer_thread = producer,
|
H A D | bench_local_storage_create.c | 196 static void *producer(void *input) in producer() function 254 .producer_thread = producer,
|
H A D | bench_bpf_hashmap_lookup.c | 128 static void *producer(void *input) in producer() function 273 .producer_thread = producer,
|
/linux/include/linux/ |
H A D | ptr_ring.h | 14 * single producer and a single consumer CPU. 31 int producer ____cacheline_aligned_in_smp; 36 /* Shared consumer/producer data */ 37 /* Read-only by both the producer and the consumer */ 51 return r->queue[r->producer]; in __ptr_ring_full() 106 if (unlikely(!r->size) || r->queue[r->producer]) in __ptr_ring_produce() 113 WRITE_ONCE(r->queue[r->producer++], ptr); in __ptr_ring_produce() 114 if (unlikely(r->producer >= r->size)) in __ptr_ring_produce() 115 r->producer = 0; in __ptr_ring_produce() 120 * Note: resize (below) nests producer loc 563 int producer = 0; __ptr_ring_swap_queue() local [all...] |
H A D | irqbypass.h | 23 * When a producer and consumer are paired, i.e. an eventfd match is found, the 28 * the @add_* callbacks. eventfds must be unique per producer/consumer, 1:N 35 * struct irq_bypass_producer - IRQ bypass producer definition 38 * @irq: Linux IRQ number for the producer device 39 * @add_consumer: Connect the IRQ producer to an IRQ consumer (optional) 40 * @del_consumer: Disconnect the IRQ producer from an IRQ consumer (optional) 44 * The IRQ bypass producer structure represents an interrupt source for 63 * @producer: The connected producer (NULL if no connection) 64 * @add_producer: Connect the IRQ consumer to an IRQ producer 76 struct irq_bypass_producer *producer; global() member [all...] |
H A D | kvm_irqfd.h | 60 struct irq_bypass_producer *producer; member
|
/linux/drivers/net/ethernet/qlogic/qlcnic/ |
H A D | qlcnic_io.c | 277 u32 producer; in qlcnic_82xx_change_filter() local 280 producer = tx_ring->producer; in qlcnic_82xx_change_filter() 281 hwdesc = &tx_ring->desc_head[tx_ring->producer]; in qlcnic_82xx_change_filter() 297 tx_ring->producer = get_next_index(producer, tx_ring->num_desc); in qlcnic_82xx_change_filter() 377 u32 producer = tx_ring->producer; in qlcnic_tx_encap_pkt() local 407 hwdesc = &tx_ring->desc_head[producer]; in qlcnic_tx_encap_pkt() 408 tx_ring->cmd_buf_arr[producer] in qlcnic_tx_encap_pkt() 467 u32 producer = tx_ring->producer; qlcnic_tx_pkt() local 658 u32 producer, num_txd; qlcnic_xmit_frame() local 850 uint32_t producer, handle; qlcnic_post_rx_buffers_nodb() local 1443 u32 producer, handle; qlcnic_post_rx_buffers() local [all...] |
/linux/kernel/trace/ |
H A D | ring_buffer_benchmark.c | 33 static struct task_struct *producer; variable 39 MODULE_PARM_DESC(disable_reader, "only run producer"); 52 MODULE_PARM_DESC(producer_nice, "nice prio for producer"); 58 MODULE_PARM_DESC(producer_fifo, "use fifo for producer: 0 - disabled, 1 - low prio, 2 - fifo"); 191 * Continue running until the producer specifically asks to stop in ring_buffer_consumer() 218 /* Wait till the producer wakes us up when there is more data in ring_buffer_consumer() 219 * available or when the producer wants us to finish reading. in ring_buffer_consumer() 449 producer = kthread_run(ring_buffer_producer_thread, in ring_buffer_benchmark_init() 451 ret = PTR_ERR(producer); in ring_buffer_benchmark_init() 453 if (IS_ERR(producer)) in ring_buffer_benchmark_init() [all...] |
/linux/Documentation/core-api/ |
H A D | circular-buffers.rst | 15 (2) Memory barriers for when the producer and the consumer of objects in the 19 producer and just one consumer. It is possible to handle multiple producers by 30 - The producer. 41 (1) A 'head' index - the point at which the producer inserts items into the 113 (1) CIRC_SPACE*() are intended to be used in the producer. To the producer 114 they will return a lower bound as the producer controls the head index, 118 To the consumer it will show an upper bound as the producer may be busy 123 producer may still be filling the buffer on another CPU and moving the 126 To the producer i [all...] |
/linux/net/xdp/ |
H A D | xsk_queue.h | 17 u32 producer ____cacheline_aligned_in_smp; 19 * pointer if the producer pointer is touched and vice versa. 59 * completion ring, the kernel is the producer and user space is the 61 * user space is the producer. 63 * producer consumer 65 * if (LOAD ->consumer) { (A) LOAD.acq ->producer (C) 67 * STORE.rel ->producer (B) STORE.rel ->consumer (D) 73 * the producer pointer. If this barrier was missing, the consumer 74 * could observe the producer pointer being set and thus load the data 75 * before the producer ha [all...] |
H A D | xsk.h | 15 __u64 producer; member
|
/linux/tools/testing/selftests/bpf/ |
H A D | xsk.h | 33 __u32 *producer; \ 111 r->cached_prod = __atomic_load_n(r->producer, __ATOMIC_ACQUIRE); in xsk_cons_nb_avail() 132 * this to the kernel by writing the producer pointer. in xsk_ring_prod__submit() 134 __atomic_store_n(prod->producer, *prod->producer + nb, __ATOMIC_RELEASE); in xsk_ring_prod__submit()
|
H A D | xsk.c | 195 fill->producer = map + off.fr.producer; in xsk_create_umem_rings() 211 comp->producer = map + off.cr.producer; in xsk_create_umem_rings() 636 rx->producer = rx_map + off.rx.producer; in xsk_socket__create_shared() 640 rx->cached_prod = *rx->producer; in xsk_socket__create_shared() 657 tx->producer = tx_map + off.tx.producer; in xsk_socket__create_shared() 661 tx->cached_prod = *tx->producer; in xsk_socket__create_shared() [all...] |
/linux/drivers/mailbox/ |
H A D | tegra-hsp.c | 80 bool producer; member 244 if (mb->producer) { in tegra_hsp_shared_irq() 270 if (!mb->producer) in tegra_hsp_shared_irq() 469 if (WARN_ON(!mb->producer)) in tegra_hsp_mailbox_send_data() 534 if (mb->producer) in tegra_hsp_mailbox_startup() 544 if (mb->producer) in tegra_hsp_mailbox_startup() 563 if (mb->producer) in tegra_hsp_mailbox_shutdown() 573 if (mb->producer) in tegra_hsp_mailbox_shutdown() 654 mb->producer = false; in tegra_hsp_sm_xlate() 656 mb->producer in tegra_hsp_sm_xlate() [all...] |
/linux/Documentation/gpu/amdgpu/gc/ |
H A D | index.rst | 8 producer-consumer problem, where the CPU fills out a buffer with operations 9 (producer) to be executed by the GPU (consumer). The requested operations in
|
/linux/arch/x86/kvm/ |
H A D | irq.c | 514 unsigned int host_irq = irqfd->producer->irq; in kvm_pi_update_irte() 569 irqfd->producer = prod; in kvm_arch_irq_bypass_add_producer() 592 WARN_ON(irqfd->producer != prod); in kvm_arch_irq_bypass_del_producer() 595 * If the producer of an IRQ that is currently being posted to a vCPU in kvm_arch_irq_bypass_del_producer() 608 irqfd->producer = NULL; in kvm_arch_irq_bypass_del_producer()
|
/linux/include/uapi/linux/ |
H A D | if_xdp.h | 60 __u64 producer; member
|
/linux/tools/include/uapi/linux/ |
H A D | if_xdp.h | 60 __u64 producer; member
|
/linux/Documentation/driver-api/ |
H A D | sync_file.rst | 14 of attaching a fence to the buffer a producer driver (such as a GPU or V4L 21 producer part of the cycle.
|