我试图在 Linux 启动时让嵌入式设备中的 LED 闪烁。基本上 LED 闪烁表明 Linux 正在启动。为了使 LED 闪烁,我正在做以下事情
在 init/main.c static struct timer_list pwr_led_timer 中创建了一个全局定时器(LED 闪烁定时器);
在使用的 start_kernel() setup_timer 和 mod_timer 函数中完成 init_timers() 函数后立即启动计时器。
当定时器触发时,在定时器处理程序中,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 打开哪个设备(?)
抱歉,我是内核/驱动程序编程的新手。我试图搜索网络但无法获得任何线索。
如果有人有任何意见,请告诉我。提前致谢。
问候, 艾默生