lockdep.h revision 361191
1296417Sdim/*- 2218885Sdim * Copyright (c) 2010 Isilon Systems, Inc. 3218885Sdim * Copyright (c) 2010 iX Systems, Inc. 4218885Sdim * Copyright (c) 2010 Panasas, Inc. 5218885Sdim * Copyright (c) 2013, 2014 Mellanox Technologies, Ltd. 6218885Sdim * All rights reserved. 7218885Sdim * 8218885Sdim * Redistribution and use in source and binary forms, with or without 9218885Sdim * modification, are permitted provided that the following conditions 10218885Sdim * are met: 11218885Sdim * 1. Redistributions of source code must retain the above copyright 12218885Sdim * notice unmodified, this list of conditions, and the following 13218885Sdim * disclaimer. 14249423Sdim * 2. Redistributions in binary form must reproduce the above copyright 15249423Sdim * notice, this list of conditions and the following disclaimer in the 16218885Sdim * documentation and/or other materials provided with the distribution. 17218885Sdim * 18218885Sdim * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 19276479Sdim * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 20218885Sdim * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 21218885Sdim * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 22218885Sdim * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 23218885Sdim * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 24218885Sdim * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 25218885Sdim * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 26218885Sdim * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 27218885Sdim * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28218885Sdim * 29218885Sdim * $FreeBSD: stable/11/sys/compat/linuxkpi/common/include/linux/lockdep.h 361191 2020-05-18 09:22:17Z hselasky $ 30218885Sdim */ 31276479Sdim 32218885Sdim#ifndef _LINUX_LOCKDEP_H_ 33218885Sdim#define _LINUX_LOCKDEP_H_ 34218885Sdim 35296417Sdimstruct lock_class_key { 36218885Sdim}; 37218885Sdim 38218885Sdim#define lockdep_set_class(lock, key) 39218885Sdim#define lockdep_set_class_and_name(lock, key, name) 40218885Sdim#define lockdep_set_current_reclaim_state(g) do { } while (0) 41218885Sdim#define lockdep_clear_current_reclaim_state() do { } while (0) 42218885Sdim 43218885Sdim#ifdef INVARIANTS 44218885Sdim#define lockdep_assert_held(m) do { \ 45218885Sdim struct lock_object *__lock = (struct lock_object *)(m); \ 46218885Sdim LOCK_CLASS(__lock)->lc_assert(__lock, LA_LOCKED); \ 47218885Sdim} while (0) 48243830Sdim 49243830Sdim#define lockdep_assert_held_once(m) do { \ 50243830Sdim struct lock_object *__lock = (struct lock_object *)(m); \ 51243830Sdim LOCK_CLASS(__lock)->lc_assert(__lock, LA_LOCKED | LA_NOTRECURSED); \ 52243830Sdim} while (0) 53243830Sdim 54243830Sdimstatic __inline bool 55243830Sdimlockdep_is_held(void *__m) 56243830Sdim{ 57243830Sdim struct lock_object *__lock; 58243830Sdim struct thread *__td; 59243830Sdim 60243830Sdim __lock = __m; 61243830Sdim return (LOCK_CLASS(__lock)->lc_owner(__lock, &__td) != 0); 62243830Sdim} 63243830Sdim 64243830Sdim#else 65243830Sdim#define lockdep_assert_held(m) do { } while (0) 66243830Sdim 67243830Sdim#define lockdep_assert_held_once(m) do { } while (0) 68243830Sdim 69243830Sdim#define lockdep_is_held(m) 1 70243830Sdim#endif 71243830Sdim 72243830Sdim#define might_lock(m) do { } while (0) 73243830Sdim#define might_lock_read(m) do { } while (0) 74296417Sdim 75243830Sdim#define lock_acquire(...) do { } while (0) 76243830Sdim#define lock_release(...) do { } while (0) 77243830Sdim#define lock_acquire_shared_recursive(...) do { } while (0) 78243830Sdim 79243830Sdim#endif /* _LINUX_LOCKDEP_H_ */ 80243830Sdim