Re: [PATCH] Replace timer_bh with tasklet

george anzinger
2002-06-20T00:40:37Z

kuznet@ms2.inr.ac.ru wrote:
>
> Hello!
>
> > > But this is impossible, timers must not race with another BHs,
> > > all the code using BHs depends on this. That's why they are BHs.
> >
> > If indeed they do "race" the old code had the timer_bh being first.
> > So does this patch.
>
> I do not understand what you mean here.
>
> I feel you misunderstand my comment. I said the patch is one pure big bug,
> because tasklets are not serialized wrt BHs. Timer MUST. If you are going
> to get rid of this must, start from editing all the code which makes this
> assumption.

At this point I am only aware of one place in the kernel where timers and
other BH code interact, that being deliver_to_old_ones() in net/core/dev.c.
Even there, it appears that the interaction is not with another BH but with
code that at one time was BH code. As I understand it, BH and all of its
support stuff is being removed from the kernel. That is why I was asked to
submit this patch. So far, this is the only area that has come up as a
locking or serialization problem.

As to this bit of code, it appears that changing it to do much the same as
it did to the timer_bh to the new timer softirq should resolve the issue.

If you have additional input on this or other problems that need to be addressed,
I welcome it.

Correct me if I am wrong, but it looks like the network code has already left
the BH playing field.
>
~snip
>
> > Not really. One REALLY expects timers to expire in timed order :) Using
> > a separate procedure to deliver a timer just because it is of a different
> > resolution opens one up to a world of pathology.
>
> Are you going to mix use of hires and lores timers for one task?

Of course. Why use high-res when you don't need it? There is additional
overhead for high-res. To require all timers to be high-res when only one
is needed is a waste.

--
George Anzinger george@mvista.com
High-res-timers: http://sourceforge.net/projects/high-res-timers/
Real time sched: http://sourceforge.net/projects/rtsched/
Preemption patch: http://www.kernel.org/pub/linux/kernel/people/rml