printk: convert the format for KERN_<LEVEL> to a 2 byte pattern
Instead of "<.>", use an ASCII SOH for the KERN_<LEVEL> prefix initiator. This saves 1 byte per printk, thousands of bytes in a normal kernel. No output changes are produced as vprintk_emit converts these uses to "<.>". Signed-off-by: Joe Perches <joe@perches.com> Cc: Kay Sievers <kay.sievers@vrfy.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
		
					parent
					
						
							
								b778b3f25b
							
						
					
				
			
			
				commit
				
					
						04d2c8c83d
					
				
			
		
					 2 changed files with 16 additions and 13 deletions
				
			
		|  | @ -1,22 +1,25 @@ | |||
| #ifndef __KERN_LEVELS_H__ | ||||
| #define __KERN_LEVELS_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			*/ | ||||
| #define KERN_SOH	"\001"		/* ASCII Start Of Header */ | ||||
| #define KERN_SOH_ASCII	'\001' | ||||
| 
 | ||||
| #define KERN_EMERG	KERN_SOH "0"	/* system is unusable */ | ||||
| #define KERN_ALERT	KERN_SOH "1"	/* action must be taken immediately */ | ||||
| #define KERN_CRIT	KERN_SOH "2"	/* critical conditions */ | ||||
| #define KERN_ERR	KERN_SOH "3"	/* error conditions */ | ||||
| #define KERN_WARNING	KERN_SOH "4"	/* warning conditions */ | ||||
| #define KERN_NOTICE	KERN_SOH "5"	/* normal but significant condition */ | ||||
| #define KERN_INFO	KERN_SOH "6"	/* informational */ | ||||
| #define KERN_DEBUG	KERN_SOH "7"	/* debug-level messages */ | ||||
| 
 | ||||
| #define KERN_DEFAULT	KERN_SOH "d"	/* the default kernel loglevel */ | ||||
| 
 | ||||
| /* Use the default kernel loglevel */ | ||||
| #define KERN_DEFAULT	"<d>" | ||||
| /*
 | ||||
|  * Annotation for a "continued" line of log printout (only done after a | ||||
|  * line that had no enclosing \n). Only to be used by core/arch code | ||||
|  * during early bootup (a continued line is not SMP-safe otherwise). | ||||
|  */ | ||||
| #define KERN_CONT	"<c>" | ||||
| #define KERN_CONT	KERN_SOH "c" | ||||
| 
 | ||||
| #endif | ||||
|  |  | |||
|  | @ -9,7 +9,7 @@ extern const char linux_proc_banner[]; | |||
| 
 | ||||
| static inline int printk_get_level(const char *buffer) | ||||
| { | ||||
| 	if (buffer[0] == '<' && buffer[1] && buffer[2] == '>') { | ||||
| 	if (buffer[0] == KERN_SOH_ASCII && buffer[1]) { | ||||
| 		switch (buffer[1]) { | ||||
| 		case '0' ... '7': | ||||
| 		case 'd':	/* KERN_DEFAULT */ | ||||
|  | @ -27,7 +27,7 @@ static inline const char *printk_skip_level(const char *buffer) | |||
| 		case '0' ... '7': | ||||
| 		case 'd':	/* KERN_DEFAULT */ | ||||
| 		case 'c':	/* KERN_CONT */ | ||||
| 			return buffer + 3; | ||||
| 			return buffer + 2; | ||||
| 		} | ||||
| 	} | ||||
| 	return buffer; | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Joe Perches
				Joe Perches