- 博客(3)
- 收藏
- 关注
原创 Linux v4l2驱动中vb2_buffer_done实现
vb2_buffer_done 是驱动与videobuf2 交互的关键接口,驱动将一帧图像放入vb2 buffer时,再利用vb2_buffer_done将vb2 buffer送入videobuf2中;此函数的调用可以在中断中执行,也可以在进程中调用。
2025-06-18 18:44:20
291
原创 Linux内核spin_lock 和tasklet
spin_lock 自旋锁如果获取不了,进程一直处于忙等待的状态占用着cpu,不会被其他的task打断,不会进入sleep状态,除了自旋锁以外的其他任何形式的锁都有可能导致睡眠或者进程切换spin_lock防止内核抢占死锁,关闭其他进程/中断的抢占,假如进程和中断运行在同一个cpu上,进程设置成TASK_INTERRUPT,进程没解锁,中断就得不到锁一直忙等待spin_lock_irq 无论之前中断是打开还是关闭,获得锁解锁后都是开启中断,防止内核和中断抢占死锁。
2025-06-18 11:05:29
370
原创 Linux V4l2中videobuf2实现
videobuf2作为v4l2驱动程序和用户之间的数据传输的桥梁,用来分配和处理视频缓冲区,实现IO系统调用,包括read()、poll()、以及mmap()。实现流式IO相关v4l2 ioctl()调用,包括缓冲区分配、缓冲区入队出队以及数据流的打开、关闭等控制。
2025-06-12 19:09:18
1355
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人