Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Ring Buffer, 循环缓冲区的编写和测试,标准kfifo和POSIX的ring buffer.并使用/dev/mem代替实际物理设备来实现mmap方式数据读取

Notifications You must be signed in to change notification settings

home-coder/ring-buffer

Open more actions menu

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

41 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ring-buffer

未解决问题:

    1. 为什么要用环形缓冲区kfifo
    1. 内核数据写入,与mmap后的用户空间取走这个buffer的数据如何同步
    1. 内核模块的地址如何在用户空间操作

《针对上面的问题,如下思考》

经过x86测试,得知写入数据大于ringbuffer给出的最大尺寸4096后,剩余的数据虽然走kfifo_put方法,但是数据并没有写入或者覆盖掉起始处的buffer,导致数据丢失, 所有后续 需要针对这个问题进行判断:如果缓冲区满了就等待,当读者将数据取走腾出空间了,写者再写入。这样写线程可以让出cpu,让他在这个等待间隙做其它的事情。 当然我的测试方法是写者很快,而读者很慢的情景

测试:

需要针对helper中的生产者消费者 模型熟练掌握以后,在将kfifo的项目代码改编成包含这种模式的,目的是解决上面的问题 《针对上面的问题,如下思考》。

About

Ring Buffer, 循环缓冲区的编写和测试,标准kfifo和POSIX的ring buffer.并使用/dev/mem代替实际物理设备来实现mmap方式数据读取

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published
Morty Proxy This is a proxified and sanitized view of the page, visit original site.