返回信息流我想在按了板子的reset键后就在中断线程里把一个文件删除了就重启,请问有什么办法吗?
这是一条镜像帖。来源:北邮人论坛 / embedded-system / #7804同步于 2010/3/17
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Embedded_System机器人发帖
请问如何在内核中删除一个文件
wsycqyz
2010/3/17镜像同步11 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
你按reset的时候,内核应该在不知情的情况下就挂掉了然后重新引导吧?(我的意思是说linux内核不知道你是按的reset,也就是说,对于内核reset跟突然断电后重新引导没差别吧)
不过这个问题的处理我倒是有个想法,不知道可行性如何
你可以把reset信号怎么处理下引到一个中断管脚上(例如:可以把reset“封装”一下,弄一个其他的按键,按键作用时产生中断,按键产生的信号经过一个延时单元接到reset管脚),对于此中断,其处理函数的作用就是删除你的那个文件
PS:之前的项目中有类似的内容,我们板子上的电源芯片发现电源要掉的时候会有一个中断报给CPU,这时CPU可以选择性的把一些急需处理或保存的事情做了,好像叫什么dying grasp,你可以找找类似的资料。
【 在 wsycqyz 的大作中提到: 】
: 我想在按了板子的reset键后就在中断线程里把一个文件删除了就重启,请问有什么办法吗?
sys_unlink?
找找删文件的系统调用,在内核中找相应的函数
你可以写一个应用程序,监听这个中断,中断发生后删除文件,这样很省事
不过你这个中断如何实现呢?按reset键可以中断,延时吗?还没有听说过这样的用法
【 在 wsycqyz (萨达姆) 的大作中提到: 】
: 我想在按了板子的reset键后就在中断线程里把一个文件删除了就重启,请问有什么办法吗?
【 在 ArmStrong 的大作中提到: 】
: 你可以写一个应用程序,监听这个中断,中断发生后删除文件,这样很省事
: 不过你这个中断如何实现呢?按reset键可以中断,延时吗?还没有听说过这样的用法
应用程序可以监听中断?
【 在 hobby 的大作中提到: 】
: 你按reset的时候,内核应该在不知情的情况下就挂掉了然后重新引导吧?(我脚),对于此中断,其处理函数的作用就是删除你的那个文件
: ...................
好方案 [em68]
现在的关键是让内核在掉电之前捕获到这个中断
内核态可以直接操作文件 无需再写应用程序从内核中获得这个消息
filp_open/write 这些都是内核态的文件读写函数接口
学习了,内核还有这样的函数啊
不过关键的问题是按reset是不会有中断发生的,cpu中断资源这么紧张,不会为这个留
中断的,我仔细看过TI达芬奇系列的两款CPU,确实都没有
【 在 ssailing (sailing) 的大作中提到: 】
: 好方案 [em68]
: 现在的关键是让内核在掉电之前捕获到这个中断
: 内核态可以直接操作文件 无需再写应用程序从内核中获得这个消息
: ...................
从中断的使用上来说,为了实现LZ的这种需求,那必须躲不开要使用中断了吧
对于这种异步的事件,而且要求很快的响应速度(系统中reset按下后,OS赶紧处理一下就得shutdown了),只能中断了吧
不过退一步讲,我觉得需求还有必要探讨。如果LZ的根本需求(目标)不是单纯删除这个文件,而是做其他的事情,那么可以有所变通嘛(毕竟,中断资源总是紧张,而且我提的方案还是需要硬件上做点儿修改)。
例如:如果你着急删这个文件担心影响下次启动,那么在系统引导后,就对相应的启动脚本或者其他东东配置一下,把对应的文件改个名字,挪个地方就行了嘛(这样kernel找不到了,效果跟删了也差不多)。也就是说,是不是可以在系统引导时候再做这些删除的动作。
【 在 ArmStrong 的大作中提到: 】
: 学习了,内核还有这样的函数啊
: 不过关键的问题是按reset是不会有中断发生的,cpu中断资源这么紧张,不会为这个留
: 中断的,我仔细看过TI达芬奇系列的两款CPU,确实都没有
更新一下,首先谢谢各位的回贴。
我的系统中已经有一个中断处理函数,来向应这个reset中断,其实reset button只是一个中断源,没有真的接到CPU的reset管脚上。内核专门有一个ISR来响应这个中断,默认下直接使用另一个函数就把系统重启了。
我现在在这个ISR中使用kernel_thread来启动了另一个函数,来规避ISR中很多不能做的事,
我试着使用sys_unlink,至于call_usermodehelper来删除文件,但是都使得系统panic了。。。。。