[DAPL2] DAPL Counters & 2.0.3 extensions to support counter retrieval.
[mirror/winof/.git] / ulp / dapl2 / dapl / common / dapl_rmr_create.c
1 /*\r
2  * Copyright (c) 2002-2003, Network Appliance, Inc. All rights reserved.\r
3  *\r
4  * This Software is licensed under one of the following licenses:\r
5  *\r
6  * 1) under the terms of the "Common Public License 1.0" a copy of which is\r
7  *    available from the Open Source Initiative, see\r
8  *    http://www.opensource.org/licenses/cpl.php.\r
9  *\r
10  * 2) under the terms of the "The BSD License" a copy of which is\r
11  *    available from the Open Source Initiative, see\r
12  *    http://www.opensource.org/licenses/bsd-license.php.\r
13  *\r
14  * 3) under the terms of the "GNU General Public License (GPL) Version 2" a\r
15  *    copy of which is available from the Open Source Initiative, see\r
16  *    http://www.opensource.org/licenses/gpl-license.php.\r
17  *\r
18  * Licensee has the right to choose one of the above licenses.\r
19  *\r
20  * Redistributions of source code must retain the above copyright\r
21  * notice and one of the license notices.\r
22  *\r
23  * Redistributions in binary form must reproduce both the above copyright\r
24  * notice, one of the license notices in the documentation\r
25  * and/or other materials provided with the distribution.\r
26  */\r
27 \r
28 /**********************************************************************\r
29  * \r
30  * MODULE: dapl_rmr_create.c\r
31  *\r
32  * PURPOSE: Memory management\r
33  *\r
34  * $Id:$\r
35  **********************************************************************/\r
36 \r
37 #include "dapl_rmr_util.h"\r
38 #include "dapl_adapter_util.h"\r
39 \r
40 /*\r
41  * dapl_rmr_create\r
42  *\r
43  * Create a remote memory region for the specified protection zone\r
44  *\r
45  * Input:\r
46  *      pz_handle\r
47  *\r
48  * Output:\r
49  *      rmr_handle\r
50  *\r
51  * Returns:\r
52  *      DAT_SUCCESS\r
53  *      DAT_INSUFFICIENT_RESOURCES\r
54  *      DAT_INVALID_PARAMETER\r
55  */\r
56 DAT_RETURN DAT_API\r
57 dapl_rmr_create (\r
58         IN      DAT_PZ_HANDLE      pz_handle,\r
59         OUT     DAT_RMR_HANDLE     *rmr_handle)\r
60 {\r
61     DAPL_PZ             *pz;\r
62     DAPL_RMR            *rmr;\r
63     DAT_RETURN          dat_status;\r
64 \r
65     dat_status = DAT_SUCCESS;\r
66 \r
67     if ( DAPL_BAD_HANDLE (pz_handle, DAPL_MAGIC_PZ) )\r
68     {\r
69         dat_status = DAT_ERROR (DAT_INVALID_HANDLE,DAT_INVALID_HANDLE_PZ);\r
70         goto bail;\r
71     }\r
72 \r
73     pz = (DAPL_PZ *) pz_handle;\r
74     rmr = dapl_rmr_alloc (pz);\r
75 \r
76     if ( rmr == NULL )\r
77     {\r
78         dat_status = DAT_ERROR (DAT_INSUFFICIENT_RESOURCES,DAT_RESOURCE_MEMORY);\r
79         goto bail;\r
80     }\r
81     DAPL_CNTR(pz->header.owner_ia, DCNT_IA_RMR_CREATE);\r
82 \r
83     dat_status = dapls_ib_mw_alloc (rmr);\r
84 \r
85     if ( dat_status != DAT_SUCCESS )\r
86     {\r
87         dapl_rmr_dealloc (rmr);\r
88         dat_status = DAT_ERROR (DAT_INSUFFICIENT_RESOURCES,DAT_RESOURCE_MEMORY_REGION);\r
89         goto bail;\r
90     }\r
91 \r
92     dapl_os_atomic_inc (&pz->pz_ref_count);\r
93 \r
94     *rmr_handle = rmr;\r
95 \r
96  bail:\r
97     return dat_status;\r
98 }\r
99 \r
100 /*\r
101  * dapl_rmr_create_for_ep\r
102  *\r
103  * DAPL Requirements Version 2.0, 6.7.3.x\r
104  *\r
105  * Creates an RMR that is specific to a single connection at a time.\r
106  * \r
107  * This operation is relatively heavy. The created RMR can be bound to a\r
108  * memory region within the LMR through a lightweight dat_rmr_bind\r
109  * operation for EPs that use the pz_handle that generates rmr_context.\r
110  * \r
111  * If the operation fails (does not return DAT_SUCCESS), the return values\r
112  * of rmr_handle are undefined and Consumers should not use it.\r
113  * pz_handle provide Consumers a way to restrict access to an RMR by\r
114  * authorized connections only.\r
115  * \r
116  *\r
117  * Input:\r
118  *      pz_handle\r
119  *\r
120  * Output:\r
121  *      rmr_handle\r
122  * \r
123  * Returns:\r
124  *      DAT_SUCCESS\r
125  *      DAT_INSUFFICIENT_RESOURCES\r
126  *      DAT_INVALID_HANDLE\r
127  *      DAT_MODEL_NOT_SUPPORTED\r
128  */\r
129 DAT_RETURN DAT_API\r
130 dapl_rmr_create_for_ep (\r
131         IN      DAT_PZ_HANDLE pz_handle,        /* pz_handle            */\r
132         OUT     DAT_RMR_HANDLE *rmr_handle)     /* rmr_handle           */\r
133 {\r
134         return DAT_MODEL_NOT_SUPPORTED;\r
135 }\r
136 \r
137 /*\r
138  * Local variables:\r
139  *  c-indent-level: 4\r
140  *  c-basic-offset: 4\r
141  *  tab-width: 8\r
142  * End:\r
143  */\r