Commit e93136ef authored by Max Kellermann's avatar Max Kellermann

event_pipe: added event_pipe_emit_fast()

event_pipe_emit_fast() is aimed for use in signal handlers: it doesn't lock the mutex, and doesn't log on error. That makes it potentially lossy, but for its intended use, that does not matter.
parent ecb20c5f
...@@ -137,6 +137,14 @@ void event_pipe_emit(enum pipe_event event) ...@@ -137,6 +137,14 @@ void event_pipe_emit(enum pipe_event event)
g_error("error writing to pipe: %s", strerror(errno)); g_error("error writing to pipe: %s", strerror(errno));
} }
void event_pipe_emit_fast(enum pipe_event event)
{
assert((unsigned)event < PIPE_EVENT_MAX);
pipe_events[event] = true;
write(event_pipe[1], "", 1);
}
void event_pipe_signal(void) void event_pipe_signal(void)
{ {
event_pipe_emit(PIPE_EVENT_SIGNAL); event_pipe_emit(PIPE_EVENT_SIGNAL);
......
...@@ -56,6 +56,13 @@ event_pipe_register(enum pipe_event event, event_pipe_callback_t callback); ...@@ -56,6 +56,13 @@ event_pipe_register(enum pipe_event event, event_pipe_callback_t callback);
void event_pipe_emit(enum pipe_event event); void event_pipe_emit(enum pipe_event event);
/**
* Similar to event_pipe_emit(), but aimed for use in signal handlers:
* it doesn't lock the mutex, and doesn't log on error. That makes it
* potentially lossy, but for its intended use, that does not matter.
*/
void event_pipe_emit_fast(enum pipe_event event);
void event_pipe_signal(void); void event_pipe_signal(void);
void event_pipe_wait(void); void event_pipe_wait(void);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment