#ifndef _STACK_H_ | |
#define _STACK_H_ | |
#include "linux_list.h" | |
struct stack { | |
struct list_head list; | |
int items; | |
}; | |
static inline void stack_init(struct stack *s) | |
{ | |
INIT_LIST_HEAD(&s->list); | |
} | |
struct stack_item { | |
struct list_head head; | |
int type; | |
int data_len; | |
char data[0]; | |
}; | |
struct stack_item *stack_item_alloc(int type, size_t data_len); | |
void stack_item_free(struct stack_item *e); | |
void stack_item_push(struct stack *s, struct stack_item *e); | |
struct stack_item *stack_item_pop(struct stack *s, int type); | |
#endif |