Skip to contentSkip to conversation

Make it possible to compile in the Bluetooth subsystem

PATCH In review Marcel Holtmann 3 participants 7 messages Oct 7, 2002 Bluetooth

lore
Share & tools
lore

Marcel Holtmann

author maintainer
#0 lore raw

PATCH 1/1 Make it possible to compile in the Bluetooth subsystem

You can import this changeset into BK by piping this whole message to:
'| bk receive [path to repository]' or apply the patch as usual.

===================================================================

[email protected], 2002-10-07 22:08:56+02:00, [email protected]
Make it possible to compile in the Bluetooth subsystem

 af_bluetooth.c |    8 +++-----
 rfcomm/tty.c   |    8 +-------
 2 files changed, 4 insertions(+), 12 deletions(-)
net/bluetooth/af_bluetooth.c +3 -5
diff -Nru a/net/bluetooth/af_bluetooth.c b/net/bluetooth/af_bluetooth.c
@@ -320,7 +320,7 @@
 	PF_BLUETOOTH, bluez_sock_create
 };
 
-static int __init bluez_init(void)
+int __init bluez_init(void)
 {
 	BT_INFO("BlueZ Core ver %s Copyright (C) 2000,2001 Qualcomm Inc",
 		 VERSION);
@@ -337,7 +337,7 @@
 		BT_ERR("BlueZ socket cache creation failed");
 		return -ENOMEM;
 	}
-	
+
 	sock_register(&bluez_sock_family_ops);
 
 	hci_core_init();
@@ -345,7 +345,7 @@
 	return 0;
 }
 
-static void __exit bluez_cleanup(void)
+void __exit bluez_cleanup(void)
 {
 	hci_sock_cleanup();
 	hci_core_cleanup();
@@ -356,11 +356,9 @@
 	remove_proc_entry("bluetooth", NULL);
 }
 
-#ifdef MODULE
 module_init(bluez_init);
 module_exit(bluez_cleanup);
 
 MODULE_AUTHOR("Maxim Krasnyansky <[email protected]>");
 MODULE_DESCRIPTION("BlueZ Core ver " VERSION);
 MODULE_LICENSE("GPL");
-#endif
net/bluetooth/rfcomm/tty.c +1 -7
diff -Nru a/net/bluetooth/rfcomm/tty.c b/net/bluetooth/rfcomm/tty.c
@@ -501,12 +501,6 @@
 #endif
 }
 
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 5, 0)
-#define __minor MINOR
-#else
-#define __minor minor
-#endif
-
 static int rfcomm_tty_open(struct tty_struct *tty, struct file *filp)
 {
 	DECLARE_WAITQUEUE(wait, current);
@@ -514,7 +508,7 @@
 	struct rfcomm_dlc *dlc;
 	int err, id;
 
-        id = __minor(tty->device) - tty->driver.minor_start;
+        id = minor(tty->device) - tty->driver.minor_start;
 
 	BT_DBG("tty %p id %d", tty, id);
 

===================================================================

This BitKeeper patch contains the following changesets:
+
## Wrapped with gzip_uu ##

begin 664 bkpatch19808 M'XL(`([KH3T``\U5;6O;,!#^'/V*@WYI*;9/KW8\4KJV8QO;6.GHMT%0;*4V MB>U@*VD[_.,G.UO2CBS;2@>U#2?)IT>G>YZ3#N"Z,74\*'2=F#DY@'=58^-! M5LUMH<O2K^H;-WA556XPR*K"!#]_!9/<SHQ9F#J8S)?FF\=\29SOI;9)!BM3 M-_&^GPS8N\7)AY<O7E[_?'U%2&C$9QGNKPQ7XR%T8C8JE[I>=J<:IO-J]*W MM2Z;PECM)U71;EQ;ALC<*VG(4:J6*A1AF]"44BVH29&)2(DMVL*4-\M\/QQ% M#&G$&*I641PR<@'4#W$(R**8;6(Q1+-4QN@;".EFG#Y,$QPP\)&?PO/LX M)PE\TC,#N85%U33Y9&[<$N"P%KEKYB78S,"9(\ZCC)HEI/FOK&F(!]4>XV M<[G-,_'^\2$$-9(36'0,[MY1:6S/?[]\H*?C3<=/MIN,N.2BI>&0LY:K%#6C MB@Y1:3.<[$KGGV$[TAB5',-62,6%B[+0=[/35>X4Z1^656F.?D&IIR[@(K#V M?HLA$;D0K'4<R*B-PA13)JD14ZV5G/Y%:+M76!"2=Y*B:'LI?[[.9WVGS]P M\L343"DK@RXB(9]&8@'1<!CH6+)]Q4!!2]\646PYN`S>/5M_SE17^ZAXPDE M<B%1@'*&AD#)^[6!'T^>P@B*O*SJ0X?OG:1FE2?F"#Q8=^O<G91^[S!NK*[M MJQUZ>2S_3C'_M2!)[;SWZ7%W.0H'RKEJ'6<8]N)1C\0C>8SA/O%P\.3+$L_Z M9-DKGL>Y>(I\...=;M8F+RV,QWGIHNUOU;YYN*KR],AY"NP]>_.UZT?K?F<Z M'S?5W&VF)G.CR^5B,UL.G=L%5\J9S;6<9":9-<MBQ"91)(64Y#L%=!MS$P@` !````
`
end

#1 lore raw
Quoted 3 lines · Marcel Holtmann

[email protected], 2002-10-07 22:08:56+02:00, [email protected]
Make it possible to compile in the Bluetooth subsystem

Looks good, but you should _not_ remove the "static". Please keep the init functions static, they will be explicitly exported to the stuff that cares (and nobody else) by the "module_init()" thing anyway.

Linus

#2 lore raw
Quoted 4 lines · Linus Torvalds

Looks good, but you should _not_ remove the "static". Please keep the init functions static, they will be explicitly exported to the stuff that cares (and nobody else) by the "module_init()" thing anyway.

In other words, I think the patch should be just this instead..

Linus

net/bluetooth/af_bluetooth.c +0 -2
diff -Nru a/net/bluetooth/af_bluetooth.c b/net/bluetooth/af_bluetooth.c
@@ -356,11 +356,9 @@
 	remove_proc_entry("bluetooth", NULL);
 }
 
-#ifdef MODULE
 module_init(bluez_init);
 module_exit(bluez_cleanup);
 
 MODULE_AUTHOR("Maxim Krasnyansky <[email protected]>");
 MODULE_DESCRIPTION("BlueZ Core ver " VERSION);
 MODULE_LICENSE("GPL");
-#endif
net/bluetooth/rfcomm/tty.c +1 -7
diff -Nru a/net/bluetooth/rfcomm/tty.c b/net/bluetooth/rfcomm/tty.c
@@ -501,12 +501,6 @@
 #endif
 }
 
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 5, 0)
-#define __minor MINOR
-#else
-#define __minor minor
-#endif
-
 static int rfcomm_tty_open(struct tty_struct *tty, struct file *filp)
 {
 	DECLARE_WAITQUEUE(wait, current);
@@ -514,7 +508,7 @@
 	struct rfcomm_dlc *dlc;
 	int err, id;
 
-        id = __minor(tty->device) - tty->driver.minor_start;
+        id = minor(tty->device) - tty->driver.minor_start;
 
 	BT_DBG("tty %p id %d", tty, id);
 
author maintainer
#3 lore raw
In reply to Linus Torvalds
Quoted 9 lines · Linus Torvalds
Quoted 3 lines · Marcel Holtmann

[email protected], 2002-10-07 22:08:56+02:00, [email protected]
Make it possible to compile in the Bluetooth subsystem

Looks good, but you should _not_ remove the "static". Please keep the init functions static, they will be explicitly exported to the stuff that cares (and nobody else) by the "module_init()" thing anyway.

but when I try to compile in the Bluetooth subsystem I got the following error:

net/built-in.o: In function `sock_init':
net/built-in.o(.text.init+0x5b): undefined reference to `bluez_init'
make: *** [.tmp_vmlinux1] Error 1

It seems like that I have missed some magic to understand, because "wanrouter_init" is also not declared static. But for netfilter or netlink init it seems to work this way. Can you please give me some infos how to fix this the right way.

Regards

Marcel

#4 lore raw
Quoted 7 lines · Marcel Holtmann

but when I try to compile in the Bluetooth subsystem I got the following error:

net/built-in.o: In function `sock_init':
net/built-in.o(.text.init+0x5b): undefined reference to `bluez_init'
make: *** [.tmp_vmlinux1] Error 1

This is a separate error, apparently because net/socket.c calls "blues_init()" if bluetooth is configured in.

That shouldn't be needed at all, since the "init_module()" thing should take care of it. Please try just removing the bluez_init references from net/socket.c - that should fix the compile, and if all the ordering issues are ok, it should also work afterwards..

Linus

author maintainer
#5 lore raw
Quoted 10 lines · Linus Torvalds
Quoted 7 lines · Marcel Holtmann

but when I try to compile in the Bluetooth subsystem I got the following error:

net/built-in.o: In function `sock_init':
net/built-in.o(.text.init+0x5b): undefined reference to `bluez_init'
make: *** [.tmp_vmlinux1] Error 1

Quoted 7 lines

This is a separate error, apparently because net/socket.c calls "blues_init()" if bluetooth is configured in.

That shouldn't be needed at all, since the "init_module()" thing should take care of it. Please try just removing the bluez_init references from net/socket.c - that should fix the compile, and if all the ordering issues are ok, it should also work afterwards..

I started a clean build kernel without this code and it works. Thanks for the info and a new patch follows.

Regards

Marcel

#6 lore raw
In reply to Marcel Holtmann

Marcel,

Quoted 11 lines
net/bluetooth/af_bluetooth.c +1 -1
@@ -345,7 +345,7 @@
        return 0;
 }
 
-static void __exit bluez_cleanup(void)
+void __exit bluez_cleanup(void)
 {
        hci_sock_cleanup();
        hci_core_cleanup();
@@ -356,11 +356,9 @@
        remove_proc_entry("bluetooth", NULL);

net/bluetooth/af_bluetooth.c line 366

Quoted 10 lines
net/bluetooth/af_bluetooth.c +0 -2
 }
 
-#ifdef MODULE
 module_init(bluez_init);
 module_exit(bluez_cleanup);
 
 MODULE_AUTHOR("Maxim Krasnyansky <[email protected]>");
 MODULE_DESCRIPTION("BlueZ Core ver " VERSION);
 MODULE_LICENSE("GPL");
-#endif

This is wrong. If Bluetooth is compiled in, bluez_init() is called from linux/net/socket.c. We have to change that to subsys_initcall.

Linus, please don't apply. We'll send correct patch later.

Thanks
Max