PATCH to fix bug: "serial" does not show up in /proc/interrupts
Here is a patch to fix the serial driver so that its name appears in /proc/interrupts. The bug was caused by code that was overwriting the string literal "serial" with "". gcc merges all the "serial" strings together into one, so the "serial" sent to irq_request() was being ""ed as a side-effect.
Here is the patch to 2.4.7-ac3 both inline and attached. // Thomas Hood <jdthood_AT_yahoo.co.uk>
serial.c Wed Aug 1 23:11:01 2001 renamed from serial.c_ORIG Wed Aug 1 23:02:09 2001 +5 -2
@@ -4852,10 +4852,13 @@ MODULE_DEVICE_TABLE(pci, serial_pci_tbl); +/* serial_pci_driver_name[] gets truncated to "" if the pci probe fails */ +static char serial_pci_driver_name[] = "serial"; + static struct pci_driver serial_pci_driver = { - name: "serial", + name: serial_pci_driver_name, probe: serial_init_one, - remove: serial_remove_one, + remove: serial_remove_one, id_table: serial_pci_tbl, };
Quoted 30 lines · I wrote:
I noticed the following anomaly. I am using a modular serial driver for
/dev/ttyS0and/dev/ttyS1(actually/dev/tts/0and/dev/tts/1under devfs). See the listing of my/proc/interruptsbelow. I have/dev/ttyS1open; it uses IRQ3; but note that the name of the serial driver is not printed in the list.root@thanatos:~# cat /proc/interrupts CPU0 0: 65078 XT-PIC timer 1: 1546 XT-PIC keyboard 2: 0 XT-PIC cascade 3: 1979 XT-PIC 5: 3324 XT-PIC CS4231 8: 1 XT-PIC rtc 10: 27 XT-PIC mwave_3780i 11: 5021 XT-PIC usb-uhci, Texas Instruments PCI1250, Texas Instruments PCI1250 (#2) 12: 3268 XT-PIC PS/2 Mouse 14: 8807 XT-PIC ide0 15: 4 XT-PIC ide1 NMI: 0 ERR: 0Strange. But it gets stranger. I insert a combination modem/ ethernet pcmcia card and I get:
7: 9 XT-PIC
xirc2ps_cs,In the past, there was something printed after the comma, but now there's just a space. Bizarre.
Quoted 8 lines
I was not able to find any silly bugs in the serial driver or irq routines that would account for this, so I am worried that something is very wrong somewhere.
--
Thomas Hood
jdthood_AT_yahoo.co.uk
serial.c renamed from serial.c_ORIG +5 -2
@@ -4852,10 +4852,13 @@MODULE_DEVICE_TABLE (pci, serial_pci_tbl); +/* serial_pci_driver_name[] gets truncated to "" if the pci probe fails */ +static char serial_pci_driver_name[] ="serial" ; +static struct pci_driver serial_pci_driver = { - name:"serial" , + name: serial_pci_driver_name, probe: serial_init_one, - remove: serial_remove_one, + remove: serial_remove_one, id_table: serial_pci_tbl, };