Provided by: libgensio-dev_2.8.2-6.1build1_amd64 bug

NAME

       gensio_glib_funcs_alloc - Abstraction for some operating system functions done with glib

SYNOPSIS

       #include <gensio/gensio_glib.h>

       int gensio_glib_funcs_alloc(struct gensio_os_funcs **o)

DESCRIPTION

       This  structure provides an abstraction for the gensio library that lets it work on top of
       glib.  See the gensio_os_funcs.3 man page for details on what this does.  This can be used
       if you have a project based on glib that you want to integrate gensio into.

       Unfortunately, it has some limitations because of weaknesses in the glib interface.

       If  you  use  this,  you really want to use the gensio wait functions, not g_cont_wait..()
       yourself.  You don't strictly have have to, especially if your app is single threaded, but
       especially  in  multithreaded apps you cannot mix calls to the os funcs wait functions and
       the glib wait functions.  Which means you can't use the blocking functions, which all  use
       os func waiters.

       Performance should be ok for a single thread.  For multiple threads, though, only on thing
       at a time can be waiting on the main glib thread.   This  is  a  weakness  in  glib.   For
       multiple  threads,  one  function sits in the main context and the others sit on condition
       variables.  When the thead sitting on the main context wakes up, it wakes another  waiting
       thread to take over.

       If performance is important, it might be better to put glib on top of gensio os funcs with
       g_main_context_set_poll_func().  I leave that as an exercise to the reader.

RETURN VALUES

       A gensio_err returns a standard gensio error.

SEE ALSO

       gensio_os_funcs(3), gensio(5), gensio_err(3)

                                           03 Feb 2021                 gensio_glib_funcs_alloc(3)