设置Llinux自带的led功能,在timer模式下设置delay_on后会把delay_off给清0

记录:

内核版本4.9.88.

问题复现方法是:

1. cd /sys/class/leds/cpu //cpu是内核自带led的节点名
2. echo timer > trigger
3. echo 100 > delay_on

在设置完delay_on之后,发现delay_off自己设置为0了。同理设置delay_off后,delay_on自动设置为0.

原因是ledtrig-timer.c中:

led_delay_on_store      led_delay_off_store

                        |                |

                        led_blink_set

                                |

                led_stop_software_blink

void led_stop_software_blink(struct led_classdev *led_cdev)
{
	del_timer_sync(&led_cdev->blink_timer);
	led_cdev->blink_delay_on = 0;
	led_cdev->blink_delay_off = 0;
	led_cdev->flags &= ~LED_BLINK_SW;
}

通过以上流程可以知道,在设置delay_on或者delay_off后,都会调用led_stop_software_blink,然后对delay_on/delay_off置0,这也就是为什么设置delay_on后,delay_off会自动置0.

所以这里可以把

	//led_cdev->blink_delay_on = 0;
	//led_cdev->blink_delay_off = 0;

给注释掉即可

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-10 15:42:04       99 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-10 15:42:04       107 阅读
  3. 在Django里面运行非项目文件

    2024-07-10 15:42:04       90 阅读
  4. Python语言-面向对象

    2024-07-10 15:42:04       98 阅读

热门阅读

  1. 学懂C#编程:C# 索引器(Indexer)的概念及用法

    2024-07-10 15:42:04       28 阅读
  2. c语言数据结构--链队列

    2024-07-10 15:42:04       26 阅读
  3. Ubuntu 22.04 设置swap交换空间

    2024-07-10 15:42:04       27 阅读
  4. visual studio 2022 在使用open3d出现的问题及解决方式

    2024-07-10 15:42:04       27 阅读
  5. ThreadLocal的内存泄漏

    2024-07-10 15:42:04       27 阅读
  6. 【软件工程中的演化模型及其优缺点】

    2024-07-10 15:42:04       27 阅读
  7. Linux 例题及详解

    2024-07-10 15:42:04       27 阅读