環形緩衝區 模仿linux kfifo

2021-07-25 11:46:38 字數 467 閱讀 3999

struct kfifo

/*判斷n是否為2的冪*/

static bool is_power_of_2(unsigned int n)

/*將數字a向上取整為2的次冪*/

static uint32_t roundup_power_of_2(uint32_t a)

/*全域性變數*/

struct kfifo fifo;

/*環形緩衝區初始化*/

void fifo_init(uint32_t size)

/*返回實際寫入緩衝區中的資料*/

uint32_t put(const uint8_t *

data, uint32_t len)

/*返回實際讀取的資料長度*/

uint32_t get(uint8_t *

data, uint32_t len)

環形緩衝區

include include include include include define buffsize 1024 1024 define min x,y x y x y pthread mutex t lock pthread mutex initializer struct cycle b...

環形緩衝區

define print buf size 16 1024 static char g pcnetprintbuf 環形緩衝區的首位址 static int g ireadpos 0 環形緩衝區讀的位置 static int g iwritepos 0 環形緩衝區寫的位置 intinit 判斷環形緩...

環形緩衝區

環形緩衝區要維護兩個索引,分別對應寫入端 w 和讀取端 r 寫入 push 的時候,先確保環沒滿,然後把資料複製到 w 所對應的元素,最後 w 指向下乙個元素 讀取 pop 的時候,先確保環沒空,然後返回 r 對應的元素,最後 r 指向下乙個元素。上述的操作並不複雜,不過有乙個小小的麻煩 空環和滿環...