在中断服务程序里可以进行文件的读写操作么?

violet_sncl 2008-03-14 09:45:27
前面问了怎么样在驱动里进行文件的读写操作,经过高手指点,这个已经ok了,
现在的问题是,我在加载内核的时候进行文件的读写是可以的,但我最终是想在中断服务程序里对文件进行操作,我使用相同的代码,但是执行时出错,说是不能处理内核空指针。

请高手再指点迷津。感谢!
...全文
292 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
helight 2008-04-22
  • 打赏
  • 举报
回复
最好不要在中断程序中对文件进行操作。再说在内核态下,也对文件操作不了。
gogofly_lee 2008-03-25
  • 打赏
  • 举报
回复
LZ的方法是正确的,对于文件读写等有关的I/O操作,如果在中断中调用,会堵赛整个系统,使其他的进程和内核低优先级的中断没有机会运行,如果中断频繁,可能系统根本无法响应其他请求。
关于空指针,得看你的具体实现才能判断是什么原因。
kaizitop 2008-03-24
  • 打赏
  • 举报
回复
中断服务程序运行的系统中断级别好像比较高,不一定能行
建议你使用DPC方法(延时调用),设置一个回调函数,等中断服务结束后回到的中断级上再读!
不过要看你读文件是干嘛用的,如果中断服务里面要用,为什么不在中断前读出来,做调服务程序去处理呢?
hefuhua 2008-03-23
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 violet_sncl 的回复:]
请问楼上高人,为什么读写文件会造成休眠?所谓的休眠函数又是什么?
如果我用O_NONBLOCK打开文件是不是就可以了呢?
[/Quote]

我只是个初学者..

内核有很多API函数,如<linux 设备驱动程序>中有很多地方会说明是不是休眠函数,休眠函数的就是
函数体内可以被别进程抢占,参与进程调度的情况,具体的要好好了解下进程与调度的资料
Heaven_Redsky 2008-03-22
  • 打赏
  • 举报
回复
记得中断服务程序里最好不要出现阻塞操作 例如printf这种都不可以的
是不是文件操作也属于这种阻塞类操作的原因 所以在中断服务程序中出现这种操作会产生错误?
violet_sncl 2008-03-18
  • 打赏
  • 举报
回复
请问楼上高人,为什么读写文件会造成休眠?所谓的休眠函数又是什么?
如果我用O_NONBLOCK打开文件是不是就可以了呢?
pottichu 2008-03-15
  • 打赏
  • 举报
回复
使用下半部的方法, 应该可以的.
hefuhua 2008-03-15
  • 打赏
  • 举报
回复
定时器
Tasklets
软中断
和 中断服务程序
4个不能有休眠函数调用,那么你读写文件一般都有休眠函数,所以不可读写文件操作

工作队列是可以的,还有个内核守护线程这两种才能调用休眠函数
abupie 2008-03-15
  • 打赏
  • 举报
回复
具体的出错代码?
是否多线程/进程问题?
pottichu 2008-03-15
  • 打赏
  • 举报
回复

定时器
Tasklets
工作队列
软中断
都可以满足你的要求

4,438

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
  • 内核源代码研究区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧