cgroup.c 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. // SPDX-License-Identifier: GPL-2.0-only
  2. /*
  3. * Copyright (C) 2016 Parav Pandit <pandit.parav@gmail.com>
  4. */
  5. #include "core_priv.h"
  6. /**
  7. * ib_device_register_rdmacg - register with rdma cgroup.
  8. * @device: device to register to participate in resource
  9. * accounting by rdma cgroup.
  10. *
  11. * Register with the rdma cgroup. Should be called before
  12. * exposing rdma device to user space applications to avoid
  13. * resource accounting leak.
  14. */
  15. void ib_device_register_rdmacg(struct ib_device *device)
  16. {
  17. device->cg_device.name = device->name;
  18. rdmacg_register_device(&device->cg_device);
  19. }
  20. /**
  21. * ib_device_unregister_rdmacg - unregister with rdma cgroup.
  22. * @device: device to unregister.
  23. *
  24. * Unregister with the rdma cgroup. Should be called after
  25. * all the resources are deallocated, and after a stage when any
  26. * other resource allocation by user application cannot be done
  27. * for this device to avoid any leak in accounting.
  28. */
  29. void ib_device_unregister_rdmacg(struct ib_device *device)
  30. {
  31. rdmacg_unregister_device(&device->cg_device);
  32. }
  33. int ib_rdmacg_try_charge(struct ib_rdmacg_object *cg_obj,
  34. struct ib_device *device,
  35. enum rdmacg_resource_type resource_index)
  36. {
  37. return rdmacg_try_charge(&cg_obj->cg, &device->cg_device,
  38. resource_index);
  39. }
  40. EXPORT_SYMBOL(ib_rdmacg_try_charge);
  41. void ib_rdmacg_uncharge(struct ib_rdmacg_object *cg_obj,
  42. struct ib_device *device,
  43. enum rdmacg_resource_type resource_index)
  44. {
  45. rdmacg_uncharge(cg_obj->cg, &device->cg_device,
  46. resource_index);
  47. }
  48. EXPORT_SYMBOL(ib_rdmacg_uncharge);