#ifndef LBUF_LITE_H
#define LBUF_LITE_H


#include "typedef.h"
#include "list.h"
//#include "system/spinlock.h"


struct lbuff_lite_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_lite_state {
	u32 avaliable;
	u32 fragment;
	u32 max_continue_len;
	int num;
};



struct lbuff_lite_head *lbuf_lite_init(void *buf, u32 len, int align, int priv_head_len);

void *lbuf_lite_alloc(struct lbuff_lite_head *head, u32 len);

void *lbuf_lite_realloc(void *lbuf, int size);

void lbuf_lite_free(void *lbuf);

u32 lbuf_lite_free_space(struct lbuff_lite_head *head);

void lbuf_lite_state(struct lbuff_lite_head *head, struct lbuff_lite_state *state);

void lbuf_lite_dump(struct lbuff_lite_head *head);

int lbuf_lite_avaliable(struct lbuff_lite_head *head, int size);

#endif


