All of lore.kernel.org
 help / color / mirror / Atom feed
From: Crutcher Dunnavant <crutcher@datastacks.com>
To: lkml <linux-kernel@vger.kernel.org>
Cc: Alan <alan@lxorguk.ukuu.org.uk>, Linus <torvalds@transmeta.com>
Subject: [PATCH] Magic SysRq alternate fix register functions
Date: Fri, 21 Sep 2001 18:36:08 -0400	[thread overview]
Message-ID: <20010921183608.N8188@mueller.datastacks.com> (raw)
In-Reply-To: <E15k86n-0005lE-00@the-village.bc.nu> <3BAA3C17.557A2C4E@osdlab.org> <20010921182207.M8188@mueller.datastacks.com>
In-Reply-To: <20010921182207.M8188@mueller.datastacks.com>; from crutcher@datastacks.com on Fri, Sep 21, 2001 at 06:22:07PM -0400

[-- Attachment #1: Type: text/plain, Size: 3205 bytes --]

++ 21/09/01 18:22 -0400 - Crutcher Dunnavant:
> I'm not sure if this is sufficient. The low level interfaces need to be
> exposed, and if we are not expecting modules to pay attention to the
> CONFIG_MAGIC_SYSRQ setting, then the all of these interfaces need to be
> overridden.
> 
> However, do we even need this #ifdef CONFIG_MAGIC_SYSRQ block at all?
> What does it matter if modules register or unregister events, if they
> cannot be called?
> 
> The old code only zaped the enable if sysrq was not defined, and that is
> what I'm doing in the table. Some real changes would be neccessary to
> actually drop out the whole system.
> 
> There is also no real reason to try and no-op these functions for speed,
> as they are trivial and FAR outside of the main call path.
> 
> So the way to go I see here is:
>  a) allow the registration functions to always be defined.
> and either:
>  b) handle the return failure in the __sysrq_XXX functions themselves,
>  c) or not.

A 'dont-close-it' patch is attached.

> 
> ++ 20/09/01 11:57 -0700 - Randy.Dunlap:
> > Alan Cox wrote:
> > > 
> > > > Yeah, I considered that, and it doesn't matter to me whether it
> > > > reports 0 or -1, but it's the data pointer that (mostly) requires
> > > > the #ifdefs, unless the data is always present or a dummy data pointer
> > > > is used.... ?
> > > 
> > > #define it to an inline without some arguments ?
> > ~~~~~~~~~~~~~~~~~~
> > I can't get that to work, but someone else may be able to...
> > 
> > Here's another version for you to consider.
> > 
> > The [un]register_sysrq_key() calls return 0 when CONFIG_MAGIC_SYSRQ
> > is not defined/configured.
> > However, it sacrifices one small data structure of 3 pointers.
> > 
> > ~Randy
> > --- linux/arch/i386/kernel/apm.c.org	Mon Sep 17 10:15:45 2001
> > +++ linux/arch/i386/kernel/apm.c	Thu Sep 20 11:51:25 2001
> > @@ -703,6 +703,8 @@
> >  	help_msg:       "Off",
> >  	action_msg:     "Power Off\n"
> >  };
> > +#else
> > +struct sysrq_key_op sysrq_poweroff_op;
> >  #endif
> >  
> >  
> > --- linux/include/linux/sysrq.h.org	Mon Sep 17 10:21:07 2001
> > +++ linux/include/linux/sysrq.h	Thu Sep 20 11:42:15 2001
> > @@ -87,8 +87,17 @@
> >  }
> >  
> >  #else
> > -#define register_sysrq_key(a,b)		do {} while(0)
> > -#define unregister_sysrq_key(a,b)	do {} while(0)
> > +
> > +static inline int register_sysrq_key(int key, struct sysrq_key_op *op_p)
> > +{
> > +	return 0;
> > +}
> > +
> > +static inline int unregister_sysrq_key(int key, struct sysrq_key_op *op_p)
> > +{
> > +	return 0;
> > +}
> > +
> >  #endif
> >  
> >  /* Deferred actions */
> 
> 
> -- 
> Crutcher        <crutcher@datastacks.com>
> GCS d--- s+:>+:- a-- C++++$ UL++++$ L+++$>++++ !E PS+++ PE Y+ PGP+>++++
>     R-(+++) !tv(+++) b+(++++) G+ e>++++ h+>++ r* y+>*$
> -
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/

-- 
Crutcher        <crutcher@datastacks.com>
GCS d--- s+:>+:- a-- C++++$ UL++++$ L+++$>++++ !E PS+++ PE Y+ PGP+>++++
    R-(+++) !tv(+++) b+(++++) G+ e>++++ h+>++ r* y+>*$

[-- Attachment #2: patch-2.4.10-pre13-sysrq_register --]
[-- Type: text/plain, Size: 1320 bytes --]

--- 2.4.10-pre13.fix_sysrq/include/linux/sysrq.h.fix_sysrq	Fri Sep 21 17:11:20 2001
+++ 2.4.10-pre13.fix_sysrq/include/linux/sysrq.h	Fri Sep 21 18:25:55 2001
@@ -42,7 +42,6 @@
                 struct kbd_struct *, struct tty_struct *);
 
 
-#ifdef CONFIG_MAGIC_SYSRQ
 
 /*
  * Sysrq registration manipulation functions
@@ -55,7 +54,8 @@
 
 extern __inline__ int
 __sysrq_swap_key_ops_nolock(int key, struct sysrq_key_op *insert_op_p,
-				struct sysrq_key_op *remove_op_p) {
+				struct sysrq_key_op *remove_op_p)
+{
 	int retval;
 	if (__sysrq_get_key_op(key) == remove_op_p) {
 		__sysrq_put_key_op(key, insert_op_p);
@@ -86,11 +86,6 @@
 	return __sysrq_swap_key_ops(key, NULL, op_p);
 }
 
-#else
-#define register_sysrq_key(a,b)		do {} while(0)
-#define unregister_sysrq_key(a,b)	do {} while(0)
-#endif
-
 /* Deferred actions */
 
 extern int emergency_sync_scheduled;
--- 2.4.10-pre13.fix_sysrq/arch/i386/kernel/apm.c.fix_sysrq	Fri Sep 21 18:27:06 2001
+++ 2.4.10-pre13.fix_sysrq/arch/i386/kernel/apm.c	Fri Sep 21 18:27:42 2001
@@ -689,7 +689,6 @@
 		(void) apm_set_power_state(APM_STATE_OFF);
 }
 
-#ifdef CONFIG_MAGIC_SYSRQ
 /*
  * Magic sysrq key and handler for the power off function
  */
@@ -703,7 +702,6 @@
 	help_msg:       "Off",
 	action_msg:     "Power Off\n"
 };
-#endif
 
 
 #ifdef CONFIG_APM_DO_ENABLE

  reply	other threads:[~2001-09-21 22:36 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2001-09-20 15:51 [PATCH] fix register_sysrq() in 2.4.9++ Randy.Dunlap
2001-09-20 17:41 ` Alan Cox
2001-09-20 17:48   ` Randy.Dunlap
2001-09-20 17:59     ` Alan Cox
2001-09-20 18:57       ` [PATCH:v2] " Randy.Dunlap
2001-09-21 22:22         ` Crutcher Dunnavant
2001-09-21 22:36           ` Crutcher Dunnavant [this message]
2001-09-24 16:32             ` [PATCH] Magic SysRq alternate fix register functions Randy.Dunlap

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20010921183608.N8188@mueller.datastacks.com \
    --to=crutcher@datastacks.com \
    --cc=alan@lxorguk.ukuu.org.uk \
    --cc=linux-kernel@vger.kernel.org \
    --cc=torvalds@transmeta.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.