lkml.org 
[lkml]   [2009]   [Mar]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [TIP][RFC 2/7] futex: futex_top_waiter()
Thomas Gleixner wrote:
> On Mon, 2 Mar 2009, Darren Hart wrote:
>
>> From: Darren Hart <dvhltc@us.ibm.com>
>>
>> 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


\
 
 \ /
  Last update: 2009-03-09 19:07    [W:0.099 / U:0.196 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site