cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

jfs_lock.h (883B)


      1/* SPDX-License-Identifier: GPL-2.0-or-later */
      2/*
      3 *   Copyright (C) International Business Machines Corp., 2000-2001
      4 *   Portions Copyright (C) Christoph Hellwig, 2001-2002
      5 */
      6#ifndef _H_JFS_LOCK
      7#define _H_JFS_LOCK
      8
      9#include <linux/spinlock.h>
     10#include <linux/mutex.h>
     11#include <linux/sched.h>
     12
     13/*
     14 *	jfs_lock.h
     15 */
     16
     17/*
     18 * Conditional sleep where condition is protected by spinlock
     19 *
     20 * lock_cmd and unlock_cmd take and release the spinlock
     21 */
     22#define __SLEEP_COND(wq, cond, lock_cmd, unlock_cmd)	\
     23do {							\
     24	DECLARE_WAITQUEUE(__wait, current);		\
     25							\
     26	add_wait_queue(&wq, &__wait);			\
     27	for (;;) {					\
     28		set_current_state(TASK_UNINTERRUPTIBLE);\
     29		if (cond)				\
     30			break;				\
     31		unlock_cmd;				\
     32		io_schedule();				\
     33		lock_cmd;				\
     34	}						\
     35	__set_current_state(TASK_RUNNING);			\
     36	remove_wait_queue(&wq, &__wait);		\
     37} while (0)
     38
     39#endif				/* _H_JFS_LOCK */