4 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License version 2 only,
8 * as published by the Free Software Foundation.
10 * This program is distributed in the hope that it will be useful, but
11 * WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * General Public License version 2 for more details (a copy is included
14 * in the LICENSE file that accompanied this code).
16 * You should have received a copy of the GNU General Public License
17 * version 2 along with this program; If not, see
18 * http://www.sun.com/software/products/lustre/docs/GPLv2.pdf
20 * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
21 * CA 95054 USA or visit www.sun.com if you need additional information or
27 * Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
28 * Use is subject to license terms.
30 * Copyright (c) 2012, Intel Corporation.
33 * This file is part of Lustre, http://www.lustre.org/
34 * Lustre is a trademark of Sun Microsystems, Inc.
36 * API and structure definitions for params_tree.
38 * Author: LiuYing <emoly.liu@oracle.com>
40 #ifndef __PARAMS_TREE_H__
41 #define __PARAMS_TREE_H__
44 #include <linux/proc_fs.h>
45 #include <linux/rwsem.h>
46 #include <linux/spinlock.h>
49 # ifndef HAVE_ONLY_PROCFS_SEQ
50 /* in lprocfs_stat.c, to protect the private data for proc entries */
51 extern struct rw_semaphore _lprocfs_lock;
53 static inline int LPROCFS_ENTRY_CHECK(struct inode *inode)
55 struct proc_dir_entry *dp = PDE(inode);
58 spin_lock(&(dp)->pde_unload_lock);
59 if (dp->proc_fops == NULL)
61 spin_unlock(&(dp)->pde_unload_lock);
67 # define LPROCFS_SRCH_ENTRY() \
69 down_read(&_lprocfs_lock); \
72 # define LPROCFS_SRCH_EXIT() \
74 up_read(&_lprocfs_lock); \
77 # define LPROCFS_WRITE_ENTRY() \
79 down_write(&_lprocfs_lock); \
82 # define LPROCFS_WRITE_EXIT() \
84 up_write(&_lprocfs_lock); \
87 # define PDE_DATA(inode) (PDE(inode)->data)
89 # else /* HAVE_ONLY_PROCFS_SEQ */
91 static inline int LPROCFS_ENTRY_CHECK(struct inode *inode)
96 #define LPROCFS_WRITE_ENTRY() do {} while(0)
97 #define LPROCFS_WRITE_EXIT() do {} while(0)
99 # endif /* !HAVE_ONLY_PROCFS_SEQ */
100 #endif /* CONFIG_PROC_FS */
101 #endif /* __PARAMS_TREE_H__ */