Messages in this thread | | | Subject | Re: [PATCH v3 2/2] locking/percpu-rwsem: Annotate rwsem ownership transfer by setting RWSEM_OWNER_UNKNOWN | From | Waiman Long <> | Date | Tue, 15 May 2018 14:45:12 -0400 |
| |
On 05/15/2018 02:02 PM, Matthew Wilcox wrote: > On Tue, May 15, 2018 at 07:58:05PM +0200, Peter Zijlstra wrote: >> On Tue, May 15, 2018 at 01:38:04PM -0400, Waiman Long wrote: >>> +/* >>> + * Owner value to indicate the rwsem's owner is not currently known. >>> + */ >>> +#define RWSEM_OWNER_UNKNOWN ((struct task_struct *)-1) >> It might be nice to comment that this works and relies on having that >> ANON_OWNER bit set. > I'd rather change the definition to be ((struct task_struct *)2) > otherwise this is both reader-owned and anonymously-owned which doesn't > make much sense.
Thinking about it a bit more. I can actually just use one special bit (bit 0) to designate an unknown owner. So for a reader-owned lock, it is just owner == 1 as the owners are unknown for a reader owned lock. For a lock owned by an unknown writer, it is (owner & 1) && (owner != 1). That will justify the use of -1L and save bit 1 for future extension.
Cheers, Longman
| |