Added rdma cgroup header file which defines its APIs to perform charing/uncharing functionality.
Signed-off-by: Parav Pandit <pandit.pa...@gmail.com> --- include/linux/cgroup_rdma.h | 91 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 include/linux/cgroup_rdma.h diff --git a/include/linux/cgroup_rdma.h b/include/linux/cgroup_rdma.h new file mode 100644 index 0000000..01d220f --- /dev/null +++ b/include/linux/cgroup_rdma.h @@ -0,0 +1,91 @@ +#ifndef _CGROUP_RDMA_H +#define _CGROUP_RDMA_H + +/* + * This file is subject to the terms and conditions of version 2 of the GNU + * General Public License. See the file COPYING in the main directory of the + * Linux distribution for more details. + */ + +enum rdmacg_resource_pool_type { + RDMACG_RESOURCE_POOL_VERB, + RDMACG_RESOURCE_POOL_HW, + RDMACG_RESOURCE_POOL_TYPE_MAX, +}; + +struct ib_device; +struct pid; +struct match_token; + +#ifdef CONFIG_CGROUP_RDMA +#define RDMACG_MAX_RESOURCE_INDEX (64) + +struct rdmacg_pool_info { + struct match_token *resource_table; + int resource_count; +}; + +struct rdmacg_resource_pool_ops { + struct rdmacg_pool_info* + (*get_resource_pool_tokens)(struct ib_device *); +}; + +/* APIs for RDMA/IB subsystem to publish when a device wants to + * participate in resource accounting + */ +void rdmacg_register_ib_device(struct ib_device *device); +void rdmacg_unregister_ib_device(struct ib_device *device); + +/* APIs for RDMA/IB subsystem to charge/uncharge pool specific resources */ +int rdmacg_try_charge_resource(struct ib_device *device, + struct pid *pid, + enum rdmacg_resource_pool_type type, + int resource_index, + int num); +void rdmacg_uncharge_resource(struct ib_device *device, + struct pid *pid, + enum rdmacg_resource_pool_type type, + int resource_index, + int num); + +void rdmacg_set_rpool_ops(struct ib_device *device, + enum rdmacg_resource_pool_type pool_type, + struct rdmacg_resource_pool_ops *ops); +void rdmacg_clear_rpool_ops(struct ib_device *device, + enum rdmacg_resource_pool_type pool_type); +int rdmacg_query_resource_limit(struct ib_device *device, + struct pid *pid, + enum rdmacg_resource_pool_type type, + int *limits, int max_count); +#else +/* APIs for RDMA/IB subsystem to charge/uncharge device specific resources */ +static inline +int rdmacg_try_charge_resource(struct ib_device *device, + struct pid *pid, + enum rdmacg_resource_pool_type type, + int resource_index, + int num) +{ return 0; } + +static inline void rdmacg_uncharge_resource(struct ib_device *device, + struct pid *pid, + enum rdmacg_resource_pool_type type, + int resource_index, + int num) +{ } + +static inline +int rdmacg_query_resource_limit(struct ib_device *device, + struct pid *pid, + enum rdmacg_resource_pool_type type, + int *limits, int max_count) +{ + int i; + + for (i = 0; i < max_count; i++) + limits[i] = S32_MAX; + + return 0; +} +#endif /* CONFIG_CGROUP_RDMA */ +#endif /* _CGROUP_RDMA_H */ -- 1.8.3.1 -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html