Re: tasklet_action() failure

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 10/24/07, Mohammad M Molla <merajuli@xxxxxxxxx> wrote:
> Its a bit strange that the passed parameter is not used.
>

It is not really strange, as THIS particular tasklet_action() is NOT
using the parameter passed in, but other tasklet_action() are:

./drivers/misc/lkdtm.c:
void jp_tasklet_action(struct softirq_action *a)
                lkdtm.kp.symbol_name = "tasklet_action";
                lkdtm.entry = (kprobe_opcode_t*) jp_tasklet_action;

./drivers/serial/serial_core.c:
static void uart_tasklet_action(unsigned long data)
                        tasklet_init(&state->info->tlet, uart_tasklet_action,

./kernel/softirq.c:
static void tasklet_action(struct softirq_action *a)
        open_softirq(TASKLET_SOFTIRQ, tasklet_action, NULL);

./arch/ppc/4xx_io/serial_sicc.c:
static void siccuart_tasklet_action(unsigned long data)
        tasklet_init(&info->tlet, siccuart_tasklet_action,


>From above we can see that this particular tasklet_action() is a func
ptr setup in open_softirq() call, whereas others will call
tasklet_init() to setup the different tasklet_action func ptr.

And who call all these different tasklet_action() via func ptr?

It is in the kernel/softirq.c: __do_softirq() function:

        do {
                if (pending & 1) {
                        h->action(h);===> func ptr is called here.
                        rcu_bh_qsctr_inc(cpu);
                }
                h++;
                pending >>= 1;
        } while (pending);

--
To unsubscribe from this list: send an email with
"unsubscribe kernelnewbies" to ecartis@xxxxxxxxxxxx
Please read the FAQ at http://kernelnewbies.org/FAQ


[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux