* Re: [PATCH 12/17] isdn/sc: irq handler clean
@ 2007-10-22 12:04 Karsten Keil
0 siblings, 0 replies; 2+ messages in thread
From: Karsten Keil @ 2007-10-22 12:04 UTC (permalink / raw)
To: LKML; +Cc: kkeil, akpm
commit ebf0fb18d5c19bb0201912850d14a9fda292ee0e
Author: Jeff Garzik <jeff@garzik.org>
Date: Fri Oct 19 19:31:27 2007 -0400
isdn/sc: irq handler clean
* pass card number to irq handler
* use card number in irq handler to avoid looping through each adapter
Acked-by: Karsten Keil <kkeil@suse.de>
Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
drivers/isdn/sc/init.c | 3 ++-
drivers/isdn/sc/interrupt.c | 17 ++---------------
2 files changed, 4 insertions(+), 16 deletions(-)
ebf0fb18d5c19bb0201912850d14a9fda292ee0e
diff --git a/drivers/isdn/sc/init.c b/drivers/isdn/sc/init.c
index d09c854..dd0acd0 100644
--- a/drivers/isdn/sc/init.c
+++ b/drivers/isdn/sc/init.c
@@ -334,7 +334,8 @@ static int __init sc_init(void)
*/
sc_adapter[cinst]->interrupt = irq[b];
if (request_irq(sc_adapter[cinst]->interrupt, interrupt_handler,
- IRQF_DISABLED, interface->id, NULL))
+ IRQF_DISABLED, interface->id,
+ (void *)(unsigned long) cinst))
{
kfree(sc_adapter[cinst]->channel);
indicate_status(cinst, ISDN_STAT_UNLOAD, 0, NULL); /* Fix me */
diff --git a/drivers/isdn/sc/interrupt.c b/drivers/isdn/sc/interrupt.c
index bef7963..485be8b 100644
--- a/drivers/isdn/sc/interrupt.c
+++ b/drivers/isdn/sc/interrupt.c
@@ -21,28 +21,15 @@
#include "card.h"
#include <linux/interrupt.h>
-static int get_card_from_irq(int irq)
-{
- int i;
-
- for(i = 0 ; i < cinst ; i++) {
- if(sc_adapter[i]->interrupt == irq)
- return i;
- }
- return -1;
-}
-
/*
*
*/
-irqreturn_t interrupt_handler(int interrupt, void *cardptr)
+irqreturn_t interrupt_handler(int dummy, void *card_inst)
{
RspMessage rcvmsg;
int channel;
- int card;
-
- card = get_card_from_irq(interrupt);
+ int card = (int)(unsigned long) card_inst;
if(!IS_VALID_CARD(card)) {
pr_debug("Invalid param: %d is not a valid card id\n", card);
--
Karsten Keil
SuSE Labs
ISDN and VOIP development
SUSE LINUX Products GmbH, Maxfeldstr.5 90409 Nuernberg, GF: Markus Rex, HRB 16746 (AG Nuernberg)
^ permalink raw reply [flat|nested] 2+ messages in thread* [PATCH 0/17] various irq handler cleanups
@ 2007-10-21 7:52 Jeff Garzik
2007-10-21 7:52 ` [PATCH 12/17] isdn/sc: irq handler clean Jeff Garzik
0 siblings, 1 reply; 2+ messages in thread
From: Jeff Garzik @ 2007-10-21 7:52 UTC (permalink / raw)
To: LKML
This series continues the work of running through irq handlers that use
their 'irq' argument -- almost always for trivial (or even wrong)
reasons.
In many cases, this work eliminates some pointless code in the fastpath,
and/or otherwise makes interrupt handling [ever so] slightly more
efficient and clean.
As usual, this work is being committed to the 'irq-cleanups' branch of
git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/misc-2.6.git
which encompasses the following changes (includes some previously
posted, and not re-posted in this series):
older cleanups:
[PARPORT] Consolidate code copies into a single generic irq handler
[PARPORT] Kill useful 'irq' arg from parport_{generic_irq,ieee1284_interru
[PARPORT] Remove unused 'irq' argument from parport irq functions
[BLUETOOTH] Eliminate checks for impossible conditions in irq handler
Eliminate pointless casts from void* in a few driver irq handlers.
[SPARC, XEN, NET/CXGB3] use irq_handler_t where appropriate
[NETDRVR] lib82596, netxen: delete pointless tests from irq handler
[SCSI] aha152x: delete pointless test in irq handler
[ATM, CHAR, TOUCHSCREEN] remove needless use of irq handler first arg
new cleanups:
[IRQ ARG CLEANUP] more driver cleanups
drivers/char/ip2: split out irq core logic into separate function
drivers/char/ip2: separate polling and irq-driven work entry points
char/pcmcia/synclink_cs: trim trailing whitespace
drivers/char/pcmcia/synclink_cs.c: irq handler cleanups
drivers/char/riscom8: irq handler cleanups
drivers/char/{rio,specialix,sx}: irq handler cleanups
arch/x86/kernel/vm86_32.c: irq handler cleanup
drivers/char/{synclink,tpm}: irq handler cleanups
drivers/input/serio/i8042.c: irq handler clean
isdn/act2000: fix major bug. clean irq handler.
isdn/sc: irq handler clean
[netdrvr] driver irq handler cleanups
pcmcia/i82365: irq handler cleanups
serial, rtc/ds1374: irq handler cleanups
[SCSI] driver irq handler cleanups
RTC interrupt handling cleanups
^ permalink raw reply [flat|nested] 2+ messages in thread* [PATCH 12/17] isdn/sc: irq handler clean
2007-10-21 7:52 [PATCH 0/17] various irq handler cleanups Jeff Garzik
@ 2007-10-21 7:52 ` Jeff Garzik
0 siblings, 0 replies; 2+ messages in thread
From: Jeff Garzik @ 2007-10-21 7:52 UTC (permalink / raw)
To: LKML; +Cc: kkeil, akpm
commit ebf0fb18d5c19bb0201912850d14a9fda292ee0e
Author: Jeff Garzik <jeff@garzik.org>
Date: Fri Oct 19 19:31:27 2007 -0400
isdn/sc: irq handler clean
* pass card number to irq handler
* use card number in irq handler to avoid looping through each adapter
Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
drivers/isdn/sc/init.c | 3 ++-
drivers/isdn/sc/interrupt.c | 17 ++---------------
2 files changed, 4 insertions(+), 16 deletions(-)
ebf0fb18d5c19bb0201912850d14a9fda292ee0e
diff --git a/drivers/isdn/sc/init.c b/drivers/isdn/sc/init.c
index d09c854..dd0acd0 100644
--- a/drivers/isdn/sc/init.c
+++ b/drivers/isdn/sc/init.c
@@ -334,7 +334,8 @@ static int __init sc_init(void)
*/
sc_adapter[cinst]->interrupt = irq[b];
if (request_irq(sc_adapter[cinst]->interrupt, interrupt_handler,
- IRQF_DISABLED, interface->id, NULL))
+ IRQF_DISABLED, interface->id,
+ (void *)(unsigned long) cinst))
{
kfree(sc_adapter[cinst]->channel);
indicate_status(cinst, ISDN_STAT_UNLOAD, 0, NULL); /* Fix me */
diff --git a/drivers/isdn/sc/interrupt.c b/drivers/isdn/sc/interrupt.c
index bef7963..485be8b 100644
--- a/drivers/isdn/sc/interrupt.c
+++ b/drivers/isdn/sc/interrupt.c
@@ -21,28 +21,15 @@
#include "card.h"
#include <linux/interrupt.h>
-static int get_card_from_irq(int irq)
-{
- int i;
-
- for(i = 0 ; i < cinst ; i++) {
- if(sc_adapter[i]->interrupt == irq)
- return i;
- }
- return -1;
-}
-
/*
*
*/
-irqreturn_t interrupt_handler(int interrupt, void *cardptr)
+irqreturn_t interrupt_handler(int dummy, void *card_inst)
{
RspMessage rcvmsg;
int channel;
- int card;
-
- card = get_card_from_irq(interrupt);
+ int card = (int)(unsigned long) card_inst;
if(!IS_VALID_CARD(card)) {
pr_debug("Invalid param: %d is not a valid card id\n", card);
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2007-10-22 12:04 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2007-10-22 12:04 [PATCH 12/17] isdn/sc: irq handler clean Karsten Keil
-- strict thread matches above, loose matches on Subject: below --
2007-10-21 7:52 [PATCH 0/17] various irq handler cleanups Jeff Garzik
2007-10-21 7:52 ` [PATCH 12/17] isdn/sc: irq handler clean Jeff Garzik
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®