Linux tasklet question



The following are properties of tasklet (collected by googling). But,
there are some questions that are not clear to me. Can someone please
try to clarify?

1) By scheduling a tasklet, you simply ask for it to be executed at a
later time chosen by the kernel.
Question:
Is it possible to deterministically know when a tasklet will be
executed once the tasklet is scheduled? If so, how?
Will tasklet always be scheduled before any kernel threads waiting for
execution?

2) An already scheduled but not yet executed tasklet can be
rescheduled, but will be executed only once.
Question:
What is the reason to this (e.g. reason for the tasklet only executed
once although scheduled twice)?
If a tasklet is scheduled twice, but only run once, how can we find
this out?

3) Tasklets may be run immediately if the system is not under heavy
load but never later than the next timer tick.
Question:
What does this mean?
Does it mean that if another interrupt (same type) happens before the
next timer tick (and a kernel thread is hogging the processor), will
its tasklet never be scheduled?
If so, it is higly possible that tasklets will be lost..

General question:
Are tasklets pre-emptive? E.g. will a scheduled tasklet get priority
over an executing kernel thread, and hence pre-empt the kernel thread?

.



Relevant Pages