[DAPL2] DAPL Counters & 2.0.3 extensions to support counter retrieval.
[mirror/winof/.git] / ulp / dapl2 / dapl / common / dapl_ep_get_status.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_ep_get_status.c\r
31  *\r
32  * PURPOSE: Endpoint management\r
33  * Description: Interfaces in this file are completely described in\r
34  *              the DAPL 1.1 API, Chapter 6, section 5\r
35  *\r
36  * $Id:$\r
37  **********************************************************************/\r
38 \r
39 #include "dapl.h"\r
40 #include "dapl_ring_buffer_util.h"\r
41 \r
42 /*\r
43  * dapl_ep_get_status\r
44  *\r
45  * DAPL Requirements Version xxx, 6.5.4\r
46  *\r
47  * Provide the consumer with a quick snapshot of the Endpoint.\r
48  * The snapshot consists of Endpoint state and DTO information.\r
49  *\r
50  * Input:\r
51  *      ep_handle\r
52  *\r
53  * Output:\r
54  *      ep_state\r
55  *      in_dto_idle\r
56  *      out_dto_idle\r
57  *\r
58  * Returns:\r
59  *      DAT_SUCCESS\r
60  *      DAT_INVALID_PARAMETER\r
61  */\r
62 DAT_RETURN DAT_API\r
63 dapl_ep_get_status (\r
64         IN      DAT_EP_HANDLE      ep_handle,\r
65         OUT     DAT_EP_STATE       *ep_state,\r
66         OUT     DAT_BOOLEAN        *in_dto_idle,\r
67         OUT     DAT_BOOLEAN        *out_dto_idle)\r
68 {\r
69     DAPL_EP             *ep_ptr;\r
70     DAT_RETURN          dat_status;\r
71 \r
72     dapl_dbg_log (DAPL_DBG_TYPE_API,\r
73                   "dapl_ep_get_status (%p, %p, %p, %p)\n",\r
74                   ep_handle, \r
75                   ep_state, \r
76                   in_dto_idle, \r
77                   out_dto_idle);\r
78 \r
79     ep_ptr = (DAPL_EP *) ep_handle;\r
80     dat_status = DAT_SUCCESS;\r
81 \r
82     /*\r
83      * Verify parameter & state\r
84      */\r
85     if ( DAPL_BAD_HANDLE (ep_ptr, DAPL_MAGIC_EP ) )\r
86     {\r
87         dat_status = DAT_ERROR (DAT_INVALID_HANDLE,DAT_INVALID_HANDLE_EP);\r
88         goto bail;\r
89     }\r
90 \r
91     /*\r
92      * Gather state info for user\r
93      */\r
94     if ( ep_state != NULL )\r
95     {\r
96         *ep_state = ep_ptr->param.ep_state;\r
97     }\r
98 \r
99     if ( in_dto_idle != NULL )\r
100     {\r
101         *in_dto_idle = dapls_cb_pending(&ep_ptr->recv_buffer);\r
102     }\r
103 \r
104     if ( out_dto_idle != NULL )\r
105     {\r
106         *out_dto_idle = dapls_cb_pending(&ep_ptr->req_buffer);\r
107     }\r
108 \r
109  bail:\r
110     return dat_status;\r
111 }\r
112 \r
113 \r
114 /*\r
115  * Local variables:\r
116  *  c-indent-level: 4\r
117  *  c-basic-offset: 4\r
118  *  tab-width: 8\r
119  * End:\r
120  */\r