Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0-only */
0002 /*
0003  * Copyright (C) 2016 Parav Pandit <pandit.parav@gmail.com>
0004  */
0005 
0006 #ifndef _CGROUP_RDMA_H
0007 #define _CGROUP_RDMA_H
0008 
0009 #include <linux/cgroup.h>
0010 
0011 enum rdmacg_resource_type {
0012     RDMACG_RESOURCE_HCA_HANDLE,
0013     RDMACG_RESOURCE_HCA_OBJECT,
0014     RDMACG_RESOURCE_MAX,
0015 };
0016 
0017 #ifdef CONFIG_CGROUP_RDMA
0018 
0019 struct rdma_cgroup {
0020     struct cgroup_subsys_state  css;
0021 
0022     /*
0023      * head to keep track of all resource pools
0024      * that belongs to this cgroup.
0025      */
0026     struct list_head        rpools;
0027 };
0028 
0029 struct rdmacg_device {
0030     struct list_head    dev_node;
0031     struct list_head    rpools;
0032     char            *name;
0033 };
0034 
0035 /*
0036  * APIs for RDMA/IB stack to publish when a device wants to
0037  * participate in resource accounting
0038  */
0039 void rdmacg_register_device(struct rdmacg_device *device);
0040 void rdmacg_unregister_device(struct rdmacg_device *device);
0041 
0042 /* APIs for RDMA/IB stack to charge/uncharge pool specific resources */
0043 int rdmacg_try_charge(struct rdma_cgroup **rdmacg,
0044               struct rdmacg_device *device,
0045               enum rdmacg_resource_type index);
0046 void rdmacg_uncharge(struct rdma_cgroup *cg,
0047              struct rdmacg_device *device,
0048              enum rdmacg_resource_type index);
0049 #endif  /* CONFIG_CGROUP_RDMA */
0050 #endif  /* _CGROUP_RDMA_H */