git://git.onelab.eu
/
sliver-openvswitch.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
update sliver-ovs to new ovsdb syntax
[sliver-openvswitch.git]
/
lib
/
fatal-signal.c
diff --git
a/lib/fatal-signal.c
b/lib/fatal-signal.c
index
ed82173
..
1770457
100644
(file)
--- a/
lib/fatal-signal.c
+++ b/
lib/fatal-signal.c
@@
-1,5
+1,5
@@
/*
/*
- * Copyright (c) 2008, 2009, 2010, 2011
Nicira Networks
.
+ * Copyright (c) 2008, 2009, 2010, 2011
, 2012, 2013 Nicira, Inc
.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@
-15,7
+15,6
@@
*/
#include <config.h>
#include "fatal-signal.h"
*/
#include <config.h>
#include "fatal-signal.h"
-#include <assert.h>
#include <errno.h>
#include <signal.h>
#include <stdbool.h>
#include <errno.h>
#include <signal.h>
#include <stdbool.h>
@@
-27,10
+26,17
@@
#include "poll-loop.h"
#include "shash.h"
#include "sset.h"
#include "poll-loop.h"
#include "shash.h"
#include "sset.h"
+#include "signals.h"
#include "socket-util.h"
#include "util.h"
#include "vlog.h"
#include "socket-util.h"
#include "util.h"
#include "vlog.h"
+#include "type-props.h"
+
+#ifndef SIG_ATOMIC_MAX
+#define SIG_ATOMIC_MAX TYPE_MAXIMUM(sig_atomic_t)
+#endif
+
VLOG_DEFINE_THIS_MODULE(fatal_signal);
/* Signals to catch. */
VLOG_DEFINE_THIS_MODULE(fatal_signal);
/* Signals to catch. */
@@
-67,11
+73,7
@@
fatal_signal_init(void)
inited = true;
inited = true;
- if (pipe(signal_fds)) {
- ovs_fatal(errno, "could not create pipe");
- }
- set_nonblocking(signal_fds[0]);
- set_nonblocking(signal_fds[1]);
+ xpipe_nonblocking(signal_fds);
sigemptyset(&fatal_signal_set);
for (i = 0; i < ARRAY_SIZE(fatal_signals); i++) {
sigemptyset(&fatal_signal_set);
for (i = 0; i < ARRAY_SIZE(fatal_signals); i++) {
@@
-79,12
+81,10
@@
fatal_signal_init(void)
struct sigaction old_sa;
sigaddset(&fatal_signal_set, sig_nr);
struct sigaction old_sa;
sigaddset(&fatal_signal_set, sig_nr);
- if (sigaction(sig_nr, NULL, &old_sa)) {
- ovs_fatal(errno, "sigaction");
- }
+ xsigaction(sig_nr, NULL, &old_sa);
if (old_sa.sa_handler == SIG_DFL
&& signal(sig_nr, fatal_signal_handler) == SIG_ERR) {
if (old_sa.sa_handler == SIG_DFL
&& signal(sig_nr, fatal_signal_handler) == SIG_ERR) {
-
ovs_fatal(errno, "signal"
);
+
VLOG_FATAL("signal failed (%s)", ovs_strerror(errno)
);
}
}
atexit(atexit_handler);
}
}
atexit(atexit_handler);
@@
-111,7
+111,7
@@
fatal_signal_add_hook(void (*hook_cb)(void *aux), void (*cancel_cb)(void *aux),
{
fatal_signal_init();
{
fatal_signal_init();
- assert(n_hooks < MAX_HOOKS);
+
ovs_
assert(n_hooks < MAX_HOOKS);
hooks[n_hooks].hook_cb = hook_cb;
hooks[n_hooks].cancel_cb = cancel_cb;
hooks[n_hooks].aux = aux;
hooks[n_hooks].hook_cb = hook_cb;
hooks[n_hooks].cancel_cb = cancel_cb;
hooks[n_hooks].aux = aux;
@@
-149,12
+149,16
@@
fatal_signal_handler(int sig_nr)
void
fatal_signal_run(void)
{
void
fatal_signal_run(void)
{
-
in
t sig_nr;
+
sig_atomic_
t sig_nr;
fatal_signal_init();
sig_nr = stored_sig_nr;
if (sig_nr != SIG_ATOMIC_MAX) {
fatal_signal_init();
sig_nr = stored_sig_nr;
if (sig_nr != SIG_ATOMIC_MAX) {
+ char namebuf[SIGNAL_NAME_BUFSIZE];
+
+ VLOG_WARN("terminating with signal %d (%s)",
+ (int)sig_nr, signal_name(sig_nr, namebuf, sizeof namebuf));
call_hooks(sig_nr);
/* Re-raise the signal with the default handling so that the program
call_hooks(sig_nr);
/* Re-raise the signal with the default handling so that the program
@@
-234,7
+238,7
@@
fatal_signal_unlink_file_now(const char *file)
{
int error = unlink(file) ? errno : 0;
if (error) {
{
int error = unlink(file) ? errno : 0;
if (error) {
- VLOG_WARN("could not unlink \"%s\" (%s)", file, strerror(error));
+ VLOG_WARN("could not unlink \"%s\" (%s)", file,
ovs_
strerror(error));
}
fatal_signal_remove_file_to_unlink(file);
}
fatal_signal_remove_file_to_unlink(file);