int ttm_read_trylock(struct ttm_lock *lock, bool interruptible) { const char *wmsg; int flags, ret; bool locked; ret = 0; if (interruptible) { flags = PCATCH; wmsg = "ttmrti"; } else { flags = 0; wmsg = "ttmrt"; } mtx_lock(&lock->lock); while (!__ttm_read_trylock(lock, &locked)) { ret = msleep(lock, &lock->lock, flags, wmsg, 0); if (ret == EINTR) ret = ERESTARTSYS; if (ret != 0) break; } MPASS(!locked || ret == 0); mtx_unlock(&lock->lock); return (locked) ? 0 : -EBUSY; }
int ttm_read_trylock(struct ttm_lock *lock, bool interruptible) { int ret = 0; bool locked; if (interruptible) ret = wait_event_interruptible (lock->queue, __ttm_read_trylock(lock, &locked)); else wait_event(lock->queue, __ttm_read_trylock(lock, &locked)); if (unlikely(ret != 0)) { BUG_ON(locked); return ret; } return (locked) ? 0 : -EBUSY; }
int ttm_read_trylock(struct ttm_lock *lock, bool interruptible) { printf("%s stub\n", __func__); return -ENOSYS; #ifdef notyet int ret = 0; bool locked; if (interruptible) ret = wait_event_interruptible (lock->queue, __ttm_read_trylock(lock, &locked)); else wait_event(lock->queue, __ttm_read_trylock(lock, &locked)); if (unlikely(ret != 0)) { BUG_ON(locked); return ret; } return (locked) ? 0 : -EBUSY; #endif }