link_buff.h
来自「AMLOGIC DPF source code」· C头文件 代码 · 共 90 行
H
90 行
#ifndef __LINK_BUFF_H
#define __LINK_BUFF_H
#ifndef SMP_CACHE_BYTES
#define SMP_CACHE_BYTES 4
#endif
#define LKB_DATA_ALIGN(X) (((X) + (SMP_CACHE_BYTES - 1)) & ~(SMP_CACHE_BYTES - 1))
#define link_buff_malloc bt_umalloc
#define link_buff_free bt_ufree
typedef struct link_buff_head
{
/* These two members must be first. */
struct link_buff *next;
struct link_buff *prev;
__u32 dlen; //total data length in queue
__u32 qlen;
spin_lock_t lock;
} link_buff_head_t;
/**
* struct link_buff - link buffer
* @next: Next buffer in list
* @prev: Previous buffer in list
* @list: List we are on
* @len: Length of actual data
* @data_len: Data length
* @truesize: Buffer size
* @head: Head of buffer
* @data: Data head pointer
* @tail: Tail pointer
* @end: End pointer
*/
typedef struct link_buff
{
/* These two members must be first. */
struct link_buff *next;
struct link_buff *prev;
struct link_buff_head *list;
__u32 len,
data_len;
/* These elements must be at the end, see lkb_alloc() for details. */
__u32 truesize;
__u8 *head,
*data,
*tail,
*end;
} link_buff_t;
link_buff_t *lkb_alloc(__u32 size);
void lkb_free(link_buff_t *lkb);
int lkb_queue_not_valid(link_buff_head_t *list);
void lkb_queue_head_init(link_buff_head_t *list);
int lkb_queue_empty(const link_buff_head_t *list_);
__u32 lkb_queue_len(const link_buff_head_t *list_);
__u32 lkb_data_len(const link_buff_head_t *list_);
__u32 lkb_headroom(const link_buff_t *lkb);
__u32 lkb_tailroom(const link_buff_t *lkb);
__u32 lkb_headlen(const link_buff_t *lkb);
void lkb_queue_head(link_buff_head_t *list, link_buff_t *newlk);
void lkb_queue_tail(link_buff_head_t *list, link_buff_t *newlk);
link_buff_t *lkb_dequeue(link_buff_head_t *list);
link_buff_t *lkb_dequeue_tail(link_buff_head_t *list);
void lkb_queue_purge(link_buff_head_t *list);
void lkb_unlink(link_buff_t *lkb);
link_buff_t *lkb_peek(link_buff_head_t *list_);
link_buff_t *lkb_peek_tail(link_buff_head_t *list_);
link_buff_t *lkb_peek_next(link_buff_t *lkb);
link_buff_t *lkb_peek_prev(link_buff_t *lkb);
__u8 *lkb_put(link_buff_t *lkb, __u32 len);
void lkb_trim(link_buff_t *lkb, __u32 len);
__u8 *lkb_push(link_buff_t *lkb, __u32 len);
__u8 *lkb_pull(link_buff_t *lkb, __u32 len);
void lkb_reserve(link_buff_t *lkb, __u32 len);
#endif //__LINK_BUFF_H
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?