69 lines
1.2 KiB
C
69 lines
1.2 KiB
C
#ifndef LBUF_H
|
|
#define LBUF_H
|
|
|
|
|
|
#include "typedef.h"
|
|
#include "list.h"
|
|
#include "system/spinlock.h"
|
|
|
|
|
|
struct lbuff_head {
|
|
int magic_a;
|
|
struct list_head head;
|
|
struct list_head free;
|
|
spinlock_t lock;
|
|
u8 align;
|
|
u16 priv_len;
|
|
u32 total_size;
|
|
u32 last_addr;
|
|
void *priv;
|
|
int magic_b;
|
|
};
|
|
|
|
struct lbuff_state {
|
|
u32 avaliable;
|
|
u32 fragment;
|
|
u32 max_continue_len;
|
|
int num;
|
|
};
|
|
|
|
|
|
|
|
struct lbuff_head *lbuf_init(void *buf, u32 len, int align, int priv_head_len);
|
|
|
|
void *lbuf_alloc(struct lbuff_head *head, u32 len);
|
|
|
|
void *lbuf_realloc(void *lbuf, int size);
|
|
|
|
int lbuf_empty(struct lbuff_head *head);
|
|
|
|
void lbuf_clear(struct lbuff_head *head);
|
|
|
|
void lbuf_push(void *lbuf, u8 channel_map);
|
|
|
|
void *lbuf_pop(struct lbuff_head *head, u8 channel);
|
|
|
|
int lbuf_free(void *lbuf);
|
|
|
|
void lbuf_free_check(void *lbuf, u32 rets);
|
|
|
|
u32 lbuf_free_space(struct lbuff_head *head);
|
|
|
|
void lbuf_state(struct lbuff_head *head, struct lbuff_state *state);
|
|
|
|
void lbuf_dump(struct lbuff_head *head);
|
|
|
|
int lbuf_traversal(struct lbuff_head *head);
|
|
|
|
int lbuf_avaliable(struct lbuff_head *head, int size);
|
|
|
|
int lbuf_real_size(void *lbuf);
|
|
|
|
int lbuf_remain_space(struct lbuff_head *head);
|
|
|
|
void lbuf_inc_ref(void *lbuf);
|
|
|
|
#endif
|
|
|
|
|