Commit | Line | Data |
---|---|---|
f85d2086 | 1 | /* SPDX-License-Identifier: GPL-2.0-only */ |
39d3e758 PP |
2 | /* |
3 | * Copyright (C) 2016 Parav Pandit <pandit.parav@gmail.com> | |
39d3e758 PP |
4 | */ |
5 | ||
6 | #ifndef _CGROUP_RDMA_H | |
7 | #define _CGROUP_RDMA_H | |
8 | ||
9 | #include <linux/cgroup.h> | |
10 | ||
11 | enum rdmacg_resource_type { | |
12 | RDMACG_RESOURCE_HCA_HANDLE, | |
13 | RDMACG_RESOURCE_HCA_OBJECT, | |
14 | RDMACG_RESOURCE_MAX, | |
15 | }; | |
16 | ||
17 | #ifdef CONFIG_CGROUP_RDMA | |
18 | ||
19 | struct rdma_cgroup { | |
20 | struct cgroup_subsys_state css; | |
21 | ||
22 | /* | |
23 | * head to keep track of all resource pools | |
24 | * that belongs to this cgroup. | |
25 | */ | |
26 | struct list_head rpools; | |
27 | }; | |
28 | ||
29 | struct rdmacg_device { | |
30 | struct list_head dev_node; | |
31 | struct list_head rpools; | |
32 | char *name; | |
33 | }; | |
34 | ||
35 | /* | |
36 | * APIs for RDMA/IB stack to publish when a device wants to | |
37 | * participate in resource accounting | |
38 | */ | |
7527a7b1 | 39 | void rdmacg_register_device(struct rdmacg_device *device); |
39d3e758 PP |
40 | void rdmacg_unregister_device(struct rdmacg_device *device); |
41 | ||
42 | /* APIs for RDMA/IB stack to charge/uncharge pool specific resources */ | |
43 | int rdmacg_try_charge(struct rdma_cgroup **rdmacg, | |
44 | struct rdmacg_device *device, | |
45 | enum rdmacg_resource_type index); | |
46 | void rdmacg_uncharge(struct rdma_cgroup *cg, | |
47 | struct rdmacg_device *device, | |
48 | enum rdmacg_resource_type index); | |
49 | #endif /* CONFIG_CGROUP_RDMA */ | |
50 | #endif /* _CGROUP_RDMA_H */ |