面试被问到网卡RingBuffer数据结构,瞎猜猜错了,学习一下
本博客针对Linux5.7
Linux源码解压后可在源码目录下Documentation/trace/ring-buffer-design.txt中找到设计
内核中kfifo和ring_buffer都是环形缓冲区
kfifo位于linux-5.7/include/linux/kfifo.h中
ring_buffer位于linux-5.7/include/linux/ring_buffer.h中
struct __kfifo {
unsigned int in;
unsigned int out;
unsigned int mask;
unsigned int esize;
void

文章探讨了在Linux5.7版本的源码中RingBuffer和kfifo两种环形缓冲区的数据结构。RingBuffer在实际应用中表现为trace_buffer结构,包含多个关键组件如mutex锁和irq_work。kfifo则由in、out、mask等字段组成,用于数据存储。文章旨在帮助读者了解这两种无锁环形缓冲区的设计和实现。
最低0.47元/天 解锁文章
2949

被折叠的 条评论
为什么被折叠?



