![]() | |||||||||||||
Messages in this thread |
On Sun, Aug 20, 2006 at 10:15:42PM +0900, Tejun Heo wrote: > free_fdtable_rc() schedules timer to reschedule fddef->wq if > schedule_work() on it returns 0. However, schedule_work() guarantees > that the target work is executed at least once after the scheduling > regardless of its return value. 0 return simply means that the work > was already pending and thus no further action was required. Hmm.. Is this really true ? IIRC, schedule_work() checks pending work based on bit ops on work->pending and clear_bit() is not a memory barrier. So, if I see work->pending = 1 in free_fdtable_work(), how do I know that the work function is already executing and missed the new work that I had queued ? Thanks Dipankar - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/ | ||||||||||||
| Last update: 2006-08-21 06:33 [from the cache] ©2003-2008 | |||||||||||||