【发布时间】:2011-05-21 01:50:10
【问题描述】:
我正在编写一个使用定制的屏幕打印系统的内核模块。基本上每次涉及print 时,都会将字符串插入到链表中。
每隔 X 秒,我需要处理列表并对字符串执行一些操作,然后再打印它们。
基本上我有两种选择来实现这样的过滤器:
1) 定时器(最后会自行重启)
2) 休眠 X 秒的内核线程
当过滤器执行它的工作时,没有其他东西可以使用链表,当然,在插入字符串时,过滤器函数应该等待。
AFAIK 计时器在中断上下文中运行,因此它不能休眠,但是内核线程呢?他们能睡吗?如果是,是否有理由不在我的项目中使用它们?还可以使用什么其他解决方案?
总结一下:我的过滤功能只有3个要求:
1) 必须能够printk
2) 当使用列表时,所有其他试图访问列表的东西都必须阻塞,直到过滤函数完成执行
3) 必须每 X 秒运行一次(不是实时要求)
【问题讨论】:
标签: linux-kernel kernel