On Thu, 2007-08-02 at 00:32 +0400, Oleg Nesterov wrote: > On 08/02, Oleg Nesterov wrote: > > > > And I don't understand why rt_mutex_setprio() is called just before > > calling work->func(). This means that a high-priority work could > > be delayed by the low-priority ->current_work. > > Aha, I missed the rt_mutex_setprio() in insert_work(). > > This is not good either. Suppose we have > > void work_handler(struct work_struct *self) > { > if (!try_lock()) { > // try again later... > queue_work(wq, self); > return; > } > > do_the_work(); > } > > What if that work was queued by the low-priority thread, and > then a high-priority thread inserts a new work when work_handler() > is running? You mean the above queue_work(wq, self) would get an arbitrarily higher priority vs. what it would normally? Yeah, I suppose we would want follow the priority inside the workqueue thread only .. Daniel - To unsubscribe from this list: send the line "unsubscribe linux-rt-users" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html