[lkml]   [2004]   [Jan]   [2]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
SubjectRe: [rfc/patch] wake_up_info() draft ...
On Fri, 2 Jan 2004, Manfred Spraul wrote:

> >why are you saying so?
> >
> >
> >
> sizeof(waitqueue_t) increases.

Come on Manfred, you can do better :-)

> >@@ -1658,6 +1659,8 @@
> > unsigned flags;
> > curr = list_entry(tmp, wait_queue_t, task_list);
> > flags = curr->flags;
> >+ if (info)
> >+ dup_wait_info(&curr->info, info);
> > if (curr->func(curr, mode, sync) &&
> > (flags & WQ_FLAG_EXCLUSIVE) &&
> > !--nr_exclusive)
> >
> IMHO these two lines belong into curr->func, perhaps with a reference
> implementation that uses
> struct wait_queue_entry_info {
> wait_queue_t wait;
> struct wait_info info;
> };
> We have already a callback pointer, so why add special case code into
> the common codepaths? Custom callbacks could handle the special case of
> an info wakeup.

I forgot you are the structure wrapper guy :-)) See, the idea of having a
callback only thig works fine with things like epoll that uses it. So I'd
be ok with it. The reason of having it done the way I did, is because even
standard waked up task can have the ability to fetch info about the wake
up from the wait queue item, that is the MCD of the whole wait/wake Linux
mechanism. Also don't be fooled by the names dup/dtor by thinking that you
have to kmalloc new data in sutuation where more that sizeof(void *) is
needed. you can simply use a ref count method doing atomic_inc() and
atomic_dec_and_test(). With this method you can fetch info either from the
callback (it is already stored inside the wait queue item when the
callback is called) or from the wait queue item itself for std woke up

- Davide

To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to
More majordomo info at
Please read the FAQ at

 \ /
  Last update: 2005-03-22 13:59    [W:0.040 / U:4.684 seconds]
©2003-2018 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site