aboutsummaryrefslogtreecommitdiffstats
path: root/include/rdma
diff options
context:
space:
mode:
authorMatan Barak <matanb@mellanox.com>2017-04-04 06:31:43 -0400
committerDoug Ledford <dledford@redhat.com>2017-04-05 13:28:04 -0400
commit6be60aed126ccd4dfb4a60d1dc2ecec0bca21b2e (patch)
tree31764e2f00ed54dc264a7e71d1dd16830152b987 /include/rdma
parent3832125624b75b54567be906e9aa67e1343be569 (diff)
IB/core: Add idr based standard types
This patch adds the standard idr based types. These types are used in downstream patches in order to initialize, destroy and lookup IB standard objects which are based on idr objects. An idr object requires filling out several parameters. Its op pointer should point to uverbs_idr_ops and its size should be at least the size of ib_uobject. We add a macro to make the type declaration easier. Signed-off-by: Matan Barak <matanb@mellanox.com> Reviewed-by: Yishai Hadas <yishaih@mellanox.com> Reviewed-by: Sean Hefty <sean.hefty@intel.com> Signed-off-by: Doug Ledford <dledford@redhat.com>
Diffstat (limited to 'include/rdma')
-rw-r--r--include/rdma/uverbs_std_types.h50
-rw-r--r--include/rdma/uverbs_types.h14
2 files changed, 64 insertions, 0 deletions
diff --git a/include/rdma/uverbs_std_types.h b/include/rdma/uverbs_std_types.h
new file mode 100644
index 000000000000..2edb77648986
--- /dev/null
+++ b/include/rdma/uverbs_std_types.h
@@ -0,0 +1,50 @@
1/*
2 * Copyright (c) 2017, Mellanox Technologies inc. All rights reserved.
3 *
4 * This software is available to you under a choice of one of two
5 * licenses. You may choose to be licensed under the terms of the GNU
6 * General Public License (GPL) Version 2, available from the file
7 * COPYING in the main directory of this source tree, or the
8 * OpenIB.org BSD license below:
9 *
10 * Redistribution and use in source and binary forms, with or
11 * without modification, are permitted provided that the following
12 * conditions are met:
13 *
14 * - Redistributions of source code must retain the above
15 * copyright notice, this list of conditions and the following
16 * disclaimer.
17 *
18 * - Redistributions in binary form must reproduce the above
19 * copyright notice, this list of conditions and the following
20 * disclaimer in the documentation and/or other materials
21 * provided with the distribution.
22 *
23 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
24 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
25 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
26 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
27 * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
28 * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
29 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
30 * SOFTWARE.
31 */
32
33#ifndef _UVERBS_STD_TYPES__
34#define _UVERBS_STD_TYPES__
35
36#include <rdma/uverbs_types.h>
37
38extern const struct uverbs_obj_idr_type uverbs_type_attrs_cq;
39extern const struct uverbs_obj_idr_type uverbs_type_attrs_qp;
40extern const struct uverbs_obj_idr_type uverbs_type_attrs_rwq_ind_table;
41extern const struct uverbs_obj_idr_type uverbs_type_attrs_wq;
42extern const struct uverbs_obj_idr_type uverbs_type_attrs_srq;
43extern const struct uverbs_obj_idr_type uverbs_type_attrs_ah;
44extern const struct uverbs_obj_idr_type uverbs_type_attrs_flow;
45extern const struct uverbs_obj_idr_type uverbs_type_attrs_mr;
46extern const struct uverbs_obj_idr_type uverbs_type_attrs_mw;
47extern const struct uverbs_obj_idr_type uverbs_type_attrs_pd;
48extern const struct uverbs_obj_idr_type uverbs_type_attrs_xrcd;
49#endif
50
diff --git a/include/rdma/uverbs_types.h b/include/rdma/uverbs_types.h
index 0777e405f22a..66368b5a3006 100644
--- a/include/rdma/uverbs_types.h
+++ b/include/rdma/uverbs_types.h
@@ -129,4 +129,18 @@ void rdma_alloc_abort_uobject(struct ib_uobject *uobj);
129int __must_check rdma_remove_commit_uobject(struct ib_uobject *uobj); 129int __must_check rdma_remove_commit_uobject(struct ib_uobject *uobj);
130int rdma_alloc_commit_uobject(struct ib_uobject *uobj); 130int rdma_alloc_commit_uobject(struct ib_uobject *uobj);
131 131
132extern const struct uverbs_obj_type_class uverbs_idr_class;
133
134#define UVERBS_BUILD_BUG_ON(cond) (sizeof(char[1 - 2 * !!(cond)]) - \
135 sizeof(char))
136#define UVERBS_TYPE_ALLOC_IDR_SZ(_size, _order) \
137 { \
138 .destroy_order = _order, \
139 .type_class = &uverbs_idr_class, \
140 .obj_size = (_size) + \
141 UVERBS_BUILD_BUG_ON((_size) < \
142 sizeof(struct ib_uobject)), \
143 }
144#define UVERBS_TYPE_ALLOC_IDR(_order) \
145 UVERBS_TYPE_ALLOC_IDR_SZ(sizeof(struct ib_uobject), _order)
132#endif 146#endif