Messages in this thread | | | Date | Sun, 11 Oct 2009 00:06:32 +0100 | From | Alan Cox <> | Subject | Re: [PATCH 3/5] Use vt_get_kmsg_redirect() and vt_set_kmsg_redirect() |
| |
> - kmsg_redirect = SUSPEND_CONSOLE; > + orig_kmsg = vt_get_kmsg_redirect(); > + vt_set_kmsg_redirect(SUSPEND_CONSOLE);
Probably better to have a single
orig_kmsg = vt_kmsg_redirect(new);
because it makes the locking easy and means a third party can't sneak between those two and break stuff. This has another advantage - the variable is now function local and the whole pile of stuff you posted becomes
#if defined(CONFIG_VT_CONSOLE)
extern inline int vt_kmsg_redirect(int new) { static int kmsg_con;
if (new != -1) xchg(new, &kmsg_con); else new = kmsg_con; return new; }
#else
extern inline int vt_kmsg_redirect(int new) { return 0; }
#endif
Optionally adding
#define vt_get_kmsg_redirect vt_kmsg_redirect(-1);
One ifdef, clear locking rules, no globals, no file level statics and for almost all cases it'll compile down to almost nothing.
Alan
| |