From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752638AbcAETAf (ORCPT ); Tue, 5 Jan 2016 14:00:35 -0500 Received: from mail-pa0-f68.google.com ([209.85.220.68]:34024 "EHLO mail-pa0-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751669AbcAETA1 (ORCPT ); Tue, 5 Jan 2016 14:00:27 -0500 From: Parav Pandit To: cgroups@vger.kernel.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-rdma@vger.kernel.org, tj@kernel.org, lizefan@huawei.com, hannes@cmpxchg.org, dledford@redhat.com, liranl@mellanox.com, sean.hefty@intel.com, jgunthorpe@obsidianresearch.com, haggaie@mellanox.com Cc: corbet@lwn.net, james.l.morris@oracle.com, serge@hallyn.com, ogerlitz@mellanox.com, matanb@mellanox.com, raindel@mellanox.com, akpm@linux-foundation.org, linux-security-module@vger.kernel.org, pandit.parav@gmail.com Subject: [PATCHv1 1/6] rdmacg: Added rdma cgroup header file Date: Wed, 6 Jan 2016 00:28:01 +0530 Message-Id: <1452020286-9508-2-git-send-email-pandit.parav@gmail.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1452020286-9508-1-git-send-email-pandit.parav@gmail.com> References: <1452020286-9508-1-git-send-email-pandit.parav@gmail.com> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Added rdma cgroup header file which defines its APIs to perform charing/uncharing functionality. Signed-off-by: Parav Pandit --- 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