--- zzzz-none-000/linux-2.4.17/include/linux/interrupt.h 2001-11-22 19:46:19.000000000 +0000 +++ sangam-fb-322/linux-2.4.17/include/linux/interrupt.h 2004-11-24 13:21:48.000000000 +0000 @@ -55,12 +55,21 @@ enum { - HI_SOFTIRQ=0, + RUN_TIMER_LIST=0, + HI_SOFTIRQ, NET_TX_SOFTIRQ, NET_RX_SOFTIRQ, TASKLET_SOFTIRQ + }; +/* + * The ALWAYS_SOFTIRQ tasks will always be called repeatedly (until the pending + * bit stays cleared) each time do_softirq is called. + */ +#define ALWAYS_SOFTIRQ (1 << RUN_TIMER_LIST) + + /* softirq mask and active fields moved to irq_cpustat_t in * asm/hardirq.h to get better cache usage. KAO */ @@ -71,6 +80,8 @@ void *data; }; +extern void timer_softirq(struct softirq_action* a); + asmlinkage void do_softirq(void); extern void open_softirq(int nr, void (*action)(struct softirq_action*), void *data); extern void softirq_init(void); @@ -152,6 +163,14 @@ #define tasklet_unlock(t) do { } while (0) #endif +#if 0 +static inline void trigger_softirq(void) +{ + if(softirq_pending(smp_processor_id())) + do_softirq(); +} +#endif + extern void FASTCALL(__tasklet_schedule(struct tasklet_struct *t)); static inline void tasklet_schedule(struct tasklet_struct *t)