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