Linux内核 - 从用户空间停止正在运行的内核计时器

时间:2013-07-08 12:29:51

标签: linux kernel-module

我正在尝试在Linux启动时使我的嵌入式设备中的LED闪烁。基本上LED闪烁表明Linux正处于启动过程中。 为了使LED闪烁,我正在做以下事情

  1. 在init / main.c中创建了一个全局定时器(LED闪烁定时器) static struct timer_list pwr_led_timer;

  2. 在start_kernel()中完成init_timers()函数后立即启动计时器 使用了setup_timer和mod_timer函数。

  3. 当计时器触发时,在计时器处理程序中,LED被切换。并重启计时器。

  4. 当内核完成整个启动过程时,我关闭LED并删除定时器。  del_timer_sync(安培; pwr_led_timer);

  5. 问题: 我想停止计时器并从我的应用程序切换用户空间的LED而不是停在内核(即第4点)。有没有一种标准方法可以阻止内核从用户空间运行计时器?

    因为pwr_led_timer是全局结构,所以可以使用任何IOCTL调用来从用户空间停止计时器吗?我的想法是做一些IOCTL并获得对内核的访问权限。由于pwr_led_timer是全局的,在IOCTL中我可以用pwr_led_timer调用del_timer_sync()。但不确定我应该向IOCTL打开哪个设备(?)

    抱歉,我是内核/驱动程序编程的新手。我试图搜索网但无法获得任何线索。

    如果有人有任何意见,请告诉我。提前谢谢。

    此致 爱默生

1 个答案:

答案 0 :(得分:0)

您是否考虑过尝试netlink?对于简单和轻量级的用户到内核(或进程到进程)通信,它是一种强大的方法。