mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 02:30:34 +02:00 
			
		
		
		
	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…
	
		Reference in a new issue