1ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo/* Copyright (c) 2011, The Linux Foundation. All rights reserved.
2ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo *
3ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo * Redistribution and use in source and binary forms, with or without
4ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo * modification, are permitted provided that the following conditions are
5ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo * met:
6ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo *     * Redistributions of source code must retain the above copyright
7ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo *       notice, this list of conditions and the following disclaimer.
8ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo *     * Redistributions in binary form must reproduce the above
9ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo *       copyright notice, this list of conditions and the following
10ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo *       disclaimer in the documentation and/or other materials provided
11ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo *       with the distribution.
12ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo *     * Neither the name of The Linux Foundation nor the names of its
13ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo *       contributors may be used to endorse or promote products derived
14ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo *       from this software without specific prior written permission.
15ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo *
16ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
17ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
18ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
19ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
20ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
21ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
22ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
23ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
24ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
25ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
26ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo *
28ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo */
29ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo#include <linux/stat.h>
30ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo#include <fcntl.h>
31ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo
32ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo#include <linux/types.h>
33ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo
34ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo#include "log_util.h"
35ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo#include "platform_lib_includes.h"
36ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo#include "loc_eng_dmn_conn_glue_msg.h"
37ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo#include "loc_eng_dmn_conn_handler.h"
38ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo
39ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo/*===========================================================================
40ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoFUNCTION    loc_eng_dmn_conn_glue_msgget
41ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo
42ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoDESCRIPTION
43ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo   This function get a message queue
44ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo
45ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo   q_path - name path of the message queue
46ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo   mode -
47ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo
48ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoDEPENDENCIES
49ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo   None
50ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo
51ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoRETURN VALUE
52ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo   message queue id
53ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo
54ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoSIDE EFFECTS
55ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo   N/A
56ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo
57ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo===========================================================================*/
58ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russoint loc_eng_dmn_conn_glue_msgget(const char * q_path, int mode)
59ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo{
60ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo    int msgqid;
61ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo    msgqid = loc_eng_dmn_conn_glue_pipeget(q_path, mode);
62ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo    return msgqid;
63ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo}
64ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo
65ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo/*===========================================================================
66ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoFUNCTION    loc_eng_dmn_conn_glue_msgremove
67ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo
68ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoDESCRIPTION
69ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo   remove a message queue
70ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo
71ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo   q_path - name path of the message queue
72ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo   msgqid - message queue id
73ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo
74ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoDEPENDENCIES
75ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo   None
76ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo
77ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoRETURN VALUE
78ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo   0: success or negative value for failure
79ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo
80ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoSIDE EFFECTS
81ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo   N/A
82ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo
83ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo===========================================================================*/
84ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russoint loc_eng_dmn_conn_glue_msgremove(const char * q_path, int msgqid)
85ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo{
86ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo    int result;
87ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo    result = loc_eng_dmn_conn_glue_piperemove(q_path, msgqid);
88ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo    return result;
89ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo}
90ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo
91ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo/*===========================================================================
92ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoFUNCTION    loc_eng_dmn_conn_glue_msgsnd
93ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo
94ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoDESCRIPTION
95ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo   Send a message
96ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo
97ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo   msgqid - message queue id
98ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo   msgp - pointer to the message to be sent
99ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo   msgsz - size of the message
100ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo
101ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoDEPENDENCIES
102ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo   None
103ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo
104ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoRETURN VALUE
105ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo   number of bytes sent out or negative value for failure
106ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo
107ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoSIDE EFFECTS
108ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo   N/A
109ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo
110ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo===========================================================================*/
111ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russoint loc_eng_dmn_conn_glue_msgsnd(int msgqid, const void * msgp, size_t msgsz)
112ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo{
113ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo    int result;
114ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo    struct ctrl_msgbuf *pmsg = (struct ctrl_msgbuf *) msgp;
115ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo    pmsg->msgsz = msgsz;
116ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo
117ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo    result = loc_eng_dmn_conn_glue_pipewrite(msgqid, msgp, msgsz);
118ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo    if (result != (int) msgsz) {
119ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo        LOC_LOGE("%s:%d] pipe broken %d, msgsz = %d\n", __func__, __LINE__, result, (int) msgsz);
120ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo        return -1;
121ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo    }
122ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo
123ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo    return result;
124ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo}
125ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo
126ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo/*===========================================================================
127ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoFUNCTION    loc_eng_dmn_conn_glue_msgrcv
128ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo
129ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoDESCRIPTION
130ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo   receive a message
131ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo
132ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo   msgqid - message queue id
133ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo   msgp - pointer to the buffer to hold the message
134ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo   msgsz - size of the buffer
135ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo
136ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoDEPENDENCIES
137ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo   None
138ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo
139ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoRETURN VALUE
140ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo   number of bytes received or negative value for failure
141ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo
142ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoSIDE EFFECTS
143ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo   N/A
144ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo
145ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo===========================================================================*/
146ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russoint loc_eng_dmn_conn_glue_msgrcv(int msgqid, void *msgp, size_t msgbufsz)
147ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo{
148ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo    int result;
149ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo    struct ctrl_msgbuf *pmsg = (struct ctrl_msgbuf *) msgp;
150ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo
151ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo    result = loc_eng_dmn_conn_glue_piperead(msgqid, &(pmsg->msgsz), sizeof(pmsg->msgsz));
152ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo    if (result != sizeof(pmsg->msgsz)) {
153ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo        LOC_LOGE("%s:%d] pipe broken %d\n", __func__, __LINE__, result);
154ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo        return -1;
155ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo    }
156ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo
157ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo    if (msgbufsz < pmsg->msgsz) {
158ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo        LOC_LOGE("%s:%d] msgbuf is too small %d < %d\n", __func__, __LINE__, (int) msgbufsz, (int) pmsg->msgsz);
159ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo        return -1;
160ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo    }
161ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo
162ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo    result = loc_eng_dmn_conn_glue_piperead(msgqid, (uint8_t *) msgp + sizeof(pmsg->msgsz), pmsg->msgsz - sizeof(pmsg->msgsz));
163ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo    if (result != (int) (pmsg->msgsz - sizeof(pmsg->msgsz))) {
164ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo        LOC_LOGE("%s:%d] pipe broken %d, msgsz = %d\n", __func__, __LINE__, result, (int) pmsg->msgsz);
165ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo        return -1;
166ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo    }
167ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo
168ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo    return pmsg->msgsz;
169ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo}
170ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo
171ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo/*===========================================================================
172ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoFUNCTION    loc_eng_dmn_conn_glue_msgunblock
173ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo
174ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoDESCRIPTION
175ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo   unblock a message queue
176ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo
177ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo   msgqid - message queue id
178ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo
179ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoDEPENDENCIES
180ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo   None
181ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo
182ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoRETURN VALUE
183ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo   0: success
184ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo
185ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoSIDE EFFECTS
186ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo   N/A
187ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo
188ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo===========================================================================*/
189ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russoint loc_eng_dmn_conn_glue_msgunblock(int msgqid)
190ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo{
191ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo    return loc_eng_dmn_conn_glue_pipeunblock(msgqid);
192ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo}
193ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo
194ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo/*===========================================================================
195ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoFUNCTION    loc_eng_dmn_conn_glue_msgflush
196ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo
197ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoDESCRIPTION
198ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo   flush out the message in a queue
199ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo
200ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo   msgqid - message queue id
201ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo
202ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoDEPENDENCIES
203ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo   None
204ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo
205ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoRETURN VALUE
206ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo   number of bytes that are flushed out.
207ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo
208ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante RussoSIDE EFFECTS
209ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo   N/A
210ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo
211ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo===========================================================================*/
212ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russoint loc_eng_dmn_conn_glue_msgflush(int msgqid)
213ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo{
214ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo    int length;
215ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo    char buf[128];
216ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo
217ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo    do {
218ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo        length = loc_eng_dmn_conn_glue_piperead(msgqid, buf, 128);
219ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo        LOC_LOGD("%s:%d] %s\n", __func__, __LINE__, buf);
220ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo    } while(length);
221ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo    return length;
222ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo}
223ec6e5d3a2597d37d5b1d98911cb06218cdf19bf1Dante Russo
224