Messages in this thread |  | | Date | Sat, 9 Feb 2013 15:30:06 +0800 | Subject | Re: [PATCH 3/4] rwsem: implement write lock stealing | From | Hillf Danton <> |
| |
On Sat, Feb 9, 2013 at 10:45 AM, Michel Lespinasse <walken@google.com> wrote: > + if (waiter->type != RWSEM_WAITING_FOR_WRITE) { > + list_del(&waiter->list); > + > + /* Set RWSEM_WAITING_BIAS before waking the last reader > + * so we know there will be a remaining active locker. > + */ > + if (!(--readers) && !list_empty(&sem->wait_list)) > + rwsem_atomic_add(RWSEM_WAITING_BIAS, sem); > + > + tsk = waiter->task; > + smp_mb();
For what with mb?
> + waiter->task = NULL; > + wake_up_process(tsk); > + put_task_struct(tsk); > + } > + } while (readers); > + sem->wait_readers = 0;
> + /* If there are no active locks, wake the front queued process(es). */
s/locks/lockers/
> + if (!(count & RWSEM_ACTIVE_MASK)) > + sem = __rwsem_do_wake(sem, RWSEM_WAKE_ANY);
|  |