| /kernel/linux/linux-6.6/virt/lib/ |
| D | irqbypass.c | 78 * irq_bypass_register_producer - register IRQ bypass producer 79 * @producer: pointer to producer structure 81 * Add the provided IRQ producer to the list of producers and connect 84 int irq_bypass_register_producer(struct irq_bypass_producer *producer) in irq_bypass_register_producer() argument 90 if (!producer->token) in irq_bypass_register_producer() 101 if (tmp->token == producer->token) { in irq_bypass_register_producer() 108 if (consumer->token == producer->token) { in irq_bypass_register_producer() 109 ret = __connect(producer, consumer); in irq_bypass_register_producer() 116 list_add(&producer->node, &producers); in irq_bypass_register_producer() 129 * irq_bypass_unregister_producer - unregister IRQ bypass producer [all …]
|
| /kernel/linux/linux-5.10/virt/lib/ |
| D | irqbypass.c | 78 * irq_bypass_register_producer - register IRQ bypass producer 79 * @producer: pointer to producer structure 81 * Add the provided IRQ producer to the list of producers and connect 84 int irq_bypass_register_producer(struct irq_bypass_producer *producer) in irq_bypass_register_producer() argument 90 if (!producer->token) in irq_bypass_register_producer() 101 if (tmp->token == producer->token) { in irq_bypass_register_producer() 108 if (consumer->token == producer->token) { in irq_bypass_register_producer() 109 ret = __connect(producer, consumer); in irq_bypass_register_producer() 116 list_add(&producer->node, &producers); in irq_bypass_register_producer() 129 * irq_bypass_unregister_producer - unregister IRQ bypass producer [all …]
|
| /kernel/linux/linux-5.10/net/xdp/ |
| D | xsk_queue.h | 17 u32 producer ____cacheline_aligned_in_smp; 19 * pointer if the producer pointer is touched and vice versa. 50 * ring, the kernel is the producer and user space is the consumer. For 52 * the producer. 54 * producer consumer 56 * if (LOAD ->consumer) { LOAD ->producer 60 * STORE ->producer STORE ->consumer 66 * the producer pointer. If this barrier was missing, the consumer 67 * could observe the producer pointer being set and thus load the data 68 * before the producer has written the new data. The consumer would in [all …]
|
| /kernel/linux/linux-6.6/net/xdp/ |
| 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 has written the new data. The consumer would in [all …]
|
| /kernel/linux/linux-6.6/include/linux/ |
| D | irqbypass.h | 27 * callbacks. Match tokens must be unique per producer/consumer, 1:N pairings 32 * struct irq_bypass_producer - IRQ bypass producer definition 34 * @token: opaque token to match between producer and consumer (non-NULL) 35 * @irq: Linux IRQ number for the producer device 36 * @add_consumer: Connect the IRQ producer to an IRQ consumer (optional) 37 * @del_consumer: Disconnect the IRQ producer from an IRQ consumer (optional) 41 * The IRQ bypass producer structure represents an interrupt source for 60 * @token: opaque token to match between producer and consumer (non-NULL) 61 * @add_producer: Connect the IRQ consumer to an IRQ producer 62 * @del_producer: Disconnect the IRQ consumer from an IRQ producer
|
| 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 lock within consumer lock, so if you [all …]
|
| D | clk.h | 188 * producer 206 * producer 356 * clk_get - lookup and obtain a reference to a clock producer. 360 * Returns a struct clk corresponding to the clock producer, or 363 * the clock producer. (IOW, @id may be identical strings, but 373 * clk_bulk_get - lookup and obtain a number of references to clock producer. 385 * clock consumer, and thereby the clock producer. 396 * producer. 416 * clk_bulk_get_optional - lookup and obtain a number of references to clock producer 421 * Behaves the same as clk_bulk_get() except where there is no clock producer. [all …]
|
| /kernel/linux/linux-5.10/include/linux/ |
| D | irqbypass.h | 27 * callbacks. Match tokens must be unique per producer/consumer, 1:N pairings 32 * struct irq_bypass_producer - IRQ bypass producer definition 34 * @token: opaque token to match between producer and consumer (non-NULL) 35 * @irq: Linux IRQ number for the producer device 36 * @add_consumer: Connect the IRQ producer to an IRQ consumer (optional) 37 * @del_consumer: Disconnect the IRQ producer from an IRQ consumer (optional) 41 * The IRQ bypass producer structure represents an interrupt source for 60 * @token: opaque token to match between producer and consumer (non-NULL) 61 * @add_producer: Connect the IRQ consumer to an IRQ producer 62 * @del_producer: Disconnect the IRQ consumer from an IRQ producer
|
| 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 lock within consumer lock, so if you [all …]
|
| D | clk.h | 177 * producer 195 * producer 316 * clk_get - lookup and obtain a reference to a clock producer. 320 * Returns a struct clk corresponding to the clock producer, or 323 * the clock producer. (IOW, @id may be identical strings, but 333 * clk_bulk_get - lookup and obtain a number of references to clock producer. 345 * clock consumer, and thereby the clock producer. 356 * producer. 376 * clk_bulk_get_optional - lookup and obtain a number of references to clock producer 381 * Behaves the same as clk_bulk_get() except where there is no clock producer. [all …]
|
| /kernel/linux/linux-6.6/Documentation/core-api/ |
| 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 it will show an upper bound as the consumer may be busy 130 producer and consumer become visible cannot be guaranteed as they are [all …]
|
| /kernel/linux/linux-5.10/Documentation/core-api/ |
| 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 it will show an upper bound as the consumer may be busy 130 producer and consumer become visible cannot be guaranteed as they are [all …]
|
| /kernel/linux/linux-6.6/drivers/mmc/host/ |
| D | mmci_qcom_dml.c | 59 /* Read operation: configure DML for producer operation */ in qcom_dma_start() 60 /* Set producer CRCI-x and disable consumer CRCI */ in qcom_dma_start() 66 /* Set the Producer BAM block size */ in qcom_dma_start() 69 /* Set Producer BAM Transaction size */ in qcom_dma_start() 72 /* Set Producer Transaction End bit */ in qcom_dma_start() 76 /* Trigger producer */ in qcom_dma_start() 80 /* Set consumer CRCI-x and disable producer CRCI*/ in qcom_dma_start() 85 /* Clear Producer Transaction End bit */ in qcom_dma_start() 142 /* Disable the producer and consumer CRCI */ in qcom_dma_setup() 164 * Initialize the logical BAM pipe size for producer in qcom_dma_setup() [all …]
|
| /kernel/linux/linux-5.10/drivers/mmc/host/ |
| D | mmci_qcom_dml.c | 59 /* Read operation: configure DML for producer operation */ in qcom_dma_start() 60 /* Set producer CRCI-x and disable consumer CRCI */ in qcom_dma_start() 66 /* Set the Producer BAM block size */ in qcom_dma_start() 69 /* Set Producer BAM Transaction size */ in qcom_dma_start() 72 /* Set Producer Transaction End bit */ in qcom_dma_start() 76 /* Trigger producer */ in qcom_dma_start() 80 /* Set consumer CRCI-x and disable producer CRCI*/ in qcom_dma_start() 85 /* Clear Producer Transaction End bit */ in qcom_dma_start() 142 /* Disable the producer and consumer CRCI */ in qcom_dma_setup() 164 * Initialize the logical BAM pipe size for producer in qcom_dma_setup() [all …]
|
| /kernel/linux/linux-6.6/tools/testing/selftests/bpf/benchs/ |
| D | run_bench_ringbufs.sh | 9 header "Single-producer, parallel producer" 14 header "Single-producer, parallel producer, sampled notification" 19 header "Single-producer, back-to-back mode" 42 header "Single-producer, consumer/producer competing on the same CPU, low batch count" 47 header "Ringbuf, multi-producer contention"
|
| 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,
|
| /kernel/linux/linux-5.10/Documentation/devicetree/bindings/net/ |
| D | mdio-mux-multiplexer.txt | 4 of a mux producer device. The mux producer can be of any type like mmio mux 5 producer, gpio mux producer or generic register based mux producer. 21 In below example the Mux producer and consumer are separate nodes. 29 mux: mux-controller { // Mux Producer
|
| /kernel/linux/linux-6.6/kernel/trace/ |
| 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"); 189 * Continue running until the producer specifically asks to stop in ring_buffer_consumer() 216 /* Wait till the producer wakes us up when there is more data in ring_buffer_consumer() 217 * available or when the producer wants us to finish reading. in ring_buffer_consumer() 314 trace_printk("Running Producer at SCHED_FIFO %s\n", in ring_buffer_producer() 317 trace_printk("Running Producer at nice: %d\n", in ring_buffer_producer() 447 producer = kthread_run(ring_buffer_producer_thread, in ring_buffer_benchmark_init() [all …]
|
| /kernel/linux/linux-5.10/kernel/trace/ |
| 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"); 189 * Continue running until the producer specifically asks to stop in ring_buffer_consumer() 216 /* Wait till the producer wakes us up when there is more data in ring_buffer_consumer() 217 * available or when the producer wants us to finish reading. in ring_buffer_consumer() 314 trace_printk("Running Producer at SCHED_FIFO %s\n", in ring_buffer_producer() 317 trace_printk("Running Producer at nice: %d\n", in ring_buffer_producer() 447 producer = kthread_run(ring_buffer_producer_thread, in ring_buffer_benchmark_init() [all …]
|
| /kernel/linux/linux-5.10/tools/testing/selftests/bpf/benchs/ |
| D | run_bench_ringbufs.sh | 33 header "Single-producer, parallel producer" 38 header "Single-producer, parallel producer, sampled notification" 43 header "Single-producer, back-to-back mode" 66 header "Single-producer, consumer/producer competing on the same CPU, low batch count" 71 header "Ringbuf, multi-producer contention"
|
| 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 118 .producer_thread = producer, 129 .producer_thread = producer, 140 .producer_thread = producer, 151 .producer_thread = producer, 162 .producer_thread = producer, 173 .producer_thread = producer,
|
| /kernel/linux/linux-6.6/Documentation/devicetree/bindings/net/ |
| D | mdio-mux-multiplexer.yaml | 14 of a mux producer device. The mux producer can be of any type like mmio mux 15 producer, gpio mux producer or generic register based mux producer. 36 mux: mux-controller { // Mux Producer
|
| /kernel/linux/linux-5.10/drivers/net/ethernet/qlogic/qlcnic/ |
| D | qlcnic_io.c | 276 u32 producer; in qlcnic_82xx_change_filter() local 279 producer = tx_ring->producer; in qlcnic_82xx_change_filter() 280 hwdesc = &tx_ring->desc_head[tx_ring->producer]; in qlcnic_82xx_change_filter() 296 tx_ring->producer = get_next_index(producer, tx_ring->num_desc); in qlcnic_82xx_change_filter() 376 u32 producer = tx_ring->producer; in qlcnic_tx_encap_pkt() local 406 hwdesc = &tx_ring->desc_head[producer]; in qlcnic_tx_encap_pkt() 407 tx_ring->cmd_buf_arr[producer].skb = NULL; in qlcnic_tx_encap_pkt() 412 producer = get_next_index(producer, tx_ring->num_desc); in qlcnic_tx_encap_pkt() 415 tx_ring->producer = producer; in qlcnic_tx_encap_pkt() 417 /* Make sure updated tx_ring->producer is visible in qlcnic_tx_encap_pkt() [all …]
|
| /kernel/linux/linux-6.6/drivers/net/ethernet/qlogic/qlcnic/ |
| 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].skb = NULL; in qlcnic_tx_encap_pkt() 413 producer = get_next_index(producer, tx_ring->num_desc); in qlcnic_tx_encap_pkt() 416 tx_ring->producer = producer; in qlcnic_tx_encap_pkt() 418 /* Make sure updated tx_ring->producer is visible in qlcnic_tx_encap_pkt() [all …]
|
| /kernel/linux/linux-6.6/tools/testing/selftests/sync/ |
| D | sync_stress_consumer.c | 2 * sync stress test: producer/consumer 90 * Every producer increments the counter, the consumer in mpsc_producer_thread() 98 "Error advancing producer timeline\n"); in mpsc_producer_thread() 129 * Make sure we see an increment from every producer thread. in mpcs_consumer_thread() 143 /* Release the producer threads */ in mpcs_consumer_thread() 145 "Failure releasing producer threads\n"); in mpcs_consumer_thread()
|