/usr/include/sfi/sficomport.hh is in libbse-dev 0.7.8-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 | // Licensed GNU LGPL v2.1 or later: http://www.gnu.org/licenses/lgpl.html
#ifndef __SFI_COM_PORT_H__
#define __SFI_COM_PORT_H__
#include <sfi/sfitypes.hh>
#include <sfi/sfiring.hh>
G_BEGIN_DECLS
#define SFI_COM_PORT_MAGIC (0x42534500 /* "BSE\0" */)
typedef struct _SfiComPortLink SfiComPortLink;
typedef struct _SfiComPort SfiComPort;
typedef void (*SfiComPortClosedFunc) (SfiComPort *port,
gpointer close_data);
struct _SfiComPort {
gchar *ident;
guint ref_count;
GPollFD pfd[2]; /* 0 = remote in, 1 = remote out */
guint connected : 1;
guint reaped : 1;
guint sigterm_sent : 1;
guint sigkill_sent : 1;
guint exit_signal_sent : 1;
guint dumped_core : 1;
SfiComPortLink *link;
struct {
guint n;
guint8 *data;
guint allocated;
} wbuffer; /* output buffer */
struct {
guint hlen;
guint8 header[8];
guint dlen;
guint n;
guint8 *data;
guint allocated;
} rbuffer; /* input buffer */
SfiRing *rvalues;
GScanner *scanner;
SfiComPortClosedFunc close_func;
gpointer close_data;
gint remote_pid;
gint exit_code;
gint exit_signal;
};
struct _SfiComPortLink
{
BirnetMutex mutex;
guint ref_count;
SfiComPort *port1;
BirnetThread *thread1;
SfiComPort *port2;
BirnetThread *thread2;
SfiRing *p1queue;
SfiRing *p2queue;
gboolean waiting;
BirnetCond wcond;
};
/* create ports */
SfiComPort* sfi_com_port_from_pipe (const gchar *ident,
gint remote_input,
gint remote_output);
SfiComPort* sfi_com_port_from_child (const gchar *ident,
gint remote_input,
gint remote_output,
gint remote_pid);
/* create linked ports */
void sfi_com_port_create_linked (const gchar *ident1,
BirnetThread *thread1,
SfiComPort **port1,
const gchar *ident2,
BirnetThread *thread2,
SfiComPort **port2);
SfiComPort* sfi_com_port_ref (SfiComPort *port);
void sfi_com_port_unref (SfiComPort *port);
/* remote I/O */
void sfi_com_port_send (SfiComPort *port,
const GValue *value);
void sfi_com_port_send_bulk (SfiComPort *port,
SfiRing *value_ring);
GValue* sfi_com_port_recv (SfiComPort *port);
GValue* sfi_com_port_recv_blocking (SfiComPort *port);
/* I/O handling */
GPollFD* sfi_com_port_get_poll_fds (SfiComPort *port,
guint *n_pfds);
gboolean sfi_com_port_io_pending (SfiComPort *port);
void sfi_com_port_process_io (SfiComPort *port);
/* shutdown */
void sfi_com_port_set_close_func (SfiComPort *port,
SfiComPortClosedFunc func,
gpointer close_data);
void sfi_com_port_close_remote (SfiComPort *port,
gboolean terminate_child);
void sfi_com_port_reap_child (SfiComPort *port,
gboolean kill_child);
gboolean sfi_com_port_test_reap_child (SfiComPort *port);
G_END_DECLS
#endif /* __SFI_COM_PORT_H__ */
|