Messages in this thread | | | Date | Mon, 07 Nov 2005 12:12:25 +1100 | From | Nick Piggin <> | Subject | Re: [PATCH] Fixes for RCU handling of task_struct |
| |
Andrew Morton wrote:
>>+static inline int get_task_struct_rcu(struct task_struct *t) >>+{ >>+ int oldusage; >>+ >>+ do { >>+ oldusage = atomic_read(&t->usage); >>+ if (oldusage == 0) { >>+ return 0; >>+ } >>+ } while (cmpxchg(&t->usage.counter, >>+ oldusage, oldusage + 1) != oldusage); >>+ return 1; >>+} > > > arm (at least) does not implement cmpxchg. >
Yes, and using atomic_t.counter in generic code is ugly, albeit compatible with all current implementations.
> I think Nick is working on patches which implement cmpxchg on all > architectures? >
Yes, it is basically ready to go.
-- SUSE Labs, Novell Inc.
Send instant messages to your online friends http://au.messenger.yahoo.com
- 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/
| |