Re: [TIP][RFC 2/7] futex: futex_top_waiter()

From: Darren Hart
Date: Mon Mar 09 2009 - 14:04:56 EST


Thomas Gleixner wrote:
On Mon, 2 Mar 2009, Darren Hart wrote:

From: Darren Hart <dvhltc@xxxxxxxxxx>

Improve legibility by wrapping finding the top waiter in a function. This
will be used by the follow-on patches for enabling requeue pi.
+static struct futex_q *futex_top_waiter(struct futex_hash_bucket *hb,
+ union futex_key *key)

Can we just have *head as argument instead of *hb ?

+{
+ struct plist_head *head;
+ struct futex_q *this;
+ struct futex_q *top_waiter = NULL;

struct futex_q *this;

+ head = &hb->chain;
+ plist_for_each_entry(this, head, list) {
+ if (match_futex(&this->key, key)) {
return this;

+ top_waiter = this;
+ break;
+ }
+ }
+ return top_waiter;

return NULL;

Makes the function half the size.

I'd prefer to keep a futex_hash_bucket in the signature as a plist_head doesn't help describe what the function does. However, I believe I have
addressed your concerns as to length with the following. Does this look
acceptable? I'll be resending the entire V6 patch series soon.

/**
* futex_top_waiter - return the highest priority waiter on a futex
* @hb: the hash bucket the futex_q's reside in
* @key: the futex key (to distinguish it from other futex futex_q's)
*
* Must be called with the hb lock held.
**/
static struct futex_q *futex_top_waiter(struct futex_hash_bucket *hb,
union futex_key *key)
{
struct futex_q *this;

plist_for_each_entry(this, &hb->chain, list) {
if (match_futex(&this->key, key))
return this;
}
return NULL;
}



--
Darren Hart
IBM Linux Technology Center
Real-Time Linux Team
--
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/