51 lines · c
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_H7#define _CGROUP_RDMA_H8 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_RDMA18 19struct rdma_cgroup {20 struct cgroup_subsys_state css;21 22 /*23 * head to keep track of all resource pools24 * 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 to37 * participate in resource accounting38 */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 */51