22 lines
574 B
C
22 lines
574 B
C
#pragma once
|
|
|
|
#include "types.h"
|
|
|
|
#define FUTEX_QUEUE_LEN 16 //!< 一个地址最多有16个等待者
|
|
|
|
typedef struct futex_queue
|
|
{
|
|
umword_t m[FUTEX_QUEUE_LEN];
|
|
int front;
|
|
int rear;
|
|
} futex_queue_t;
|
|
typedef int (*futex_iter_func)(umword_t e, void *data);
|
|
|
|
void fq_init(futex_queue_t *q);
|
|
int fq_empty(futex_queue_t *q);
|
|
int fq_enqueue(futex_queue_t *q, umword_t e);
|
|
int fq_dequeue(futex_queue_t *q, umword_t *e);
|
|
int fq_queue_len(futex_queue_t *q);
|
|
bool_t fq_is_full(futex_queue_t *q);
|
|
int fq_queue_iter(futex_queue_t *q, futex_iter_func iter_func, void *data);
|