syslog-ng source
mainloop-worker.c File Reference
#include "mainloop-worker.h"
#include "mainloop-call.h"
#include "tls-support.h"
#include "apphook.h"
#include "messages.h"
#include "scratch-buffers.h"
#include "atomic.h"
#include <iv.h>
Include dependency graph for mainloop-worker.c:

Classes

struct  WorkerExitNotification
 
struct  ExitCondition
 
struct  SyncCallAction
 

Macros

#define main_loop_worker_id   __slng_tls_deref(main_loop_worker_id)
 
#define batch_callbacks   __slng_tls_deref(batch_callbacks)
 
#define main_loop_worker_type   __slng_tls_deref(main_loop_worker_type)
 
#define MAIN_LOOP_IDMAP_BITS_PER_ROW   (sizeof(guint64)*8)
 
#define MAIN_LOOP_IDMAP_ROWS   (MAIN_LOOP_MAX_WORKER_THREADS / MAIN_LOOP_IDMAP_BITS_PER_ROW)
 

Functions

gint main_loop_worker_get_thread_index (void)
 
gboolean main_loop_worker_is_worker_thread (void)
 
void main_loop_worker_wait_for_exit (void)
 
gdouble mainloop_sleep_time (const gdouble delay)
 
gboolean main_loop_worker_wait_for_exit_until (gdouble wait_time)
 
void main_loop_worker_register_exit_notification_callback (WorkerExitNotificationFunc func, gpointer user_data)
 
void main_loop_worker_thread_start (MainLoopWorkerType worker_type)
 
void main_loop_worker_thread_stop (void)
 
void main_loop_worker_run_gc (void)
 
void main_loop_worker_job_start (void)
 
void _register_sync_call_action (GQueue *q, void(*func)(gpointer user_data), gpointer user_data)
 
void _consume_action (SyncCallAction *action)
 
void main_loop_worker_job_complete (void)
 
void main_loop_worker_register_batch_callback (WorkerBatchCallback *cb)
 
void main_loop_worker_invoke_batch_callbacks (void)
 
void main_loop_worker_assert_batch_callbacks_were_processed (void)
 
gboolean is_reloading_scheduled (void)
 
void set_reloading_scheduled (gboolean scheduled)
 
gboolean main_loop_worker_job_quit (void)
 
void main_loop_worker_sync_call (void(*func)(gpointer user_data), gpointer user_data)
 
void main_loop_sync_worker_startup_and_teardown (void)
 
gint main_loop_worker_get_max_number_of_threads (void)
 
void main_loop_worker_allocate_thread_space (gint num_threads)
 
void main_loop_worker_finalize_thread_space (void)
 
void main_loop_worker_init (void)
 
void main_loop_worker_deinit (void)
 

Variables

 TLS_BLOCK_START
 
MainLoopWorkerType main_loop_worker_type
 
struct iv_list_head batch_callbacks
 
 TLS_BLOCK_END
 
GQueue sync_call_actions = G_QUEUE_INIT
 
volatile gboolean main_loop_workers_quit
 
volatile gboolean reloading_scheduled
 

Macro Definition Documentation

◆ batch_callbacks

#define batch_callbacks   __slng_tls_deref(batch_callbacks)

◆ MAIN_LOOP_IDMAP_BITS_PER_ROW

#define MAIN_LOOP_IDMAP_BITS_PER_ROW   (sizeof(guint64)*8)

◆ MAIN_LOOP_IDMAP_ROWS

#define MAIN_LOOP_IDMAP_ROWS   (MAIN_LOOP_MAX_WORKER_THREADS / MAIN_LOOP_IDMAP_BITS_PER_ROW)

◆ main_loop_worker_id

#define main_loop_worker_id   __slng_tls_deref(main_loop_worker_id)

◆ main_loop_worker_type

#define main_loop_worker_type   __slng_tls_deref(main_loop_worker_type)

Function Documentation

◆ _consume_action()

void _consume_action ( SyncCallAction action)

◆ _register_sync_call_action()

void _register_sync_call_action ( GQueue *  q,
void(*)(gpointer user_data)  func,
gpointer  user_data 
)

◆ is_reloading_scheduled()

gboolean is_reloading_scheduled ( void  )
inline

◆ main_loop_sync_worker_startup_and_teardown()

void main_loop_sync_worker_startup_and_teardown ( void  )

◆ main_loop_worker_allocate_thread_space()

void main_loop_worker_allocate_thread_space ( gint  num_threads)

◆ main_loop_worker_assert_batch_callbacks_were_processed()

void main_loop_worker_assert_batch_callbacks_were_processed ( void  )

◆ main_loop_worker_deinit()

void main_loop_worker_deinit ( void  )

◆ main_loop_worker_finalize_thread_space()

void main_loop_worker_finalize_thread_space ( void  )

◆ main_loop_worker_get_max_number_of_threads()

gint main_loop_worker_get_max_number_of_threads ( void  )

◆ main_loop_worker_get_thread_index()

gint main_loop_worker_get_thread_index ( void  )

◆ main_loop_worker_init()

void main_loop_worker_init ( void  )

◆ main_loop_worker_invoke_batch_callbacks()

void main_loop_worker_invoke_batch_callbacks ( void  )

◆ main_loop_worker_is_worker_thread()

gboolean main_loop_worker_is_worker_thread ( void  )

◆ main_loop_worker_job_complete()

void main_loop_worker_job_complete ( void  )

◆ main_loop_worker_job_quit()

gboolean main_loop_worker_job_quit ( void  )
inline

◆ main_loop_worker_job_start()

void main_loop_worker_job_start ( void  )

◆ main_loop_worker_register_batch_callback()

void main_loop_worker_register_batch_callback ( WorkerBatchCallback cb)

◆ main_loop_worker_register_exit_notification_callback()

void main_loop_worker_register_exit_notification_callback ( WorkerExitNotificationFunc  func,
gpointer  user_data 
)

◆ main_loop_worker_run_gc()

void main_loop_worker_run_gc ( void  )

◆ main_loop_worker_sync_call()

void main_loop_worker_sync_call ( void(*)(gpointer user_data)  func,
gpointer  user_data 
)

◆ main_loop_worker_thread_start()

void main_loop_worker_thread_start ( MainLoopWorkerType  worker_type)

◆ main_loop_worker_thread_stop()

void main_loop_worker_thread_stop ( void  )

◆ main_loop_worker_wait_for_exit()

void main_loop_worker_wait_for_exit ( void  )

◆ main_loop_worker_wait_for_exit_until()

gboolean main_loop_worker_wait_for_exit_until ( gdouble  wait_time)

◆ mainloop_sleep_time()

gdouble mainloop_sleep_time ( const gdouble  delay)
inline

◆ set_reloading_scheduled()

void set_reloading_scheduled ( gboolean  scheduled)
inline

Variable Documentation

◆ batch_callbacks

struct iv_list_head batch_callbacks

◆ main_loop_worker_type

MainLoopWorkerType main_loop_worker_type

◆ main_loop_workers_quit

volatile gboolean main_loop_workers_quit

◆ reloading_scheduled

volatile gboolean reloading_scheduled

◆ sync_call_actions

GQueue sync_call_actions = G_QUEUE_INIT

◆ TLS_BLOCK_END

TLS_BLOCK_END

◆ TLS_BLOCK_START

TLS_BLOCK_START
Initial value:
{
#define main_loop_worker_id
Definition: mainloop-worker.c:49