RDK Documentation (Open Sourced RDK Components)
glib_tools.h
1 /*
2  * If not stated otherwise in this file or this component's Licenses.txt file the
3  * following copyright and licenses apply:
4  *
5  * Copyright 2018 RDK Management
6  *
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  *
11  * http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18 */
19 #ifndef GLIB_TOOLS_H
20 #define GLIB_TOOLS_H
21 
22 #include <glib.h>
23 
24 
25 constexpr int eintr_maximum_attempts =100;
26 #define HANDLE_EINTR_EAGAIN(x) ({ \
27  unsigned char _attempts = 0; \
28  \
29  decltype(x) _result; \
30  \
31  do \
32  { \
33  _result = (x); \
34  } \
35  while (_result == -1 \
36  && (errno == EINTR || \
37  errno == EAGAIN || \
38  errno == EWOULDBLOCK) \
39  && _attempts++ < eintr_maximum_attempts); \
40  \
41  _result; \
42 })
43 
44 constexpr int PIPE_LISTEN = 0, PIPE_WRITE = 1;
45 typedef void (*PipeSourceCallback)(void* ctx);
46 
47 GSource* pipe_source_new(int pipefd[2], PipeSourceCallback cb, void* ctx);
48 
49 #endif // GLIB_TOOLS_H
pipe_source_new
GSource * pipe_source_new(int pipefd[2], PipeSourceCallback cb, void *ctx)
This API creates a new event source "rtRemoteSource".
Definition: glib_tools.cpp:81