lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Mon, 5 May 2008 10:27:16 +0800 From: "Dave Young" <hidave.darkstar@...il.com> To: "Joe Perches" <joe@...ches.com> Cc: akpm@...ux-foundation.org, paulmck@...ibm.com, netdev@...r.kernel.org, linux-kernel@...r.kernel.org Subject: Re: [PATCH -mm] __ratelimit rewrite On Mon, May 5, 2008 at 9:37 AM, Dave Young <hidave.darkstar@...il.com> wrote: > Hi, > Thanks for comment. > > > On Sun, May 4, 2008 at 10:47 PM, Joe Perches <joe@...ches.com> wrote: > > On Sun, 2008-05-04 at 15:07 +0800, Dave Young wrote: > > > diff -uprN linux/include/linux/kernel.h linux.new/include/linux/kernel.h > > > --- linux/include/linux/kernel.h 2008-04-30 17:33:59.000000000 +0800 > > > +++ linux.new/include/linux/kernel.h 2008-04-30 17:33:52.000000000 +0800 > > > @@ -14,6 +14,7 @@ > > > #include <linux/compiler.h> > > > #include <linux/bitops.h> > > > #include <linux/log2.h> > > > +#include <linux/ratelimit.h> > > > #include <asm/byteorder.h> > > > #include <asm/bug.h> > > > > Good idea. > > > > I think #include <linux/printk.h> > > and a reorganization of all the printk related > > elements from kernel.h to printk.h would be better > > and should be done first. If split printk.h from kernel.h, then kernel.h had better don't include printk.h. Instead every printk user include "printk.h". This seems too much changes. Right? > > Sounds good. > > > > > > I think your changes should then be done in > > printk.h not creating a new ratelimit.h. > > IMO ratelimit is not just for printk use now, so a standalone head > file is necessary. > > > > > > > Signed-off-by: Joe Perches <joe@...ches.com> > > --- > > include/linux/kernel.h | 113 +--------------------------------------- > > include/linux/printk.h | 137 ++++++++++++++++++++++++++++++++++++++++++++++++ > > 2 files changed, 138 insertions(+), 112 deletions(-) > > > > diff --git a/include/linux/kernel.h b/include/linux/kernel.h > > index 4d46e29..51ae259 100644 > > --- a/include/linux/kernel.h > > +++ b/include/linux/kernel.h > > > > @@ -14,6 +14,7 @@ > > #include <linux/compiler.h> > > #include <linux/bitops.h> > > #include <linux/log2.h> > > +#include <linux/printk.h> > > > > #include <asm/byteorder.h> > > #include <asm/bug.h> > > > > @@ -70,29 +71,6 @@ extern const char linux_proc_banner[]; > > */ > > #define upper_32_bits(n) ((u32)(((n) >> 16) >> 16)) > > > > -#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 */ > > - > > -/* > > - * 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 "" > > - > > -extern int console_printk[]; > > - > > -#define console_loglevel (console_printk[0]) > > -#define default_message_loglevel (console_printk[1]) > > -#define minimum_console_loglevel (console_printk[2]) > > -#define default_console_loglevel (console_printk[3]) > > - > > struct completion; > > struct pt_regs; > > struct user; > > @@ -179,56 +157,8 @@ extern int kernel_text_address(unsigned long addr); > > struct pid; > > extern struct pid *session_of_pgrp(struct pid *pgrp); > > > > -#ifdef CONFIG_PRINTK > > -asmlinkage int vprintk(const char *fmt, va_list args) > > - __attribute__ ((format (printf, 1, 0))); > > -asmlinkage int printk(const char * fmt, ...) > > - __attribute__ ((format (printf, 1, 2))) __cold; > > -extern int log_buf_get_len(void); > > > > -extern int log_buf_read(int idx); > > -extern int log_buf_copy(char *dest, int idx, int len); > > - > > -extern int printk_ratelimit_jiffies; > > -extern int printk_ratelimit_burst; > > -extern int printk_ratelimit(void); > > > > -extern int __ratelimit(int ratelimit_jiffies, int ratelimit_burst); > > -extern int __printk_ratelimit(int ratelimit_jiffies, int ratelimit_burst); > > -extern bool printk_timed_ratelimit(unsigned long *caller_jiffies, > > - unsigned int interval_msec); > > -#else > > -static inline int vprintk(const char *s, va_list args) > > - __attribute__ ((format (printf, 1, 0))); > > -static inline int vprintk(const char *s, va_list args) { return 0; } > > -static inline int printk(const char *s, ...) > > - __attribute__ ((format (printf, 1, 2))); > > -static inline int __cold printk(const char *s, ...) { return 0; } > > -static inline int log_buf_get_len(void) { return 0; } > > -static inline int log_buf_read(int idx) { return 0; } > > > > -static inline int log_buf_copy(char *dest, int idx, int len) { return 0; } > > -static inline int printk_ratelimit(void) { return 0; } > > -static inline int __printk_ratelimit(int ratelimit_jiffies, \ > > - int ratelimit_burst) { return 0; } > > -static inline bool printk_timed_ratelimit(unsigned long *caller_jiffies, \ > > - unsigned int interval_msec) \ > > - { return false; } > > -#endif > > - > > -extern void __attribute__((format(printf, 1, 2))) > > - early_printk(const char *fmt, ...); > > - > > unsigned long int_sqrt(unsigned long); > > > > -static inline void console_silent(void) > > -{ > > - console_loglevel = 0; > > -} > > - > > -static inline void console_verbose(void) > > -{ > > - if (console_loglevel) > > - console_loglevel = 15; > > -} > > - > > extern void bust_spinlocks(int yes); > > extern void wake_up_klogd(void); > > extern int oops_in_progress; /* If set, an oops, panic(), BUG() or die() is in progress */ > > @@ -261,47 +191,6 @@ extern enum system_states { > > #define TAINT_OVERRIDDEN_ACPI_TABLE (1<<8) > > #define TAINT_WARN (1<<9) > > > > -extern void dump_stack(void) __cold; > > - > > -enum { > > - DUMP_PREFIX_NONE, > > - DUMP_PREFIX_ADDRESS, > > - DUMP_PREFIX_OFFSET > > -}; > > -extern void hex_dump_to_buffer(const void *buf, size_t len, > > - int rowsize, int groupsize, > > - char *linebuf, size_t linebuflen, bool ascii); > > -extern void print_hex_dump(const char *level, const char *prefix_str, > > - int prefix_type, int rowsize, int groupsize, > > - const void *buf, size_t len, bool ascii); > > -extern void print_hex_dump_bytes(const char *prefix_str, int prefix_type, > > - const void *buf, size_t len); > > -#define hex_asc(x) "0123456789abcdef"[x] > > - > > -#define pr_emerg(fmt, arg...) \ > > - printk(KERN_EMERG fmt, ##arg) > > -#define pr_alert(fmt, arg...) \ > > - printk(KERN_ALERT fmt, ##arg) > > -#define pr_crit(fmt, arg...) \ > > - printk(KERN_CRIT fmt, ##arg) > > -#define pr_err(fmt, arg...) \ > > - printk(KERN_ERR fmt, ##arg) > > -#define pr_warning(fmt, arg...) \ > > - printk(KERN_WARNING fmt, ##arg) > > -#define pr_notice(fmt, arg...) \ > > - printk(KERN_NOTICE fmt, ##arg) > > -#define pr_info(fmt, arg...) \ > > - printk(KERN_INFO fmt, ##arg) > > - > > -#ifdef DEBUG > > -/* If you are writing a driver, please use dev_dbg instead */ > > -#define pr_debug(fmt, arg...) \ > > - printk(KERN_DEBUG fmt, ##arg) > > -#else > > -#define pr_debug(fmt, arg...) \ > > - ({ if (0) printk(KERN_DEBUG fmt, ##arg); 0; }) > > -#endif > > - > > /* > > * Display an IP address in readable format. > > */ > > diff --git a/include/linux/printk.h b/include/linux/printk.h > > new file mode 100644 > > index 0000000..732ee9c > > --- /dev/null > > +++ b/include/linux/printk.h > > @@ -0,0 +1,137 @@ > > +#ifndef _LINUX_PRINTK_H > > +#define _LINUX_PRINTK_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 */ > > + > > +/* > > + * 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 "" > > + > > +extern int console_printk[]; > > + > > +#define console_loglevel (console_printk[0]) > > +#define default_message_loglevel (console_printk[1]) > > +#define minimum_console_loglevel (console_printk[2]) > > +#define default_console_loglevel (console_printk[3]) > > + > > +#ifdef CONFIG_PRINTK > > +asmlinkage int vprintk(const char *fmt, va_list args) > > + __attribute__ ((format (printf, 1, 0))); > > +asmlinkage int printk(const char *fmt, ...) > > + __attribute__ ((format (printf, 1, 2))) __cold; > > +extern int log_buf_get_len(void); > > > > +extern int log_buf_read(int idx); > > +extern int log_buf_copy(char *dest, int idx, int len); > > + > > +extern int printk_ratelimit_jiffies; > > +extern int printk_ratelimit_burst; > > +extern int printk_ratelimit(void); > > > > +extern int __ratelimit(int ratelimit_jiffies, int ratelimit_burst); > > +extern int __printk_ratelimit(int ratelimit_jiffies, int ratelimit_burst); > > +extern bool printk_timed_ratelimit(unsigned long *caller_jiffies, > > + unsigned int interval_msec); > > +#else > > +static inline int __attribute__ ((format (printf, 1, 0))) > > +vprintk(const char *s, va_list args) > > +{ > > + return 0; > > +} > > +static inline int __attribute__ ((format (printf, 1, 2))) __cold > > +printk(const char *s, ...) > > +{ > > + return 0; > > +} > > +static inline int log_buf_get_len(void) > > +{ > > + return 0; > > +} > > +static inline int log_buf_read(int idx) > > > > +{ > > + return 0; > > +} > > +static inline int log_buf_copy(char *dest, int idx, int len) > > +{ > > + return 0; > > +} > > +static inline int printk_ratelimit(void) > > +{ > > + return 0; > > +} > > +static inline int __printk_ratelimit(int ratelimit_jiffies, > > + int ratelimit_burst) > > +{ > > + return 0; > > +} > > +static inline bool printk_timed_ratelimit(unsigned long *caller_jiffies, > > + unsigned int interval_msec) > > +{ > > + return false; > > +} > > +#endif > > + > > +extern void __attribute__((format(printf, 1, 2))) > > + early_printk(const char *fmt, ...); > > + > > +static inline void console_silent(void) > > +{ > > + console_loglevel = 0; > > +} > > + > > +static inline void console_verbose(void) > > +{ > > + if (console_loglevel) > > + console_loglevel = 15; > > +} > > + > > +extern void dump_stack(void) __cold; > > + > > +enum { > > + DUMP_PREFIX_NONE, > > + DUMP_PREFIX_ADDRESS, > > + DUMP_PREFIX_OFFSET > > +}; > > +extern void hex_dump_to_buffer(const void *buf, size_t len, > > + int rowsize, int groupsize, > > + char *linebuf, size_t linebuflen, bool ascii); > > +extern void print_hex_dump(const char *level, const char *prefix_str, > > + int prefix_type, int rowsize, int groupsize, > > + const void *buf, size_t len, bool ascii); > > +extern void print_hex_dump_bytes(const char *prefix_str, int prefix_type, > > + const void *buf, size_t len); > > +#define hex_asc(x) "0123456789abcdef"[x] > > + > > +#define pr_emerg(fmt, arg...) \ > > + printk(KERN_EMERG fmt, ##arg) > > +#define pr_alert(fmt, arg...) \ > > + printk(KERN_ALERT fmt, ##arg) > > +#define pr_crit(fmt, arg...) \ > > + printk(KERN_CRIT fmt, ##arg) > > +#define pr_err(fmt, arg...) \ > > + printk(KERN_ERR fmt, ##arg) > > +#define pr_warning(fmt, arg...) \ > > + printk(KERN_WARNING fmt, ##arg) > > +#define pr_notice(fmt, arg...) \ > > + printk(KERN_NOTICE fmt, ##arg) > > +#define pr_info(fmt, arg...) \ > > + printk(KERN_INFO fmt, ##arg) > > + > > +#ifdef DEBUG > > +/* If you are writing a driver, please use dev_dbg instead */ > > +#define pr_debug(fmt, arg...) \ > > + printk(KERN_DEBUG fmt, ##arg) > > +#else > > +#define pr_debug(fmt, arg...) \ > > + ({ if (0) printk(KERN_DEBUG fmt, ##arg); 0; }) > > +#endif > > + > > +#endif > > > > > > > -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@...r.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists