[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]
RE: condvar wakeups
- From: "Perez-Gonzalez, Inaky" <inaky perez-gonzalez intel com>
- To: "'Ingo Molnar'" <mingo elte hu>,"'Saurabh Desai'" <sdesai austin ibm com>
- Cc: "'Ulrich Drepper'" <drepper redhat com>,"'NPTL mailing list'" <phil-list redhat com>
- Subject: RE: condvar wakeups
- Date: Thu, 8 May 2003 17:20:54 -0700
> From: Ingo Molnar [mailto:mingo elte hu]
>
> here's the latest futex-requeue kernel patch, against 2.5.69. I fixed the
>
> ...
> + if (++ret <= num) {
> + wake_up_all_sync(&this->waiters);
> + if (this->filp)
> + send_sigio(&this->filp->f_owner,
this->fd, POLL_IN);
> + } else {
> + list_add_tail(i, head2);
> + __attach_vcache(&this->vcache, uaddr2,
current->mm, futex_vcache_callback);
> + this->offset = offset2;
> + this->page = page2;
> + }
> + }
> + }
> +
> + unlock_futex_mm();
> +
> + unpin_page(page1);
> + unpin_page(page2);
Call me pedantic, please, but if we are attaching so many waiters
to a new page, shall not we unpin q->page before requeuing, then
pin that new page once per waiter and then at the tail of futex_wait()
unpin q->page?
Unless I am missing anything, once we exit from requeue(), page2 is
not pinned by anyone, so it could be perfectly be taken out to swap
space for a walk.
Iñaky Pérez-González -- Not speaking for Intel -- all opinions are my own
(and my fault)
[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]