This source file includes following definitions.
- rdma_is_kernel_res
1
2
3
4
5
6 #ifndef _RDMA_RESTRACK_H_
7 #define _RDMA_RESTRACK_H_
8
9 #include <linux/typecheck.h>
10 #include <linux/sched.h>
11 #include <linux/kref.h>
12 #include <linux/completion.h>
13 #include <linux/sched/task.h>
14 #include <uapi/rdma/rdma_netlink.h>
15 #include <linux/xarray.h>
16
17 struct ib_device;
18 struct sk_buff;
19
20
21
22
23 enum rdma_restrack_type {
24
25
26
27 RDMA_RESTRACK_PD,
28
29
30
31 RDMA_RESTRACK_CQ,
32
33
34
35 RDMA_RESTRACK_QP,
36
37
38
39 RDMA_RESTRACK_CM_ID,
40
41
42
43 RDMA_RESTRACK_MR,
44
45
46
47 RDMA_RESTRACK_CTX,
48
49
50
51 RDMA_RESTRACK_COUNTER,
52
53
54
55 RDMA_RESTRACK_MAX
56 };
57
58
59
60
61 struct rdma_restrack_entry {
62
63
64
65
66
67
68
69
70 bool valid;
71
72
73
74 struct kref kref;
75
76
77
78 struct completion comp;
79
80
81
82
83
84
85
86
87
88 struct task_struct *task;
89
90
91
92 const char *kern_name;
93
94
95
96 enum rdma_restrack_type type;
97
98
99
100 bool user;
101
102
103
104 u32 id;
105 };
106
107 int rdma_restrack_count(struct ib_device *dev,
108 enum rdma_restrack_type type);
109
110 void rdma_restrack_kadd(struct rdma_restrack_entry *res);
111 void rdma_restrack_uadd(struct rdma_restrack_entry *res);
112
113
114
115
116
117
118 void rdma_restrack_del(struct rdma_restrack_entry *res);
119
120
121
122
123
124 static inline bool rdma_is_kernel_res(struct rdma_restrack_entry *res)
125 {
126 return !res->user;
127 }
128
129
130
131
132
133 int __must_check rdma_restrack_get(struct rdma_restrack_entry *res);
134
135
136
137
138
139 int rdma_restrack_put(struct rdma_restrack_entry *res);
140
141
142
143
144
145
146 void rdma_restrack_set_task(struct rdma_restrack_entry *res,
147 const char *caller);
148
149
150
151
152
153 int rdma_nl_put_driver_u32(struct sk_buff *msg, const char *name, u32 value);
154 int rdma_nl_put_driver_u32_hex(struct sk_buff *msg, const char *name,
155 u32 value);
156 int rdma_nl_put_driver_u64(struct sk_buff *msg, const char *name, u64 value);
157 int rdma_nl_put_driver_u64_hex(struct sk_buff *msg, const char *name,
158 u64 value);
159 struct rdma_restrack_entry *rdma_restrack_get_byid(struct ib_device *dev,
160 enum rdma_restrack_type type,
161 u32 id);
162 #endif