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 */
47struct __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 */
65static 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
86static const int num_kmod_keyword_mask_map = (int)
87	(ARRAY_SIZE(s_kmod_keyword_mask_map));
88
89#endif /* __ORANGEFS_DEBUG_H */
90