我正在尝试在Linux启动时使我的嵌入式设备中的LED闪烁。基本上LED闪烁表明Linux正处于启动过程中。 为了使LED闪烁,我正在做以下事情
在init / main.c中创建了一个全局定时器(LED闪烁定时器) static struct timer_list pwr_led_timer;
在start_kernel()中完成init_timers()函数后立即启动计时器 使用了setup_timer和mod_timer函数。
当计时器触发时,在计时器处理程序中,LED被切换。并重启计时器。
当内核完成整个启动过程时,我关闭LED并删除定时器。 del_timer_sync(安培; pwr_led_timer);
问题: 我想停止计时器并从我的应用程序切换用户空间的LED而不是停在内核(即第4点)。有没有一种标准方法可以阻止内核从用户空间运行计时器?
因为pwr_led_timer是全局结构,所以可以使用任何IOCTL调用来从用户空间停止计时器吗?我的想法是做一些IOCTL并获得对内核的访问权限。由于pwr_led_timer是全局的,在IOCTL中我可以用pwr_led_timer调用del_timer_sync()。但不确定我应该向IOCTL打开哪个设备(?)
抱歉,我是内核/驱动程序编程的新手。我试图搜索网但无法获得任何线索。
如果有人有任何意见,请告诉我。提前谢谢。
此致 爱默生