Exemple #1
0
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;
}
Exemple #3
0
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
}