On Tue, 28 Mar 2017, Laurent Dufour wrote:
+#define __RANGE_RWLOCK_INITIALIZER(start, last) { \ + .node = { \ + .start = (start) \ + ,.last = (last) \ + } \ + }Hi Davidlohr, This macro doesn't expand correctly because the field name ".start" is replaced by the start parameter. Should rather be : #define __RANGE_RWLOCK_INITIALIZER(__start, __last) { \ .node = { \ .start = (__start) \ ,.last = (__last) \ } \ } By the way, should the other fields set as in __range_rwlock_init() ?
Indeed.
+/* + * lock for writing + */ +void range_write_lock(struct range_rwlock_tree *tree, struct range_rwlock *lock); +int range_write_lock_interruptible(struct range_rwlock_tree *tree, + struct range_rwlock *lock); +int range_write_lock_killable(struct range_rwlock_tree *tree, + struct range_rwlock *lock); +int range_read_trylock(struct range_rwlock_tree *tree, struct range_rwlock *lock);^^^^ range_write_trylock(...) isn't it ?
Duh, yeah. I'll wait to see if there are any more concerns and send a v2 with your corrections. Thanks, Davidlohr

