Feat: lab 4
This commit is contained in:
29
kernel/include/queue.h
Normal file
29
kernel/include/queue.h
Normal file
@@ -0,0 +1,29 @@
|
||||
#pragma once
|
||||
|
||||
#include <stddef.h>
|
||||
|
||||
typedef struct queue_node {
|
||||
struct queue_node *prev, *next;
|
||||
uint64_t value;
|
||||
} queue_node_t;
|
||||
|
||||
typedef struct queue {
|
||||
size_t size;
|
||||
|
||||
queue_node_t *begin, *end;
|
||||
} queue_t;
|
||||
|
||||
queue_t *make_queue();
|
||||
|
||||
uint64_t queue_back(const queue_t *queue);
|
||||
uint64_t queue_front(const queue_t *queue);
|
||||
|
||||
void queue_push_back(queue_t *queue, uint64_t val);
|
||||
void queue_push_front(queue_t *queue, uint64_t val);
|
||||
|
||||
#define QUEUE_BACK(type, queue) ((type *)queue_back(queue))
|
||||
#define QUEUE_FRONT(type, queue) ((type *)queue_front(queue))
|
||||
#define QUEUE_PUSH_BACK(queue, val) \
|
||||
queue_push_back(queue, (uint64_t)val)
|
||||
#define QUEUE_PUSH_FRONT(queue, val) \
|
||||
queue_push_front(queue, (uint64_t)val)
|
||||
Reference in New Issue
Block a user