Why yield in coredump_wait? [was: Re: Resent: BUG in RT 45-01 whenRT program dumps core]

From: Steven Rostedt
Date: Thu May 19 2005 - 08:39:15 EST


In the function coredump_wait there's a yield called:

static void coredump_wait(struct mm_struct *mm)
{
[...]
/* give other threads a chance to run: */
yield();

zap_threads(mm);
[...]

I don't see any reason for this. Although the comment says it's giving
other threads a chance to run, but the zap_threads below it will just
send a kill signal to all those sharing the mm and then this thread will
wait for completion (if there were threads to wait on).

Now if there were no other threads to wait on it would just continue.
So, is there some real reason that this yield is there? Or is it just
trying to be nice, as in saying, "I'm dieing now and just don't want to
waste others time" (which I highly doubt is the case).

The reason I'm asking this, is that RT tasks should not call yield,
since it is pretty much meaningless, since an RT task won't yield to any
task of lesser priority, and in Ingo's current kernel the yield will
send a bug message if it was called by an RT task.

Thanks,

-- Steve



-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/