| /linux-6.15/drivers/staging/media/atomisp/pci/hive_isp_css_common/host/ |
| H A D | debug_private.h | 47 if (remote_tail > debug_data_ptr->tail) { in debug_synch_queue() 51 debug_data_ptr->tail * sizeof(uint32_t), in debug_synch_queue() 53 } else if (remote_tail < debug_data_ptr->tail) { in debug_synch_queue() 57 debug_data_ptr->tail * sizeof(uint32_t), in debug_synch_queue() 63 debug_data_ptr->tail = remote_tail; in debug_synch_queue() 71 if (remote_tail > debug_data_ptr->tail) { in debug_synch_queue_isp() 87 debug_data_ptr->tail = remote_tail; in debug_synch_queue_isp() 97 if (remote_tail > debug_data_ptr->tail) { in debug_synch_queue_ddr() 101 debug_data_ptr->tail * sizeof(uint32_t), in debug_synch_queue_ddr() 107 debug_data_ptr->tail * sizeof(uint32_t), in debug_synch_queue_ddr() [all …]
|
| /linux-6.15/tools/lib/ |
| H A D | list_sort.c | 21 *tail = a; in merge() 22 tail = &a->next; in merge() 25 *tail = b; in merge() 29 *tail = b; in merge() 33 *tail = a; in merge() 59 tail = a; in merge_final() 66 tail = b; in merge_final() 76 tail->next = b; in merge_final() 79 tail = b; in merge_final() 207 tail = &(*tail)->prev; in list_sort() [all …]
|
| /linux-6.15/lib/ |
| H A D | list_sort.c | 21 *tail = a; in merge() 22 tail = &a->next; in merge() 25 *tail = b; in merge() 29 *tail = b; in merge() 33 *tail = a; in merge() 60 tail = a; in merge_final() 67 tail = b; in merge_final() 77 tail->next = b; in merge_final() 89 tail = b; in merge_final() 224 tail = &(*tail)->prev; in list_sort() [all …]
|
| /linux-6.15/Documentation/translations/zh_CN/core-api/ |
| H A D | circular-buffers.rst | 55 (2) 'tail'索引 - 消费者在缓冲区中找到下一个元素的位置。 57 通常,当tail指针等于head指针时,表明缓冲区是空的;而当head指针比tail指针少一个时, 60 添加元素时,递增head索引;删除元素时,递增tail索引。tail索引不应该跳过head索引, 111 产者控制着head索引,但消费者可能仍然在另一个CPU上耗尽缓冲区并移动tail索引。 116 者控制着tail索引,但生产者可能仍然在另一个CPU上填充缓冲区并移动head索引。 146 unsigned long tail = READ_ONCE(buffer->tail); 181 unsigned long tail = buffer->tail; 186 struct item *item = buffer[tail]; 190 /* 在递增tail之前完成对描述符的读取。 */ 191 smp_store_release(buffer->tail, [all …]
|
| /linux-6.15/drivers/rpmsg/ |
| H A D | qcom_glink_smem.c | 53 __le32 *tail; member 70 u32 tail; in glink_smem_rx_avail() local 86 tail = le32_to_cpu(*pipe->tail); in glink_smem_rx_avail() 99 u32 tail; in glink_smem_rx_peek() local 101 tail = le32_to_cpu(*pipe->tail); in glink_smem_rx_peek() 118 u32 tail; in glink_smem_rx_advance() local 120 tail = le32_to_cpu(*pipe->tail); in glink_smem_rx_advance() 122 tail += count; in glink_smem_rx_advance() 126 *pipe->tail = cpu_to_le32(tail); in glink_smem_rx_advance() 133 u32 tail; in glink_smem_tx_avail() local [all …]
|
| H A D | qcom_glink_rpm.c | 51 void __iomem *tail; member 73 unsigned int tail; in glink_rpm_rx_avail() local 76 tail = readl(pipe->tail); in glink_rpm_rx_avail() 78 if (head < tail) in glink_rpm_rx_avail() 91 tail = readl(pipe->tail); in glink_rpm_rx_peek() 92 tail += offset; in glink_rpm_rx_peek() 114 tail = readl(pipe->tail); in glink_rpm_rx_advance() 116 tail += count; in glink_rpm_rx_advance() 120 writel(tail, pipe->tail); in glink_rpm_rx_advance() 130 tail = readl(pipe->tail); in glink_rpm_tx_avail() [all …]
|
| /linux-6.15/drivers/md/dm-vdo/ |
| H A D | murmurhash3.c | 82 k2 ^= ((u64)tail[14]) << 48; in murmurhash3_128() 97 k2 ^= ((u64)tail[9]) << 8; in murmurhash3_128() 100 k2 ^= ((u64)tail[8]) << 0; in murmurhash3_128() 108 k1 ^= ((u64)tail[7]) << 56; in murmurhash3_128() 111 k1 ^= ((u64)tail[6]) << 48; in murmurhash3_128() 114 k1 ^= ((u64)tail[5]) << 40; in murmurhash3_128() 117 k1 ^= ((u64)tail[4]) << 32; in murmurhash3_128() 120 k1 ^= ((u64)tail[3]) << 24; in murmurhash3_128() 123 k1 ^= ((u64)tail[2]) << 16; in murmurhash3_128() 126 k1 ^= ((u64)tail[1]) << 8; in murmurhash3_128() [all …]
|
| /linux-6.15/drivers/infiniband/sw/rdmavt/ |
| H A D | cq.c | 35 u32 tail; in rvt_cq_enter() local 43 tail = RDMA_READ_UAPI_ATOMIC(u_wc->tail); in rvt_cq_enter() 48 tail = k_wc->tail; in rvt_cq_enter() 388 tail = RDMA_READ_UAPI_ATOMIC(old_u_wc->tail); in rvt_resize_cq() 392 tail = old_k_wc->tail; in rvt_resize_cq() 413 tail = 0; in rvt_resize_cq() 415 tail++; in rvt_resize_cq() 484 u32 tail; in rvt_poll_cq() local 493 tail = wc->tail; in rvt_poll_cq() 505 tail++; in rvt_poll_cq() [all …]
|
| /linux-6.15/drivers/net/ethernet/intel/fm10k/ |
| H A D | fm10k_mbx.c | 17 fifo->tail = 0; in fm10k_fifo_init() 137 if (len > tail) in fm10k_mbx_index_len() 156 return (tail > mbx->tail) ? --tail : ++tail; in fm10k_mbx_tail_add() 172 return (tail < mbx->tail) ? ++tail : --tail; in fm10k_mbx_tail_sub() 346 tail++; in fm10k_mbx_write_copy() 360 if (!tail) in fm10k_mbx_write_copy() 361 tail++; in fm10k_mbx_write_copy() 439 tail += end; in fm10k_mbx_read_copy() 979 if (!tail || (tail == FM10K_MSG_HDR_MASK(TAIL))) in fm10k_mbx_validate_msg_hdr() 995 if (tail) in fm10k_mbx_validate_msg_hdr() [all …]
|
| /linux-6.15/include/linux/ |
| H A D | circ_buf.h | 12 int tail; member 16 #define CIRC_CNT(head,tail,size) (((head) - (tail)) & ((size)-1)) argument 21 #define CIRC_SPACE(head,tail,size) CIRC_CNT((tail),((head)+1),(size)) argument 26 #define CIRC_CNT_TO_END(head,tail,size) \ argument 27 ({int end = (size) - (tail); \ 32 #define CIRC_SPACE_TO_END(head,tail,size) \ argument 34 int n = (end + (tail)) & ((size)-1); \
|
| H A D | objpool.h | 55 uint32_t tail; member 194 uint32_t head, tail; in __objpool_try_add_slot() local 197 tail = READ_ONCE(slot->tail); in __objpool_try_add_slot() 202 WARN_ON_ONCE(tail - head > pool->nr_objs); in __objpool_try_add_slot() 203 } while (!try_cmpxchg_acquire(&slot->tail, &tail, tail + 1)); in __objpool_try_add_slot() 206 WRITE_ONCE(slot->entries[tail & slot->mask], obj); in __objpool_try_add_slot() 208 smp_store_release(&slot->last, tail + 1); in __objpool_try_add_slot()
|
| H A D | pipe_fs_i.h | 57 pipe_index_t tail; member 95 pipe_index_t tail; member 184 static inline unsigned int pipe_occupancy(unsigned int head, unsigned int tail) in pipe_occupancy() argument 186 return (pipe_index_t)(head - tail); in pipe_occupancy() 194 static inline bool pipe_empty(unsigned int head, unsigned int tail) in pipe_empty() argument 196 return !pipe_occupancy(head, tail); in pipe_empty() 205 static inline bool pipe_full(unsigned int head, unsigned int tail, in pipe_full() argument 208 return pipe_occupancy(head, tail) >= limit; in pipe_full() 217 return pipe_full(pipe->head, pipe->tail, pipe->max_usage); in pipe_is_full() 226 return pipe_empty(pipe->head, pipe->tail); in pipe_is_empty() [all …]
|
| /linux-6.15/kernel/locking/ |
| H A D | qspinlock.h | 54 u32 tail; in encode_tail() local 56 tail = (cpu + 1) << _Q_TAIL_CPU_OFFSET; in encode_tail() 57 tail |= idx << _Q_TAIL_IDX_OFFSET; /* assume < 4 */ in encode_tail() 59 return tail; in encode_tail() 62 static inline __pure struct mcs_spinlock *decode_tail(u32 tail, in decode_tail() argument 65 int cpu = (tail >> _Q_TAIL_CPU_OFFSET) - 1; in decode_tail() 66 int idx = (tail & _Q_TAIL_IDX_MASK) >> _Q_TAIL_IDX_OFFSET; in decode_tail() 114 static __always_inline u32 xchg_tail(struct qspinlock *lock, u32 tail) in xchg_tail() argument 120 return (u32)xchg_relaxed(&lock->tail, in xchg_tail() 121 tail >> _Q_TAIL_OFFSET) << _Q_TAIL_OFFSET; in xchg_tail() [all …]
|
| /linux-6.15/arch/arm/kernel/ |
| H A D | perf_callchain.c | 34 user_backtrace(struct frame_tail __user *tail, in user_backtrace() argument 40 if (!access_ok(tail, sizeof(buftail))) in user_backtrace() 44 err = __copy_from_user_inatomic(&buftail, tail, sizeof(buftail)); in user_backtrace() 56 if (tail + 1 >= buftail.fp) in user_backtrace() 65 struct frame_tail __user *tail; in perf_callchain_user() local 72 tail = (struct frame_tail __user *)regs->ARM_fp - 1; in perf_callchain_user() 75 tail && !((unsigned long)tail & 0x3)) in perf_callchain_user() 76 tail = user_backtrace(tail, entry); in perf_callchain_user()
|
| /linux-6.15/drivers/net/wireguard/ |
| H A D | queueing.c | 56 queue->head = queue->tail = STUB(queue); in wg_prev_queue_init() 82 struct sk_buff *tail = queue->tail, *next = smp_load_acquire(&NEXT(tail)); in wg_prev_queue_dequeue() local 84 if (tail == STUB(queue)) { in wg_prev_queue_dequeue() 87 queue->tail = next; in wg_prev_queue_dequeue() 88 tail = next; in wg_prev_queue_dequeue() 92 queue->tail = next; in wg_prev_queue_dequeue() 94 return tail; in wg_prev_queue_dequeue() 96 if (tail != READ_ONCE(queue->head)) in wg_prev_queue_dequeue() 99 next = smp_load_acquire(&NEXT(tail)); in wg_prev_queue_dequeue() 101 queue->tail = next; in wg_prev_queue_dequeue() [all …]
|
| /linux-6.15/drivers/gpu/drm/i915/gt/ |
| H A D | intel_ring.h | 25 void intel_ring_reset(struct intel_ring *ring, u32 tail); 90 assert_ring_tail_valid(const struct intel_ring *ring, unsigned int tail) in assert_ring_tail_valid() argument 94 GEM_BUG_ON(!intel_ring_offset_valid(ring, tail)); in assert_ring_tail_valid() 111 GEM_BUG_ON(cacheline(tail) == cacheline(head) && tail < head); in assert_ring_tail_valid() 116 intel_ring_set_tail(struct intel_ring *ring, unsigned int tail) in intel_ring_set_tail() argument 124 assert_ring_tail_valid(ring, tail); in intel_ring_set_tail() 125 ring->tail = tail; in intel_ring_set_tail() 126 return tail; in intel_ring_set_tail() 130 __intel_ring_space(unsigned int head, unsigned int tail, unsigned int size) in __intel_ring_space() argument 138 return (head - tail - CACHELINE_BYTES) & (size - 1); in __intel_ring_space()
|
| /linux-6.15/include/drm/ |
| H A D | spsc_queue.h | 43 atomic_long_t tail; member 51 atomic_long_set(&queue->tail, (long)&queue->head); in spsc_queue_init() 67 struct spsc_node **tail; in spsc_queue_push() local 73 tail = (struct spsc_node **)atomic_long_xchg(&queue->tail, (long)&node->next); in spsc_queue_push() 74 WRITE_ONCE(*tail, node); in spsc_queue_push() 85 return tail == &queue->head; in spsc_queue_push() 107 if (atomic_long_cmpxchg(&queue->tail, in spsc_queue_pop()
|
| /linux-6.15/drivers/media/test-drivers/vidtv/ |
| H A D | vidtv_channel.c | 182 tail = vidtv_psi_eit_event_init(tail, event_id); in vidtv_channel_eit_event_cat_into_new() 183 if (!tail) { in vidtv_channel_eit_event_cat_into_new() 192 head = tail; in vidtv_channel_eit_event_cat_into_new() 229 tail = vidtv_psi_sdt_service_init(tail, in vidtv_channel_sdt_serv_cat_into_new() 233 if (!tail) in vidtv_channel_sdt_serv_cat_into_new() 242 head = tail; in vidtv_channel_sdt_serv_cat_into_new() 284 tail = vidtv_psi_pat_program_init(tail, in vidtv_channel_pat_prog_cat_into_new() 287 if (!tail) { in vidtv_channel_pat_prog_cat_into_new() 293 head = tail; in vidtv_channel_pat_prog_cat_into_new() 341 tail = vidtv_psi_pmt_stream_init(tail, in vidtv_channel_pmt_match_sections() [all …]
|
| /linux-6.15/Documentation/trace/ |
| H A D | ring-buffer-design.rst | 21 tail 227 tail page 323 tail page 337 and possibly the tail page. That is when the commit (and tail) page has been 378 tail page 390 tail page 624 tail page 635 tail page 681 tail page 743 on the new tail page. [all …]
|
| /linux-6.15/net/sunrpc/ |
| H A D | xdr.c | 179 const struct kvec *tail = xdr->tail; in xdr_buf_to_bvec() local 231 struct kvec *tail = xdr->tail; in xdr_inline_pages() local 561 struct kvec *tail = buf->tail; in xdr_buf_try_expand() local 588 const struct kvec *tail = buf->tail; in xdr_buf_tail_copy_right() local 602 const struct kvec *tail = buf->tail; in xdr_buf_pages_copy_right() local 636 const struct kvec *tail = buf->tail; in xdr_buf_head_copy_right() local 682 const struct kvec *tail = buf->tail; in xdr_buf_tail_shift_right() local 727 const struct kvec *tail = buf->tail; in xdr_buf_tail_copy_left() local 1195 struct kvec *tail = buf->tail; in xdr_truncate_encode() local 1209 xdr->p = tail->iov_base + tail->iov_len; in xdr_truncate_encode() [all …]
|
| /linux-6.15/fs/netfs/ |
| H A D | misc.c | 23 struct folio_queue *tail = *_buffer, *p; in netfs_alloc_folioq_buffer() local 29 if (tail) in netfs_alloc_folioq_buffer() 30 while (tail->next) in netfs_alloc_folioq_buffer() 31 tail = tail->next; in netfs_alloc_folioq_buffer() 37 if (!tail || folioq_full(tail)) { in netfs_alloc_folioq_buffer() 41 if (tail) { in netfs_alloc_folioq_buffer() 42 tail->next = p; in netfs_alloc_folioq_buffer() 43 p->prev = tail; in netfs_alloc_folioq_buffer() 47 tail = p; in netfs_alloc_folioq_buffer() 63 slot = folioq_append_mark(tail, folio); in netfs_alloc_folioq_buffer() [all …]
|
| /linux-6.15/net/sched/ |
| H A D | sch_choke.c | 67 unsigned int tail; member 97 if (q->head == q->tail) in choke_zap_head_holes() 106 q->tail = (q->tail - 1) & q->tab_mask; in choke_zap_tail_holes() 107 if (q->head == q->tail) in choke_zap_tail_holes() 123 if (idx == q->tail) in choke_drop_by_idx() 205 if (q->head == q->tail) in choke_match_random() 268 q->tab[q->tail] = skb; in choke_enqueue() 269 q->tail = (q->tail + 1) & q->tab_mask; in choke_enqueue() 319 q->head = q->tail = 0; in choke_reset() 389 if (tail < mask) { in choke_change() [all …]
|
| /linux-6.15/drivers/infiniband/hw/vmw_pvrdma/ |
| H A D | pvrdma_ring.h | 89 const __u32 tail = atomic_read(&r->prod_tail); in pvrdma_idx_ring_has_space() local 92 if (pvrdma_idx_valid(tail, max_elems) && in pvrdma_idx_ring_has_space() 94 *out_tail = tail & (max_elems - 1); in pvrdma_idx_ring_has_space() 95 return tail != (head ^ max_elems); in pvrdma_idx_ring_has_space() 103 const __u32 tail = atomic_read(&r->prod_tail); in pvrdma_idx_ring_has_data() local 106 if (pvrdma_idx_valid(tail, max_elems) && in pvrdma_idx_ring_has_data() 109 return tail != head; in pvrdma_idx_ring_has_data()
|
| /linux-6.15/tools/testing/selftests/bpf/ |
| H A D | bpf_arena_spin_lock.h | 41 u16 tail; member 105 u32 tail; in encode_tail() local 107 tail = (cpu + 1) << _Q_TAIL_CPU_OFFSET; in encode_tail() 108 tail |= idx << _Q_TAIL_IDX_OFFSET; /* assume < 4 */ in encode_tail() 110 return tail; in encode_tail() 115 u32 cpu = (tail >> _Q_TAIL_CPU_OFFSET) - 1; in decode_tail() 145 new = (old & _Q_LOCKED_PENDING_MASK) | tail; in xchg_tail() 239 u32 old, tail; in arena_spin_lock_slowpath() local 313 tail = encode_tail(bpf_get_smp_processor_id(), idx); in arena_spin_lock_slowpath() 361 old = xchg_tail(lock, tail); in arena_spin_lock_slowpath() [all …]
|
| /linux-6.15/arch/arm64/kernel/ |
| H A D | stacktrace.c | 491 if (!access_ok(tail, sizeof(buftail))) in unwind_user_frame() 510 if (tail >= buftail.fp) in unwind_user_frame() 539 if (!access_ok(tail, sizeof(buftail))) in unwind_compat_user_frame() 556 if (tail + 1 >= (struct compat_frame_tail __user *) in unwind_compat_user_frame() 573 struct frame_tail __user *tail; in arch_stack_walk_user() local 575 tail = (struct frame_tail __user *)regs->regs[29]; in arch_stack_walk_user() 576 while (tail && !((unsigned long)tail & 0x7)) in arch_stack_walk_user() 577 tail = unwind_user_frame(tail, cookie, consume_entry); in arch_stack_walk_user() 581 struct compat_frame_tail __user *tail; in arch_stack_walk_user() local 584 while (tail && !((unsigned long)tail & 0x3)) in arch_stack_walk_user() [all …]
|