lkml.org 
[lkml]   [2003]   [Aug]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
From
Subject[PATCH-2.6.0-test3-bk8] task queue to work queue conversion - drivers/char/pcxx.c
Date
Dear Linus,

The patch would convert the task queue
in the pcxx.c to work queue.

The code is tested only for compilation (it produces .o).
[Following your call to make drivers into the state of
"it must compile" - ref: your riscom patch thread :-)]

The patch is against 2.6.0-test3-bk8.
Please consider it for applying.


Regards
KK

======================================
diffstat output:

pcxx.c | 20 +++-----------------
pcxx.h | 2 +-
2 files changed, 4 insertions(+), 18 deletions(-)

========================================
The following is the patch:

--- linux-2.6.0-test3-bk8/drivers/char/pcxx.orig.c 2003-08-21 20:58:42.000000000 +0530
+++ linux-2.6.0-test3-bk8/drivers/char/pcxx.c 2003-08-21 22:24:40.000000000 +0530
@@ -121,7 +121,7 @@
MODULE_PARM(altpin, "1-4i");
MODULE_PARM(numports, "1-4i");

-#endif MODULE
+#endif /* MODULE */

static int numcards = 1;
static int nbdevs = 0;
@@ -142,8 +142,6 @@

static struct timer_list pcxx_timer;

-DECLARE_TASK_QUEUE(tq_pcxx);
-
static void pcxxpoll(unsigned long dummy);
static void fepcmd(struct channel *, int, int, int, int, int);
static void pcxe_put_char(struct tty_struct *, unsigned char);
@@ -161,7 +159,6 @@
static void pcxxparam(struct tty_struct *, struct channel *ch);
static void do_softint(void *);
static inline void pcxe_sched_event(struct channel *, int);
-static void do_pcxe_bh(void);
static void pcxe_start(struct tty_struct *);
static void pcxe_stop(struct tty_struct *);
static void pcxe_throttle(struct tty_struct *);
@@ -220,7 +217,6 @@
save_flags(flags);
cli();
del_timer_sync(&pcxx_timer);
- remove_bh(DIGI_BH);

if ((e1 = tty_unregister_driver(pcxe_driver)))
printk("SERIAL: failed to unregister serial driver (%d)\n", e1);
@@ -312,8 +308,7 @@
static inline void pcxe_sched_event(struct channel *info, int event)
{
info->event |= 1 << event;
- queue_task(&info->tqueue, &tq_pcxx);
- mark_bh(DIGI_BH);
+ schedule_work(&info->tqueue);
}

static void pcxx_error(int line, char *msg)
@@ -1150,7 +1145,6 @@
}
memset(digi_channels, 0, sizeof(struct channel) * nbdevs);

- init_bh(DIGI_BH,do_pcxe_bh);

init_timer(&pcxx_timer);
pcxx_timer.function = pcxxpoll;
@@ -1450,8 +1444,7 @@
}
ch->brdchan = bc;
ch->mailbox = gd;
- ch->tqueue.routine = do_softint;
- ch->tqueue.data = ch;
+ INIT_WORK(&(ch->tqueue), do_softint, ch);
ch->board = &boards[crd];
#ifdef DEFAULT_HW_FLOW
ch->digiext.digi_flags = RTSPACE|CTSPACE;
@@ -2253,13 +2246,6 @@
}
}

-
-static void do_pcxe_bh(void)
-{
- run_task_queue(&tq_pcxx);
-}
-
-
static void do_softint(void *private_)
{
struct channel *info = (struct channel *) private_;
--- linux-2.6.0-test3-bk8/drivers/char/pcxx.orig.h 2003-08-09 10:04:52.000000000 +0530
+++ linux-2.6.0-test3-bk8/drivers/char/pcxx.h 2003-08-21 21:17:34.000000000 +0530
@@ -88,7 +88,7 @@
int event;
wait_queue_head_t open_wait;
wait_queue_head_t close_wait;
- struct tq_struct tqueue;
+ struct work_struct tqueue;
/* ------------ Async control data ------------- */
unchar modemfake; /* Modem values to be forced */
unchar modem; /* Force values */

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

\
 
 \ /
  Last update: 2005-03-22 13:47    [W:0.035 / U:5.116 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site