2023-02-08 13:17:09 +01:00
|
|
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
2004-01-19 22:23:37 +01:00
|
|
|
/*
|
|
|
|
* Quagga Signal handling header.
|
|
|
|
*
|
|
|
|
* Copyright (C) 2004 Paul Jakma.
|
|
|
|
*/
|
|
|
|
|
2021-11-11 20:28:54 +01:00
|
|
|
#ifndef _FRR_SIGNAL_H
|
|
|
|
#define _FRR_SIGNAL_H
|
2004-07-22 21:14:27 +02:00
|
|
|
|
2022-02-28 16:40:31 +01:00
|
|
|
#include <event.h>
|
2004-01-19 22:23:37 +01:00
|
|
|
|
2019-02-07 23:10:31 +01:00
|
|
|
#ifdef __cplusplus
|
|
|
|
extern "C" {
|
|
|
|
#endif
|
|
|
|
|
2021-11-11 20:28:54 +01:00
|
|
|
#define FRR_SIGNAL_TIMER_INTERVAL 2L
|
2004-01-19 22:23:37 +01:00
|
|
|
|
2021-11-11 20:28:54 +01:00
|
|
|
struct frr_signal_t {
|
2004-01-19 22:23:37 +01:00
|
|
|
int signal; /* signal number */
|
|
|
|
void (*handler)(void); /* handler to call */
|
|
|
|
|
|
|
|
volatile sig_atomic_t caught; /* private member */
|
|
|
|
};
|
|
|
|
|
|
|
|
/* initialise sigevent system
|
|
|
|
* takes:
|
|
|
|
* - pointer to valid struct thread_master
|
|
|
|
* - number of elements in passed in signals array
|
2021-11-11 20:28:54 +01:00
|
|
|
* - array of frr_signal_t's describing signals to handle
|
2004-01-19 22:23:37 +01:00
|
|
|
* and handlers to use for each signal
|
|
|
|
*/
|
2005-05-06 Paul Jakma <paul@dishone.st>
* (general) extern and static'ification of functions in code and
header.
Cleanup any definitions with unspecified arguments.
Add casts for callback assignments where the callback is defined,
typically, as passing void *, but the function being assigned has
some other pointer type defined as its argument, as gcc complains
about casts from void * to X* via function arguments.
Fix some old K&R style function argument definitions.
Add noreturn gcc attribute to some functions, as appropriate.
Add unused gcc attribute to some functions (eg ones meant to help
while debugging)
Add guard defines to headers which were missing them.
* command.c: (install_node) add const qualifier, still doesnt shut
up the warning though, because of the double pointer.
(cmp_node) ditto
* keychain.c: (key_str2time) Add GET_LONG_RANGE() macro, derived
fromn vty.h ones to fix some of the (long) < 0 warnings.
* thread.c: (various) use thread_empty
(cpu_record_hash_key) should cast to uintptr_t, a stdint.h type
* vty.h: Add VTY_GET_IPV4_ADDRESS and VTY_GET_IPV4_PREFIX so they
removed from ospfd/ospf_vty.h
* zebra.h: Move definition of ZEBRA_PORT to here, to remove
dependence of lib on zebra/zserv.h
2005-05-06 23:25:49 +02:00
|
|
|
extern void signal_init(struct thread_master *m, int sigc,
|
2021-11-11 20:28:54 +01:00
|
|
|
struct frr_signal_t *signals);
|
2004-01-19 22:23:37 +01:00
|
|
|
|
2020-09-02 22:25:00 +02:00
|
|
|
|
|
|
|
/*
|
|
|
|
* Check whether any signals have been received and are pending. This is done
|
|
|
|
* with the application's key signals blocked. The complete set of signals
|
|
|
|
* is returned in 'setp', so the caller can restore them when appropriate.
|
|
|
|
* If there are pending signals, returns 'true', 'false' otherwise.
|
|
|
|
*/
|
|
|
|
bool frr_sigevent_check(sigset_t *setp);
|
|
|
|
|
2004-07-22 21:14:27 +02:00
|
|
|
/* check whether there are signals to handle, process any found */
|
2021-11-11 20:28:54 +01:00
|
|
|
extern int frr_sigevent_process(void);
|
2004-07-22 21:14:27 +02:00
|
|
|
|
2019-02-07 23:10:31 +01:00
|
|
|
#ifdef __cplusplus
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
|
2021-11-11 20:28:54 +01:00
|
|
|
#endif /* _FRR_SIGNAL_H */
|