8#ifndef ZEPHYR_RTIO_MPSC_H_ 
    9#define ZEPHYR_RTIO_MPSC_H_ 
   39#if defined(CONFIG_SMP) 
   43#define mpsc_ptr_get(ptr)          atomic_ptr_get(&(ptr)) 
   44#define mpsc_ptr_set(ptr, val)     atomic_ptr_set(&(ptr), val) 
   45#define mpsc_ptr_set_get(ptr, val) atomic_ptr_set(&(ptr), val) 
   51#define mpsc_ptr_get(ptr)      ptr 
   52#define mpsc_ptr_set(ptr, val) ptr = val 
   53#define mpsc_ptr_set_get(ptr, val)                                                                 \ 
   55                mpsc_ptr_t tmp = ptr;                                                              \ 
  101#define RTIO_MPSC_INIT(symbol)                                                                     \ 
  103                .head = (struct rtio_mpsc_node *)&symbol.stub,                                     \ 
  104                .tail = (struct rtio_mpsc_node *)&symbol.stub,                                     \ 
  154        if (tail == &
q->stub) {
 
static ALWAYS_INLINE unsigned int arch_irq_lock(void)
Disable all interrupts on the local CPU.
Definition: irq.h:168
 
static ALWAYS_INLINE void arch_irq_unlock(unsigned int key)
Definition: irq.h:176
 
void * atomic_ptr_t
Definition: atomic.h:24
 
Common toolchain abstraction.
 
#define ALWAYS_INLINE
Definition: common.h:124
 
static struct rtio_mpsc_node * rtio_mpsc_pop(struct rtio_mpsc *q)
Pop a node off of the list.
Definition: rtio_mpsc.h:147
 
atomic_ptr_t mpsc_ptr_t
Definition: rtio_mpsc.h:41
 
static ALWAYS_INLINE void rtio_mpsc_push(struct rtio_mpsc *q, struct rtio_mpsc_node *n)
Push a node.
Definition: rtio_mpsc.h:128
 
static void rtio_mpsc_init(struct rtio_mpsc *q)
Initialize queue.
Definition: rtio_mpsc.h:115
 
#define mpsc_ptr_set(ptr, val)
Definition: rtio_mpsc.h:44
 
#define mpsc_ptr_get(ptr)
Definition: rtio_mpsc.h:43
 
#define mpsc_ptr_set_get(ptr, val)
Definition: rtio_mpsc.h:45
 
struct k_queue q
Definition: kobject.c:1323
 
static k_spinlock_key_t key
Definition: spinlock_error_case.c:15
 
Queue member.
Definition: rtio_mpsc.h:81
 
mpsc_ptr_t next
Definition: rtio_mpsc.h:82
 
MPSC Queue.
Definition: rtio_mpsc.h:88
 
mpsc_ptr_t head
Definition: rtio_mpsc.h:89
 
struct rtio_mpsc_node stub
Definition: rtio_mpsc.h:91
 
struct rtio_mpsc_node * tail
Definition: rtio_mpsc.h:90