Linux - KernelThis forum is for all discussion relating to the Linux kernel.
Notices
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Get a virtual cloud desktop with the Linux distro that you want in less than five minutes with Shells! With over 10 pre-installed distros to choose from, the worry-free installation life is here! Whether you are a digital nomad or just looking for flexibility, Shells can put your Linux machine on the device that you want to use.
Exclusive for LQ members, get up to 45% off per month. Click here for more info.
I have a sample code for kernel module, which when I try to compile I am continuously getting errors.
Code:
/*
* kbleds.c − Blink keyboard leds until the module is unloaded.
*/
#include <linux/module.h>
#include <linux/config.h>
#include <linux/init.h>
#include <linux/tty.h> /* For fg_console, MAX_NR_CONSOLES */
#include <linux/kd.h> /* For KDSETLED */
#include <linux/vt.h>
#include <linux/console_struct.h> /* For vc_cons */
MODULE_DESCRIPTION("Example module illustrating the use of Keyboard LEDs.");
MODULE_AUTHOR("Daniele Paolo Scarpazza");
MODULE_LICENSE("GPL");
struct timer_list my_timer;
struct tty_driver *my_driver;
char kbledstatus = 0;
#define BLINK_DELAY HZ/5
#define ALL_LEDS_ON 0x07
#define RESTORE_LEDS 0xFF
/*
* Function my_timer_func blinks the keyboard LEDs periodically by invoking
* command KDSETLED of ioctl() on the keyboard driver. To learn more on virtual
* terminal ioctl operations, please see file:
* /usr/src/linux/drivers/char/vt_ioctl.c, function vt_ioctl().
*
* The argument to KDSETLED is alternatively set to 7 (thus causing the led
* mode to be set to LED_SHOW_IOCTL, and all the leds are lit) and to 0xFF
* (any value above 7 switches back the led mode to LED_SHOW_FLAGS, thus
* the LEDs reflect the actual keyboard status). To learn more on this,
* please see file:
* /usr/src/linux/drivers/char/keyboard.c, function setledstate().
*
*/
static void my_timer_func(unsigned long ptr)
{
int *pstatus = (int *)ptr;
if (*pstatus == ALL_LEDS_ON)
*pstatus = RESTORE_LEDS;
else
*pstatus = ALL_LEDS_ON;
(my_driver−>ioctl) (vc_cons[fg_console].d−>vc_tty, NULL, KDSETLED,
*pstatus);
my_timer.expires = jiffies + BLINK_DELAY;
add_timer(&my_timer);
}
static int __init kbleds_init(void)
{
int i;
printk(KERN_INFO "kbleds: loading\n");
printk(KERN_INFO "kbleds: fgconsole is %x\n", fg_console);
for (i = 0; i < MAX_NR_CONSOLES; i++) {
if (!vc_cons[i].d)
break;
printk(KERN_INFO "poet_atkm: console[%i/%i] #%i, tty %lx\n", i,
MAX_NR_CONSOLES, vc_cons[i].d−>vc_num,
(unsigned long)vc_cons[i].d−>vc_tty);
}
printk(KERN_INFO "kbleds: finished scanning consoles\n");
my_driver = vc_cons[fg_console].d−>vc_tty−>driver;
printk(KERN_INFO "kbleds: tty driver magic %x\n", my_driver−>magic);
/*
* Set up the LED blink timer the first time
*/
init_timer(&my_timer);
my_timer.function = my_timer_func;
my_timer.data = (unsigned long)&kbledstatus;
my_timer.expires = jiffies + BLINK_DELAY;
add_timer(&my_timer);
return 0;
}
static void __exit kbleds_cleanup(void)
{
printk(KERN_INFO "kbleds: unloading...\n");
del_timer(&my_timer);
(my_driver−>ioctl) (vc_cons[fg_console].d−>vc_tty, NULL, KDSETLED,
RESTORE_LEDS);
}
module_init(kbleds_init);
module_exit(kbleds_cleanup);
Thanks a lot!
Yes, that solved the problem of config.h not found, but now it is giving a bunch of errors like :
Code:
home/shaarad/Study/Linux/modtests/kbleds.c: In function ‘my_timer_func’:
/home/shaarad/Study/Linux/modtests/kbleds.c:42:9: error: stray ‘\342’ in program
/home/shaarad/Study/Linux/modtests/kbleds.c:42:9: error: stray ‘\210’ in program
/home/shaarad/Study/Linux/modtests/kbleds.c:42:9: error: stray ‘\222’ in program
/home/shaarad/Study/Linux/modtests/kbleds.c:42:23: error: ‘ioctl’ undeclared (first use in this function)
/home/shaarad/Study/Linux/modtests/kbleds.c:42:23: note: each undeclared identifier is reported only once for each function it appears in
/home/shaarad/Study/Linux/modtests/kbleds.c:42:39: error: ‘fg_console’ undeclared (first use in this function)
/home/shaarad/Study/Linux/modtests/kbleds.c:42:9: error: stray ‘\342’ in program
/home/shaarad/Study/Linux/modtests/kbleds.c:42:9: error: stray ‘\210’ in program
/home/shaarad/Study/Linux/modtests/kbleds.c:42:9: error: stray ‘\222’ in program
/home/shaarad/Study/Linux/modtests/kbleds.c:42:56: error: ‘vc_tty’ undeclared (first use in this function)
/home/shaarad/Study/Linux/modtests/kbleds.c: In function ‘kbleds_init’:
/home/shaarad/Study/Linux/modtests/kbleds.c:51:55: error: ‘fg_console’ undeclared (first use in this function)
/home/shaarad/Study/Linux/modtests/kbleds.c:56:24: error: stray ‘\342’ in program
/home/shaarad/Study/Linux/modtests/kbleds.c:56:24: error: stray ‘\210’ in program
/home/shaarad/Study/Linux/modtests/kbleds.c:56:24: error: stray ‘\222’ in program
/home/shaarad/Study/Linux/modtests/kbleds.c:56:57: error: ‘vc_num’ undeclared (first use in this function)
/home/shaarad/Study/Linux/modtests/kbleds.c:57:24: error: stray ‘\342’ in program
/home/shaarad/Study/Linux/modtests/kbleds.c:57:24: error: stray ‘\210’ in program
/home/shaarad/Study/Linux/modtests/kbleds.c:57:24: error: stray ‘\222’ in program
/home/shaarad/Study/Linux/modtests/kbleds.c:57:55: error: ‘vc_tty’ undeclared (first use in this function)
/home/shaarad/Study/Linux/modtests/kbleds.c:60:9: error: stray ‘\342’ in program
/home/shaarad/Study/Linux/modtests/kbleds.c:60:9: error: stray ‘\210’ in program
/home/shaarad/Study/Linux/modtests/kbleds.c:60:9: error: stray ‘\222’ in program
/home/shaarad/Study/Linux/modtests/kbleds.c:60:9: error: stray ‘\342’ in program
/home/shaarad/Study/Linux/modtests/kbleds.c:60:9: error: stray ‘\210’ in program
/home/shaarad/Study/Linux/modtests/kbleds.c:60:9: error: stray ‘\222’ in program
/home/shaarad/Study/Linux/modtests/kbleds.c:60:56: error: ‘driver’ undeclared (first use in this function)
/home/shaarad/Study/Linux/modtests/kbleds.c:61:9: error: stray ‘\342’ in program
/home/shaarad/Study/Linux/modtests/kbleds.c:61:9: error: stray ‘\210’ in program
/home/shaarad/Study/Linux/modtests/kbleds.c:61:9: error: stray ‘\222’ in program
/home/shaarad/Study/Linux/modtests/kbleds.c:61:72: error: ‘magic’ undeclared (first use in this function)
/home/shaarad/Study/Linux/modtests/kbleds.c: In function ‘kbleds_cleanup’:
/home/shaarad/Study/Linux/modtests/kbleds.c:76:9: error: stray ‘\342’ in program
/home/shaarad/Study/Linux/modtests/kbleds.c:76:9: error: stray ‘\210’ in program
/home/shaarad/Study/Linux/modtests/kbleds.c:76:9: error: stray ‘\222’ in program
/home/shaarad/Study/Linux/modtests/kbleds.c:76:23: error: ‘ioctl’ undeclared (first use in this function)
/home/shaarad/Study/Linux/modtests/kbleds.c:76:39: error: ‘fg_console’ undeclared (first use in this function)
/home/shaarad/Study/Linux/modtests/kbleds.c:76:9: error: stray ‘\342’ in program
/home/shaarad/Study/Linux/modtests/kbleds.c:76:9: error: stray ‘\210’ in program
/home/shaarad/Study/Linux/modtests/kbleds.c:76:9: error: stray ‘\222’ in program
/home/shaarad/Study/Linux/modtests/kbleds.c:76:56: error: ‘vc_tty’ undeclared (first use in this function)
make[2]: *** [/home/shaarad/Study/Linux/modtests/kbleds.o] Error 1
make[1]: *** [_module_/home/shaarad/Study/Linux/modtests] Error 2
make[1]: Leaving directory `/usr/src/linux-headers-3.2.0-29-generic'
make: *** [all] Error 2
Distribution: PCLinuxOS2023 Fedora38 + 50+ other Linux OS, for test only.
Posts: 17,517
Rep:
? Looks like you found "kbleds.c" here .. http://www.tldp.org/LDP/lkmpg/2.6/ht...g.html#AEN1201
.. Latest update was '18 May 2007' : It's old code.
Quote : "2007-05-18 ver 2.6.4" (( May work with kernel-2.6.4 ? ))
! And : kbleds.c is particularly buggy.
No luck with any kernel examples : 3.2.18 (gcc-4.5.2), 2.6.18 (gcc-4.1.2),
2.6.32 (gcc-4.4.6) at kbleds.c build.
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.