signal_pending( current )———》检查当前进程是否有信号处理,返回不为0表示有信号需要处理。
-ERESTARTSYS表示信号函数处理完毕后重新执行信号函数前的某个系统调用。
也就是说,如果信号函数前有发生系统调用,在调度用户信号函数之前,内核会检查系统调用的返回值,看看是不是因为这个信号而中断了系统调用.如果返回值-
ERESTARTSYS,并且当前调度的信号具备-ERESTARTSYS属性,系统就会在用户信号函数返回之后再执行该系统调用。
在内核中写文件, 最好不要这样做,
建议不要直接在内核中往文件里写东东,本来核态和用户态有各自的分工,如果在内核中写文件感觉有点将传统上所说的机制和策略混在一起了。内核最好只是将监测的数据保留下来,具体要对数据做什么处理最好留出另外的接口给应用程序来做进一步的处理好了。
如果实在是在内核中操作文件,可以参考drivers/sound/sound_firmware.c中的用法(2.4内核)。2.6内核的话似乎仍然可以类似用sys_open()等方式进行,可以自己搜搜看。
filp_open()
_write()
filp_close()
阅读(1832) | 评论(0) | 转发(0) |