cgroup_rdma.h 1.2 KB

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