33#ifndef DRM_TASK_BARRIER_H_
34#define DRM_TASK_BARRIER_H_
46static inline void task_barrier_signal_turnstile(
struct semaphore *turnstile,
51 for (i = 0 ; i < n; i++)
55static inline void task_barrier_init(
struct task_barrier *tb)
58 atomic_set(&tb->
count, 0);
63static inline void task_barrier_add_task(
struct task_barrier *tb)
68static inline void task_barrier_rem_task(
struct task_barrier *tb)
78static inline void task_barrier_enter(
struct task_barrier *tb)
80 if (atomic_inc_return(&tb->
count) == tb->
n)
92static inline void task_barrier_exit(
struct task_barrier *tb)
94 if (atomic_dec_return(&tb->
count) == 0)
101static inline void task_barrier_full(
struct task_barrier *tb)
103 task_barrier_enter(tb);
104 task_barrier_exit(tb);
@ down
Definition p_spec.h:262
@ up
Definition p_spec.h:261
Definition task_barrier.h:39
struct semaphore enter_turnstile
Definition task_barrier.h:42
unsigned int n
Definition task_barrier.h:40
atomic_t count
Definition task_barrier.h:41
struct semaphore exit_turnstile
Definition task_barrier.h:43