To determine the kernel print level and prink parameter print level, add the following code to the LED driver initialization code [and exit.
Each time the insmod and rmmod LED modules are used, different print results are obtained based on the print level settings:
- Static int _ init s3c24xx_leds_init ()
- {
- Int ret;
- Int minor = 0;
-
- Printk (kern_emerg "1111111 kern_emerg \ n ");
- Printk (kern_alert "2222 kern_alert \ n ");
- Printk (kern_crit "3333333 kern_crit \ n ");
- Printk (kern_err "44444444 kern_err \ n ");
- Printk (kern_warning "55555 kern_warning \ n ");
- Printk (kern_notice "66666 kern_notice \ n ");
- Printk (kern_info "77777 kern_info \ n ");
- Printk (kern_debug "888888 kern_debug \ n ");
- Printk ("9999 no_fix \ n ");
- ...
- }
Operation:
Set the default print level when compiling the kernel source code at one time: [they are defined in kernel/printk. C]
Echo 8 4 1 7>/proc/sys/kernel/printk
8. kern_debug
# Echo 8 4 1 7>/proc/sys/kernel/printk
# Insmod myleds_new.ko
1111111 kern_emerg
2222 kern_alert
3333333 kern_crit
44444444 kern_err
55555 kern_warning
66666 kern_notice
77777 kern_info
888888Kern_debug
9999 no_fix
7. Default
# Cat/proc/sys/kernel/printk
#7 4 1 7
Print result:
111111 kern_emerg
2222 kern_alert
3333333 kern_crit
44444444 kern_err
55555 kern_warning
66666 kern_notice
77777 kern_info
9999 no_fix
6.
# Echo 6 4 1 7>/proc/sys/kernel/printk
# Insmod myleds_new.ko
1111111 kern_emerg
2222 kern_alert
3333333 kern_crit
44444444 kern_err
55555 kern_warning
66666 kern_notice
9999 no_fix
5.
# Echo 5 1 4 7>/proc/sys/kernel/printk
# Rmmod myleds_new.ko
1111111 kern_emerg
2222 kern_alert
3333333 kern_crit
44444444 kern_err
55555 kern_warning
9999 no_fix
4.
# Echo 4 4 1 7>/proc/sys/kernel/printk
# Insmod myleds_new.ko
1111111 kern_emerg
2222 kern_alert
3333333 kern_crit
44444444 kern_err
3.
# Echo 3 4 1 7>/proc/sys/kernel/printk
# Rmmod myleds_new.ko
1111111 kern_emerg
2222 kern_alert
3333333 kern_crit
2.
# Echo 2 4 1 7>/proc/sys/kernel/printk
# Insmod myleds_new.ko
1111111 kern_emerg
2222 kern_alert
1.
# Echo 1 4 1 7>/proc/sys/kernel/printk
# Insmod myleds_new.ko
1111111 kern_emerg
Analysis:
When you manually set the print level to 5, 4, 7, or above (restart will fail), the printing information of kern_warning and printk without formatting parameters will be printed.
Kern_debug has the lowest priority.
Kern_emerg has the highest priority.
Otherwise, recursive by series.
Suppose you want to print printfk without a fix by default,
Kernel/printk. c
# Define default_lele_loglevel (XX); XX> = 5
Assume that the kern_debug information is printed by default.
# Define default_lele_loglevel (XX); xx = 8
// For the preceding operation, Echo XX 4 1 7>/proc/sys/kernel/printk can be used once.
Source code reference:
Kernel/printk. c
- /* Printk's without a loglevel use this ..*/
- # Define default_message_loglevel 4/* kern_warning */
-
- /* We show everything that is more important than this ..*/
- # Define minimum_console_loglevel 1/* Minimum loglevel we let people use */
- # Define default_console_loglevel 7/* anything more serious than kern_debug */
-
- Declare_wait_queue_head (log_wait );
-
- Int console_printk [4] = {
- Default_console_loglevel,/* console_loglevel */
- Default_message_loglevel,/* default_message_loglevel */
- Minimum_console_loglevel,/* minimum_console_loglevel */
- Default_console_loglevel,/* default_console_loglevel */
- };
- ...
Include/Linux/kernel. h
- # Define kern_emerg "<0>"/* system is unusable */
- # Define kern_alert "<1>"/* action must be taken immediately */
- # Define kern_crit "<2>"/* critical conditions */
- # Define kern_err "<3>"/* error conditions */
- # Define kern_warning "<4>"/* warning conditions */
- # Define kern_notice "<5>"/* normal but significant condition */
- # Define kern_info "<6>"/* informational */
- # Define kern_debug "<7>"/* debug-level messages */
Kernel printk printing level