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__ | #ifndef __KERN_LEVELS_H__ | ||||||
| #define __KERN_LEVELS_H__ | #define __KERN_LEVELS_H__ | ||||||
| 
 | 
 | ||||||
| #define KERN_EMERG	"<0>"	/* system is unusable			*/ | #define KERN_SOH	"\001"		/* ASCII Start Of Header */ | ||||||
| #define KERN_ALERT	"<1>"	/* action must be taken immediately	*/ | #define KERN_SOH_ASCII	'\001' | ||||||
| #define KERN_CRIT	"<2>"	/* critical conditions			*/ | 
 | ||||||
| #define KERN_ERR	"<3>"	/* error conditions			*/ | #define KERN_EMERG	KERN_SOH "0"	/* system is unusable */ | ||||||
| #define KERN_WARNING	"<4>"	/* warning conditions			*/ | #define KERN_ALERT	KERN_SOH "1"	/* action must be taken immediately */ | ||||||
| #define KERN_NOTICE	"<5>"	/* normal but significant condition	*/ | #define KERN_CRIT	KERN_SOH "2"	/* critical conditions */ | ||||||
| #define KERN_INFO	"<6>"	/* informational			*/ | #define KERN_ERR	KERN_SOH "3"	/* error conditions */ | ||||||
| #define KERN_DEBUG	"<7>"	/* debug-level messages			*/ | #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 |  * 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 |  * 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). |  * during early bootup (a continued line is not SMP-safe otherwise). | ||||||
|  */ |  */ | ||||||
| #define KERN_CONT	"<c>" | #define KERN_CONT	KERN_SOH "c" | ||||||
| 
 | 
 | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
|  | @ -9,7 +9,7 @@ extern const char linux_proc_banner[]; | ||||||
| 
 | 
 | ||||||
| static inline int printk_get_level(const char *buffer) | 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]) { | 		switch (buffer[1]) { | ||||||
| 		case '0' ... '7': | 		case '0' ... '7': | ||||||
| 		case 'd':	/* KERN_DEFAULT */ | 		case 'd':	/* KERN_DEFAULT */ | ||||||
|  | @ -27,7 +27,7 @@ static inline const char *printk_skip_level(const char *buffer) | ||||||
| 		case '0' ... '7': | 		case '0' ... '7': | ||||||
| 		case 'd':	/* KERN_DEFAULT */ | 		case 'd':	/* KERN_DEFAULT */ | ||||||
| 		case 'c':	/* KERN_CONT */ | 		case 'c':	/* KERN_CONT */ | ||||||
| 			return buffer + 3; | 			return buffer + 2; | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| 	return buffer; | 	return buffer; | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Joe Perches
				Joe Perches