src/lib/signals.h
author Tero Marttila <terom@fixme.fi>
Wed, 15 Oct 2008 01:14:22 +0300
changeset 28 e944453ca924
parent 3 10b53719659c
permissions -rw-r--r--
split off dbfs components into a separate dir, improve dirop docs, error handling, etc
3
10b53719659c signal handling
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     1
#ifndef LIB_SIGNAL_H
10b53719659c signal handling
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     2
#define LIB_SIGNAL_H
10b53719659c signal handling
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     3
10b53719659c signal handling
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     4
/*
10b53719659c signal handling
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     5
 * Handle signals in a libevent-sane way
10b53719659c signal handling
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     6
 */
10b53719659c signal handling
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     7
10b53719659c signal handling
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     8
#include <event2/event.h>
10b53719659c signal handling
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     9
10b53719659c signal handling
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    10
/*
10b53719659c signal handling
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    11
 * How many signals we can define actions for
10b53719659c signal handling
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    12
 */
10b53719659c signal handling
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    13
#define MAX_SIGNALS 8
10b53719659c signal handling
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    14
10b53719659c signal handling
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    15
/*
10b53719659c signal handling
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    16
 * info about a set of signals
10b53719659c signal handling
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    17
 */
10b53719659c signal handling
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    18
struct signals;
10b53719659c signal handling
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    19
10b53719659c signal handling
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    20
/*
10b53719659c signal handling
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    21
 * Used as a handler for signals that should cause a loopexit.
10b53719659c signal handling
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    22
 */
10b53719659c signal handling
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    23
void signals_loopexit (int signal, short event, void *arg);
10b53719659c signal handling
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    24
10b53719659c signal handling
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    25
/*
10b53719659c signal handling
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    26
 * Used to receive signals, but discard them.
10b53719659c signal handling
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    27
 */
10b53719659c signal handling
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    28
void signals_ignore (int signal, short event, void *arg);
10b53719659c signal handling
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    29
10b53719659c signal handling
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    30
/*
10b53719659c signal handling
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    31
 * Allocate a signals struct, acting on the given ev_base.
10b53719659c signal handling
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    32
 *
10b53719659c signal handling
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    33
 * Returns NULL on failure
10b53719659c signal handling
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    34
 */
10b53719659c signal handling
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    35
struct signals *signals_alloc (struct event_base *ev_base);
10b53719659c signal handling
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    36
10b53719659c signal handling
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    37
/*
10b53719659c signal handling
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    38
 * Add a signal to be handled by the given signals struct with the given handler.
10b53719659c signal handling
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    39
 */
10b53719659c signal handling
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    40
int signals_add (struct signals *signals, int sigval, void (*sig_handler)(evutil_socket_t, short, void *));
10b53719659c signal handling
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    41
10b53719659c signal handling
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    42
/*
10b53719659c signal handling
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    43
 * Add a set of default signals
10b53719659c signal handling
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    44
 *      SIGPIPE     signals_ignore
10b53719659c signal handling
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    45
 *      SIGINT      signals_loopexit
10b53719659c signal handling
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    46
 */
10b53719659c signal handling
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    47
struct signals *signals_default (struct event_base *ev_base);
10b53719659c signal handling
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    48
10b53719659c signal handling
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    49
/*
10b53719659c signal handling
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    50
 * Free the resources/handlers associated with the given signal handler
10b53719659c signal handling
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    51
 */
10b53719659c signal handling
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    52
void signals_free (struct signals *signals);
10b53719659c signal handling
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    53
10b53719659c signal handling
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    54
#endif /* LIB_SIGNAL_H */