lkml.org 
[lkml]   [2002]   [Jan]   [31]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH] 2.5.3 remove global semaphore_lock spin lock.
    Bob Miller wrote:
    >
    > Below is a patch for i386 that replaces the global spin lock semaphore_lock,
    > with the rwlock_t embedded in the wait_queue_head_t in the struct semaphore.
    >

    Looks sane. In practice, the speedup is unmeasurable, but...

    > ...
    > + unsigned long flags;
    > + wq_write_lock_irqsave(&sem->wait.lock, flags);
    > - spin_lock_irq(&semaphore_lock);

    I rather dislike spin_lock_irq(), because it's fragile (makes
    assumptions about the caller's state). But in this case,
    it's probably a reasonable micro-optimisation to not have to
    save the flags. Nobody should be calling down() with local
    interrupts disabled.

    > ...
    > +/*
    > + * Same as __wake_up but called with the wait_queue_head_t lock held
    > + * in at least read mode.
    > + */
    > +void __wake_up_locked(wait_queue_head_t *q, unsigned int mode, int nr)
    > +{
    > + if (q) {

    I don't think we need to test `q' here. It's a new function,
    and we don't need to support broken callers. So __wake_up_locked()
    can become a macro direct call to __wake_up_common().

    > + __wake_up_common(q, mode, nr, 0);

    This one breaks the camel's back :)

    Let's un-inline __wake_up_common and EXPORT_SYMBOL it.

    It'd be good if you could also verify that the code still
    works when the use-rwlocks-for-waitqueues option is turned
    on. (wait.h:USE_RW_WAIT_QUEUE_SPINLOCK)


    -
    -
    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: 2005-03-22 13:16    [W:4.161 / U:0.028 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site