I am new to tasklets in Linux. Here I am scheduling 3 tasklets in ISR. But what I observed is that only one tasklet in executed.
fill_buf->data=jiffies;
tasklet_schedule(fill_buf);
fill_buf->data=jiffies;
tasklet_schedule(fill_buf);
fill_buf->data=jiffies;
tasklet_schedule(fill_buf);
fill_buf is tasklet_struct and Linux version is 5.10.63.
You are scheduling the same tasklet three times in a row, but a tasklet can only be scheduled again if it has already run (or it is currently running).
In fact,
tasklet_schedule()checks the tasklet->stateand only schedules it if not already scheduled:If you want to run the tasklet 3 times in a row, you can reschedule it from within itself: