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 #include "core_priv.h"
0007 
0008 /**
0009  * ib_device_register_rdmacg - register with rdma cgroup.
0010  * @device: device to register to participate in resource
0011  *          accounting by rdma cgroup.
0012  *
0013  * Register with the rdma cgroup. Should be called before
0014  * exposing rdma device to user space applications to avoid
0015  * resource accounting leak.
0016  */
0017 void ib_device_register_rdmacg(struct ib_device *device)
0018 {
0019     device->cg_device.name = device->name;
0020     rdmacg_register_device(&device->cg_device);
0021 }
0022 
0023 /**
0024  * ib_device_unregister_rdmacg - unregister with rdma cgroup.
0025  * @device: device to unregister.
0026  *
0027  * Unregister with the rdma cgroup. Should be called after
0028  * all the resources are deallocated, and after a stage when any
0029  * other resource allocation by user application cannot be done
0030  * for this device to avoid any leak in accounting.
0031  */
0032 void ib_device_unregister_rdmacg(struct ib_device *device)
0033 {
0034     rdmacg_unregister_device(&device->cg_device);
0035 }
0036 
0037 int ib_rdmacg_try_charge(struct ib_rdmacg_object *cg_obj,
0038              struct ib_device *device,
0039              enum rdmacg_resource_type resource_index)
0040 {
0041     return rdmacg_try_charge(&cg_obj->cg, &device->cg_device,
0042                  resource_index);
0043 }
0044 EXPORT_SYMBOL(ib_rdmacg_try_charge);
0045 
0046 void ib_rdmacg_uncharge(struct ib_rdmacg_object *cg_obj,
0047             struct ib_device *device,
0048             enum rdmacg_resource_type resource_index)
0049 {
0050     rdmacg_uncharge(cg_obj->cg, &device->cg_device,
0051             resource_index);
0052 }
0053 EXPORT_SYMBOL(ib_rdmacg_uncharge);