Move signal handling to util.c.
This will be useful in phc2sys and pmc. Signed-off-by: Miroslav Lichvar <mlichvar@redhat.com>master
parent
2423357754
commit
ca637b2067
23
ptp4l.c
23
ptp4l.c
|
@ -18,7 +18,6 @@
|
||||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||||
*/
|
*/
|
||||||
#include <limits.h>
|
#include <limits.h>
|
||||||
#include <signal.h>
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
@ -40,8 +39,6 @@
|
||||||
|
|
||||||
int assume_two_step = 0;
|
int assume_two_step = 0;
|
||||||
|
|
||||||
static int running = 1;
|
|
||||||
|
|
||||||
static struct config cfg_settings = {
|
static struct config cfg_settings = {
|
||||||
.dds = {
|
.dds = {
|
||||||
.dds = {
|
.dds = {
|
||||||
|
@ -131,12 +128,6 @@ static struct config cfg_settings = {
|
||||||
.cfg_ignore = 0,
|
.cfg_ignore = 0,
|
||||||
};
|
};
|
||||||
|
|
||||||
static void handle_int_quit_term(int s)
|
|
||||||
{
|
|
||||||
pr_notice("caught signal %d", s);
|
|
||||||
running = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void usage(char *progname)
|
static void usage(char *progname)
|
||||||
{
|
{
|
||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
|
@ -184,18 +175,8 @@ int main(int argc, char *argv[])
|
||||||
struct defaultDS *ds = &cfg_settings.dds.dds;
|
struct defaultDS *ds = &cfg_settings.dds.dds;
|
||||||
int phc_index = -1, required_modes = 0;
|
int phc_index = -1, required_modes = 0;
|
||||||
|
|
||||||
if (SIG_ERR == signal(SIGINT, handle_int_quit_term)) {
|
if (handle_term_signals())
|
||||||
fprintf(stderr, "cannot handle SIGINT\n");
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
|
||||||
if (SIG_ERR == signal(SIGQUIT, handle_int_quit_term)) {
|
|
||||||
fprintf(stderr, "cannot handle SIGQUIT\n");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
if (SIG_ERR == signal(SIGTERM, handle_int_quit_term)) {
|
|
||||||
fprintf(stderr, "cannot handle SIGTERM\n");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Set fault timeouts to a default value */
|
/* Set fault timeouts to a default value */
|
||||||
for (i = 0; i < FT_CNT; i++) {
|
for (i = 0; i < FT_CNT; i++) {
|
||||||
|
@ -404,7 +385,7 @@ int main(int argc, char *argv[])
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
while (running) {
|
while (is_running()) {
|
||||||
if (clock_poll(clock))
|
if (clock_poll(clock))
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
32
util.c
32
util.c
|
@ -17,11 +17,13 @@
|
||||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||||
*/
|
*/
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
|
#include <signal.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
#include "address.h"
|
#include "address.h"
|
||||||
|
#include "print.h"
|
||||||
#include "sk.h"
|
#include "sk.h"
|
||||||
#include "util.h"
|
#include "util.h"
|
||||||
|
|
||||||
|
@ -29,6 +31,8 @@
|
||||||
#define NS_PER_HOUR (3600 * NS_PER_SEC)
|
#define NS_PER_HOUR (3600 * NS_PER_SEC)
|
||||||
#define NS_PER_DAY (24 * NS_PER_HOUR)
|
#define NS_PER_DAY (24 * NS_PER_HOUR)
|
||||||
|
|
||||||
|
static int running = 1;
|
||||||
|
|
||||||
const char *ps_str[] = {
|
const char *ps_str[] = {
|
||||||
"NONE",
|
"NONE",
|
||||||
"INITIALIZING",
|
"INITIALIZING",
|
||||||
|
@ -311,3 +315,31 @@ int get_arg_val_d(int op, const char *optarg, double *val,
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void handle_int_quit_term(int s)
|
||||||
|
{
|
||||||
|
pr_notice("caught signal %d", s);
|
||||||
|
running = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int handle_term_signals(void)
|
||||||
|
{
|
||||||
|
if (SIG_ERR == signal(SIGINT, handle_int_quit_term)) {
|
||||||
|
fprintf(stderr, "cannot handle SIGINT\n");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
if (SIG_ERR == signal(SIGQUIT, handle_int_quit_term)) {
|
||||||
|
fprintf(stderr, "cannot handle SIGQUIT\n");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
if (SIG_ERR == signal(SIGTERM, handle_int_quit_term)) {
|
||||||
|
fprintf(stderr, "cannot handle SIGTERM\n");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int is_running(void)
|
||||||
|
{
|
||||||
|
return running;
|
||||||
|
}
|
||||||
|
|
14
util.h
14
util.h
|
@ -212,4 +212,18 @@ int get_arg_val_ui(int op, const char *optarg, unsigned int *val,
|
||||||
int get_arg_val_d(int op, const char *optarg, double *val,
|
int get_arg_val_d(int op, const char *optarg, double *val,
|
||||||
double min, double max);
|
double min, double max);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Setup a handler for terminating signals (SIGINT, SIGQUIT, SIGTERM).
|
||||||
|
*
|
||||||
|
* @return 0 on success, -1 on error.
|
||||||
|
*/
|
||||||
|
int handle_term_signals(void);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check if a terminating signal was received.
|
||||||
|
*
|
||||||
|
* @return 1 if no terminating signal was received, 0 otherwise.
|
||||||
|
*/
|
||||||
|
int is_running(void);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue