pacemaker  2.0.1-15814c6c0d
Scalable High-Availability cluster resource manager
Macros | Typedefs | Functions | Variables
mainloop.c File Reference
#include <crm_internal.h>
#include <stdlib.h>
#include <signal.h>
#include <errno.h>
#include <sys/wait.h>
#include <crm/crm.h>
#include <crm/common/xml.h>
#include <crm/common/mainloop.h>
#include <crm/common/ipcs.h>
#include <qb/qbarray.h>
Include dependency graph for mainloop.c:

Go to the source code of this file.

Macros

#define _GNU_SOURCE
 

Typedefs

typedef struct signal_s crm_signal_t
 

Functions

void mainloop_trigger_complete (crm_trigger_t *trig)
 
crm_trigger_tmainloop_add_trigger (int priority, int(*dispatch)(gpointer user_data), gpointer userdata)
 
void mainloop_set_trigger (crm_trigger_t *source)
 
gboolean mainloop_destroy_trigger (crm_trigger_t *source)
 
gboolean crm_signal (int sig, void(*dispatch)(int sig))
 
gboolean mainloop_add_signal (int sig, void(*dispatch)(int sig))
 
gboolean mainloop_destroy_signal (int sig)
 
void mainloop_cleanup (void)
 
qb_ipcs_service_t * mainloop_add_ipc_server (const char *name, enum qb_ipc_type type, struct qb_ipcs_service_handlers *callbacks)
 
void mainloop_del_ipc_server (qb_ipcs_service_t *server)
 
mainloop_io_tmainloop_add_ipc_client (const char *name, int priority, size_t max_size, void *userdata, struct ipc_client_callbacks *callbacks)
 
void mainloop_del_ipc_client (mainloop_io_t *client)
 
crm_ipc_tmainloop_get_ipc_client (mainloop_io_t *client)
 
mainloop_io_tmainloop_add_fd (const char *name, int priority, int fd, void *userdata, struct mainloop_fd_callbacks *callbacks)
 
void mainloop_del_fd (mainloop_io_t *client)
 
pid_t mainloop_child_pid (mainloop_child_t *child)
 
const char * mainloop_child_name (mainloop_child_t *child)
 
int mainloop_child_timeout (mainloop_child_t *child)
 
void * mainloop_child_userdata (mainloop_child_t *child)
 
void mainloop_clear_child_userdata (mainloop_child_t *child)
 
int mainloop_child_kill (pid_t pid)
 
void mainloop_child_add_with_flags (pid_t pid, int timeout, const char *desc, void *privatedata, enum mainloop_child_flags flags, void(*callback)(mainloop_child_t *p, pid_t pid, int core, int signo, int exitcode))
 
void mainloop_child_add (pid_t pid, int timeout, const char *desc, void *privatedata, void(*callback)(mainloop_child_t *p, pid_t pid, int core, int signo, int exitcode))
 
bool mainloop_timer_running (mainloop_timer_t *t)
 
void mainloop_timer_start (mainloop_timer_t *t)
 
void mainloop_timer_stop (mainloop_timer_t *t)
 
guint mainloop_timer_set_period (mainloop_timer_t *t, guint period_ms)
 
mainloop_timer_tmainloop_timer_add (const char *name, guint period_ms, bool repeat, GSourceFunc cb, void *userdata)
 
void mainloop_timer_del (mainloop_timer_t *t)
 
void pcmk_drain_main_loop (GMainLoop *mloop, guint timer_ms, bool(*check)(guint))
 Process main loop events while a certain condition is met. More...
 

Variables

struct qb_ipcs_poll_handlers gio_poll_funcs
 

Macro Definition Documentation

◆ _GNU_SOURCE

#define _GNU_SOURCE

Definition at line 11 of file mainloop.c.

Typedef Documentation

◆ crm_signal_t

typedef struct signal_s crm_signal_t

Function Documentation

◆ crm_signal()

gboolean crm_signal ( int  sig,
void(*)(int sig)  dispatch 
)

Definition at line 290 of file mainloop.c.

◆ mainloop_add_fd()

mainloop_io_t* mainloop_add_fd ( const char *  name,
int  priority,
int  fd,
void *  userdata,
struct mainloop_fd_callbacks callbacks 
)

Definition at line 804 of file mainloop.c.

◆ mainloop_add_ipc_client()

mainloop_io_t* mainloop_add_ipc_client ( const char *  name,
int  priority,
size_t  max_size,
void *  userdata,
struct ipc_client_callbacks callbacks 
)

Definition at line 761 of file mainloop.c.

◆ mainloop_add_ipc_server()

qb_ipcs_service_t* mainloop_add_ipc_server ( const char *  name,
enum qb_ipc_type  type,
struct qb_ipcs_service_handlers *  callbacks 
)

Definition at line 582 of file mainloop.c.

◆ mainloop_add_signal()

gboolean mainloop_add_signal ( int  sig,
void(*)(int sig)  dispatch 
)

Definition at line 326 of file mainloop.c.

◆ mainloop_add_trigger()

crm_trigger_t* mainloop_add_trigger ( int  priority,
int(*)(gpointer user_data)  dispatch,
gpointer  userdata 
)

Definition at line 201 of file mainloop.c.

◆ mainloop_child_add()

void mainloop_child_add ( pid_t  pid,
int  timeout,
const char *  desc,
void *  privatedata,
void(*)(mainloop_child_t *p, pid_t pid, int core, int signo, int exitcode)  callback 
)

Definition at line 1125 of file mainloop.c.

◆ mainloop_child_add_with_flags()

void mainloop_child_add_with_flags ( pid_t  pid,
int  timeout,
const char *  desc,
void *  privatedata,
enum mainloop_child_flags  flags,
void(*)(mainloop_child_t *p, pid_t pid, int core, int signo, int exitcode)  callback 
)

Definition at line 1091 of file mainloop.c.

◆ mainloop_child_kill()

int mainloop_child_kill ( pid_t  pid)

Definition at line 1036 of file mainloop.c.

◆ mainloop_child_name()

const char* mainloop_child_name ( mainloop_child_t child)

Definition at line 870 of file mainloop.c.

◆ mainloop_child_pid()

pid_t mainloop_child_pid ( mainloop_child_t child)

Definition at line 864 of file mainloop.c.

◆ mainloop_child_timeout()

int mainloop_child_timeout ( mainloop_child_t child)

Definition at line 876 of file mainloop.c.

◆ mainloop_child_userdata()

void* mainloop_child_userdata ( mainloop_child_t child)

Definition at line 882 of file mainloop.c.

◆ mainloop_cleanup()

void mainloop_cleanup ( void  )

Definition at line 400 of file mainloop.c.

◆ mainloop_clear_child_userdata()

void mainloop_clear_child_userdata ( mainloop_child_t child)

Definition at line 888 of file mainloop.c.

◆ mainloop_del_fd()

void mainloop_del_fd ( mainloop_io_t client)

Definition at line 848 of file mainloop.c.

◆ mainloop_del_ipc_client()

void mainloop_del_ipc_client ( mainloop_io_t client)

Definition at line 789 of file mainloop.c.

◆ mainloop_del_ipc_server()

void mainloop_del_ipc_server ( qb_ipcs_service_t *  server)

Definition at line 612 of file mainloop.c.

◆ mainloop_destroy_signal()

gboolean mainloop_destroy_signal ( int  sig)

Definition at line 380 of file mainloop.c.

◆ mainloop_destroy_trigger()

gboolean mainloop_destroy_trigger ( crm_trigger_t source)

Definition at line 221 of file mainloop.c.

◆ mainloop_get_ipc_client()

crm_ipc_t* mainloop_get_ipc_client ( mainloop_io_t client)

Definition at line 795 of file mainloop.c.

◆ mainloop_set_trigger()

void mainloop_set_trigger ( crm_trigger_t source)

Definition at line 213 of file mainloop.c.

◆ mainloop_timer_add()

mainloop_timer_t* mainloop_timer_add ( const char *  name,
guint  period_ms,
bool  repeat,
GSourceFunc  cb,
void *  userdata 
)

Definition at line 1213 of file mainloop.c.

◆ mainloop_timer_del()

void mainloop_timer_del ( mainloop_timer_t t)

Definition at line 1234 of file mainloop.c.

◆ mainloop_timer_running()

bool mainloop_timer_running ( mainloop_timer_t t)

Definition at line 1170 of file mainloop.c.

◆ mainloop_timer_set_period()

guint mainloop_timer_set_period ( mainloop_timer_t t,
guint  period_ms 
)

Definition at line 1196 of file mainloop.c.

◆ mainloop_timer_start()

void mainloop_timer_start ( mainloop_timer_t t)

Definition at line 1178 of file mainloop.c.

◆ mainloop_timer_stop()

void mainloop_timer_stop ( mainloop_timer_t t)

Definition at line 1187 of file mainloop.c.

◆ mainloop_trigger_complete()

void mainloop_trigger_complete ( crm_trigger_t trig)

Definition at line 189 of file mainloop.c.

◆ pcmk_drain_main_loop()

void pcmk_drain_main_loop ( GMainLoop *  mloop,
guint  timer_ms,
bool(*)(guint)  check 
)

Process main loop events while a certain condition is met.

Parameters
[in]mloopMain loop to process
[in]timer_msDon't process longer than this amount of time
[in]checkFunction that returns TRUE if events should be processed
Note
This function is intended to be called at shutdown if certain important events should not be missed. The caller would likely quit the main loop or exit after calling this function. The check() function will be passed the remaining timeout in milliseconds.

Definition at line 1270 of file mainloop.c.

Variable Documentation

◆ gio_poll_funcs

struct qb_ipcs_poll_handlers gio_poll_funcs
Initial value:
= {
.job_add = NULL,
.dispatch_add = gio_poll_dispatch_add,
.dispatch_mod = gio_poll_dispatch_mod,
.dispatch_del = gio_poll_dispatch_del,
}

Definition at line 549 of file mainloop.c.