cgroup_rdma.h (1206B)
1/* SPDX-License-Identifier: GPL-2.0-only */ 2/* 3 * Copyright (C) 2016 Parav Pandit <pandit.parav@gmail.com> 4 */ 5 6#ifndef _CGROUP_RDMA_H 7#define _CGROUP_RDMA_H 8 9#include <linux/cgroup.h> 10 11enum 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 19struct 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 29struct 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 */ 39void rdmacg_register_device(struct rdmacg_device *device); 40void rdmacg_unregister_device(struct rdmacg_device *device); 41 42/* APIs for RDMA/IB stack to charge/uncharge pool specific resources */ 43int rdmacg_try_charge(struct rdma_cgroup **rdmacg, 44 struct rdmacg_device *device, 45 enum rdmacg_resource_type index); 46void 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 */