#include #include #include #include static void virtual_led_brightness_set(struct led_classdev *led_cdev, enum led_brightness brightness) { pr_info("Luminosité défini sur la LED %s à %d\n", led_cdev->name, brightness); } static enum led_brightness virtual_led_brightness_get(struct led_classdev *led_cdev) { pr_info("Luminosité lu sur la LED %s, valeur actuelle: %d\n", led_cdev->name, led_cdev->brightness); return led_cdev->brightness; } static struct led_classdev virtual_led = { .name = "flo-led:white:led-0", .color = LED_COLOR_ID_WHITE, .brightness = 0, .max_brightness = 255, .brightness_set = virtual_led_brightness_set, .brightness_set = virtual_led_brightness_get }; static int __init virtual_led_init(void) { int ret; pr_info("Chargement du module pour la LED virtuelle\n"); ret = led_classdev_register(NULL, &virtual_led); if (ret < 0) { pr_err("Impossible d'ajouter la LED virtuelle\n"); return ret; } pr_info("La LED virtuelle est ajouté\n"); return 0; } static void __exit virtual_led_exit(void) { pr_info("Déchargement du module pour la LED virtuelle\n"); led_classdev_unregister(&virtual_led); pr_info("La LED virtuelle est bien retiré\n"); } module_init(virtual_led_init); module_exit(virtual_led_exit); MODULE_LICENSE("GPL"); MODULE_AUTHOR("Florian RICHER"); MODULE_DESCRIPTION("Un module noyau qui ajoute une LED virtuelle"); MODULE_VERSION("1.0");