Re: [PATCH] link failur in Linux 2.4.9-ac16 around apm.o and sysrq.o

From: junio@siamese.dhis.twinsun.com
Date: Fri Sep 28 2001 - 00:47:21 EST


>>>>> "JNH" == junio <junio@siamese.dhis.twinsun.com> writes:

JNH> 2.4.9-ac16 fails to link with CONFIG_APM=y and
JNH> CONFIG_MAGIC_SYSRQ=n. This is because apm.c unconditionally
JNH> makes calls to functions (__sysrq_lock_table and friends)
JNH> defined in sysrq.c.

JNH> I can think of a couple of different approaches to work this
JNH> around, but is there an established proper way to resolve this
JNH> kind of dependency in the kernel code?

The approaches I listed as (1) and (3) in my previous message
are non solutions, since it will result in a kernel where apm.o
makes calls into sysrq functions, whose proper operations would
depend on sysrq.o to have been properly initialized by other
parts of the kernel, which still think CONFIG_MAGIC_SYSRQ is not
defined.

The below should be a better fix.

--- 2.4.9-ac16.sffix/arch/i386/kernel/apm.c Thu Sep 27 12:46:43 2001
+++ 2.4.9-ac16.sffix/arch/i386/kernel/apm.c Thu Sep 27 22:41:53 2001
@@ -201,7 +201,9 @@
 #include <asm/uaccess.h>
 #include <asm/desc.h>
 
+#ifdef CONFIG_MAGIC_SYSRQ
 #include <linux/sysrq.h>
+#endif
 
 extern unsigned long get_cmos_time(void);
 extern void machine_real_restart(unsigned char *, int);
@@ -697,12 +699,16 @@
                                         struct kbd_struct *kbd, struct tty_struct *tty) {
                 apm_power_off();
 }
+#ifdef CONFIG_MAGIC_SYSRQ
 struct sysrq_key_op sysrq_poweroff_op = {
         handler: handle_poweroff,
         help_msg: "Off",
         action_msg: "Power Off\n"
 };
-
+#else
+# define register_sysrq_key(ig,no) /*re*/
+# define unregister_sysrq_key(ig,no) /*re*/
+#endif
 
 #ifdef CONFIG_APM_DO_ENABLE
 static int apm_enable_power_management(int enable)

-
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/



This archive was generated by hypermail 2b29 : Sun Sep 30 2001 - 21:01:00 EST