1  /* SPDX-License-Identifier: GPL-2.0 */
2  /*
3   * (C) 2001 Clemson University and The University of Chicago
4   *
5   * See COPYING in top-level directory.
6   */
7  
8  /* This file just defines debugging masks to be used with the gossip
9   * logging utility.  All debugging masks for ORANGEFS are kept here to make
10   * sure we don't have collisions.
11   */
12  
13  #ifndef __ORANGEFS_DEBUG_H
14  #define __ORANGEFS_DEBUG_H
15  
16  #ifdef __KERNEL__
17  #include <linux/types.h>
18  #include <linux/kernel.h>
19  #else
20  #include <stdint.h>
21  #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]))
22  #endif
23  
24  #define	GOSSIP_NO_DEBUG			(__u64)0
25  
26  #define GOSSIP_SUPER_DEBUG		((__u64)1 << 0)
27  #define GOSSIP_INODE_DEBUG		((__u64)1 << 1)
28  #define GOSSIP_FILE_DEBUG		((__u64)1 << 2)
29  #define GOSSIP_DIR_DEBUG		((__u64)1 << 3)
30  #define GOSSIP_UTILS_DEBUG		((__u64)1 << 4)
31  #define GOSSIP_WAIT_DEBUG		((__u64)1 << 5)
32  #define GOSSIP_ACL_DEBUG		((__u64)1 << 6)
33  #define GOSSIP_DCACHE_DEBUG		((__u64)1 << 7)
34  #define GOSSIP_DEV_DEBUG		((__u64)1 << 8)
35  #define GOSSIP_NAME_DEBUG		((__u64)1 << 9)
36  #define GOSSIP_BUFMAP_DEBUG		((__u64)1 << 10)
37  #define GOSSIP_CACHE_DEBUG		((__u64)1 << 11)
38  #define GOSSIP_DEBUGFS_DEBUG		((__u64)1 << 12)
39  #define GOSSIP_XATTR_DEBUG		((__u64)1 << 13)
40  #define GOSSIP_INIT_DEBUG		((__u64)1 << 14)
41  #define GOSSIP_SYSFS_DEBUG		((__u64)1 << 15)
42  
43  #define GOSSIP_MAX_NR                 16
44  #define GOSSIP_MAX_DEBUG              (((__u64)1 << GOSSIP_MAX_NR) - 1)
45  
46  /* a private internal type */
47  struct __keyword_mask_s {
48  	const char *keyword;
49  	__u64 mask_val;
50  };
51  
52  /*
53   * Map all kmod keywords to kmod debug masks here. Keep this
54   * structure "packed":
55   *
56   *   "all" is always last...
57   *
58   *   keyword     mask_val     index
59   *     foo          1           0
60   *     bar          2           1
61   *     baz          4           2
62   *     qux          8           3
63   *      .           .           .
64   */
65  static struct __keyword_mask_s s_kmod_keyword_mask_map[] = {
66  	{"super", GOSSIP_SUPER_DEBUG},
67  	{"inode", GOSSIP_INODE_DEBUG},
68  	{"file", GOSSIP_FILE_DEBUG},
69  	{"dir", GOSSIP_DIR_DEBUG},
70  	{"utils", GOSSIP_UTILS_DEBUG},
71  	{"wait", GOSSIP_WAIT_DEBUG},
72  	{"acl", GOSSIP_ACL_DEBUG},
73  	{"dcache", GOSSIP_DCACHE_DEBUG},
74  	{"dev", GOSSIP_DEV_DEBUG},
75  	{"name", GOSSIP_NAME_DEBUG},
76  	{"bufmap", GOSSIP_BUFMAP_DEBUG},
77  	{"cache", GOSSIP_CACHE_DEBUG},
78  	{"debugfs", GOSSIP_DEBUGFS_DEBUG},
79  	{"xattr", GOSSIP_XATTR_DEBUG},
80  	{"init", GOSSIP_INIT_DEBUG},
81  	{"sysfs", GOSSIP_SYSFS_DEBUG},
82  	{"none", GOSSIP_NO_DEBUG},
83  	{"all", GOSSIP_MAX_DEBUG}
84  };
85  
86  static const int num_kmod_keyword_mask_map = (int)
87  	(ARRAY_SIZE(s_kmod_keyword_mask_map));
88  
89  #endif /* __ORANGEFS_DEBUG_H */
90