RE: [RFC 1/2] lib, Make gen_pool memory allocator lockless

Luck, Tony
2011-02-09T19:03:38Z

+static int set_bits_ll(unsigned long *addr, unsigned long mask_to_set)
+{
+ unsigned long val, nval;
+
+ nval = *addr;
+ do {
+ val = nval;
+ if (val & mask_to_set)
+ return -EBUSY;
+ } while ((nval = cmpxchg(addr, val, val | mask_to_set)) != val);
+
+ return 0;
+}

Spin loops like this should have a call to cpu_relax(), shouldn't they?

-Tony