1 | /* SPDX-License-Identifier: GPL-2.0 */ |
2 | /* |
3 | * internal.h - declarations internal to debugfs |
4 | * |
5 | * Copyright (C) 2016 Nicolai Stange <nicstange@gmail.com> |
6 | */ |
7 | |
8 | #ifndef _DEBUGFS_INTERNAL_H_ |
9 | #define _DEBUGFS_INTERNAL_H_ |
10 | |
11 | struct file_operations; |
12 | |
13 | /* declared over in file.c */ |
14 | extern const struct file_operations debugfs_noop_file_operations; |
15 | extern const struct file_operations debugfs_open_proxy_file_operations; |
16 | extern const struct file_operations debugfs_full_proxy_file_operations; |
17 | |
18 | struct debugfs_fsdata { |
19 | const struct file_operations *real_fops; |
20 | refcount_t active_users; |
21 | struct completion active_users_drained; |
22 | }; |
23 | |
24 | /* |
25 | * A dentry's ->d_fsdata either points to the real fops or to a |
26 | * dynamically allocated debugfs_fsdata instance. |
27 | * In order to distinguish between these two cases, a real fops |
28 | * pointer gets its lowest bit set. |
29 | */ |
30 | #define DEBUGFS_FSDATA_IS_REAL_FOPS_BIT BIT(0) |
31 | |
32 | /* Access BITS */ |
33 | #define DEBUGFS_ALLOW_API BIT(0) |
34 | #define DEBUGFS_ALLOW_MOUNT BIT(1) |
35 | |
36 | #ifdef CONFIG_DEBUG_FS_ALLOW_ALL |
37 | #define DEFAULT_DEBUGFS_ALLOW_BITS (DEBUGFS_ALLOW_MOUNT | DEBUGFS_ALLOW_API) |
38 | #endif |
39 | #ifdef CONFIG_DEBUG_FS_DISALLOW_MOUNT |
40 | #define DEFAULT_DEBUGFS_ALLOW_BITS (DEBUGFS_ALLOW_API) |
41 | #endif |
42 | #ifdef CONFIG_DEBUG_FS_ALLOW_NONE |
43 | #define DEFAULT_DEBUGFS_ALLOW_BITS (0) |
44 | #endif |
45 | |
46 | #endif /* _DEBUGFS_INTERNAL_H_ */ |
47 | |