On Friday 22 June 2007, Steven Rostedt wrote: > This patch creates an alternative for drivers from using tasklets. > It creates a "work_tasklet". When configured to use work_tasklets > instead of tasklets, instead of creating tasklets, a work queue > is made in its place. The API is still the same, and the drivers > don't know that a work queue is being used. >
Perhaps the API can be slimmed down in the process, because half of the tasklet interface functions are hardly used at all. > +#define DECLARE_TASKLET(name, func, data) \ > + struct tasklet_struct name = { \ > + __WORK_INITIALIZER((name).work, work_tasklet_exec), \ > + LIST_HEAD_INIT((name).list), \ > + 0, \ > + ATOMIC_INIT(0), \ > + func, \ > + data, \ > + #name \ > + } 18 users of this macro. Maybe too much for the start, but if we convert all of them to use either tasklet_init or use work queues directly, the macro can go away. > +#define DECLARE_TASKLET_DISABLED(name, func, data) \ > + struct tasklet_struct name = { \ > + __WORK_INITIALIZER((name).work, work_tasklet_exec), \ > + LIST_HEAD_INIT((name).list), \ > + 0, \ > + ATOMIC_INIT(1), \ > + func, \ > + data, \ > + #name \ > + } this one is easier, there are only four users in total: three input drivers, and tipc. > +void tasklet_schedule(struct tasklet_struct *t); > +#define tasklet_hi_schedule tasklet_schedule > +extern fastcall void tasklet_enable(struct tasklet_struct *t); > +#define tasklet_hi_enable tasklet_enable there are 34 files using tasklet_hi_* functions. In theory, these could be converted to the non-hi version with a simple search and replace, if it's clear that there is not much point in keeping them. The most common use of tasklet_hi is in the alsa drivers. If it actually makes a difference for them already, maybe there should be an alsa softirq instead of moving them all over to work queues. > +void tasklet_disable_nosync(struct tasklet_struct *t); only has two users, bcm43xx and sc92031. If both are converted to workqueue, the interface removed can be removed. > +extern void tasklet_kill_immediate(struct tasklet_struct *t, unsigned int > cpu); only one user in total, rcupdate.c. You already take care of that, it seems the declaration is just a leftover. Arnd <>< - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/