1 | /* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */ |
2 | /* |
3 | * Copyright(c) 2015, 2016, 2018 Intel Corporation. |
4 | */ |
5 | |
6 | #ifndef _HFI1_DEBUGFS_H |
7 | #define _HFI1_DEBUGFS_H |
8 | |
9 | struct hfi1_ibdev; |
10 | |
11 | #define DEBUGFS_SEQ_FILE_OPS(name) \ |
12 | static const struct seq_operations _##name##_seq_ops = { \ |
13 | .start = _##name##_seq_start, \ |
14 | .next = _##name##_seq_next, \ |
15 | .stop = _##name##_seq_stop, \ |
16 | .show = _##name##_seq_show \ |
17 | } |
18 | |
19 | #define DEBUGFS_SEQ_FILE_OPEN(name) \ |
20 | static int _##name##_open(struct inode *inode, struct file *s) \ |
21 | { \ |
22 | struct seq_file *seq; \ |
23 | int ret; \ |
24 | ret = seq_open(s, &_##name##_seq_ops); \ |
25 | if (ret) \ |
26 | return ret; \ |
27 | seq = s->private_data; \ |
28 | seq->private = inode->i_private; \ |
29 | return 0; \ |
30 | } |
31 | |
32 | #define DEBUGFS_FILE_OPS(name) \ |
33 | static const struct file_operations _##name##_file_ops = { \ |
34 | .owner = THIS_MODULE, \ |
35 | .open = _##name##_open, \ |
36 | .read = hfi1_seq_read, \ |
37 | .llseek = hfi1_seq_lseek, \ |
38 | .release = seq_release \ |
39 | } |
40 | |
41 | |
42 | ssize_t hfi1_seq_read(struct file *file, char __user *buf, size_t size, |
43 | loff_t *ppos); |
44 | loff_t hfi1_seq_lseek(struct file *file, loff_t offset, int whence); |
45 | |
46 | #ifdef CONFIG_DEBUG_FS |
47 | void hfi1_dbg_ibdev_init(struct hfi1_ibdev *ibd); |
48 | void hfi1_dbg_ibdev_exit(struct hfi1_ibdev *ibd); |
49 | void hfi1_dbg_init(void); |
50 | void hfi1_dbg_exit(void); |
51 | |
52 | #else |
53 | static inline void hfi1_dbg_ibdev_init(struct hfi1_ibdev *ibd) |
54 | { |
55 | } |
56 | |
57 | static inline void hfi1_dbg_ibdev_exit(struct hfi1_ibdev *ibd) |
58 | { |
59 | } |
60 | |
61 | static inline void hfi1_dbg_init(void) |
62 | { |
63 | } |
64 | |
65 | static inline void hfi1_dbg_exit(void) |
66 | { |
67 | } |
68 | #endif |
69 | |
70 | #endif /* _HFI1_DEBUGFS_H */ |
71 | |