projects
/
openvswitch
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
ovs.json: Optimize __dump_string().
[openvswitch]
/
lib
/
fatal-signal.c
diff --git
a/lib/fatal-signal.c
b/lib/fatal-signal.c
index 3f118f8aa317505e1abbbabca4a19a9e236b2ab0..c7e87dbe9fbca7bfb976f0bc921620efcaf508c5 100644
(file)
--- a/
lib/fatal-signal.c
+++ b/
lib/fatal-signal.c
@@
-1,5
+1,5
@@
/*
/*
- * Copyright (c) 2008, 2009, 2010 Nicira Networks.
+ * Copyright (c) 2008, 2009, 2010
, 2011
Nicira Networks.
*
* 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.
@@
-26,11
+26,13
@@
#include <unistd.h>
#include "poll-loop.h"
#include "shash.h"
#include <unistd.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"
-VLOG_DEFINE_THIS_MODULE(fatal_signal)
+VLOG_DEFINE_THIS_MODULE(fatal_signal)
;
/* Signals to catch. */
static const int fatal_signals[] = { SIGTERM, SIGINT, SIGHUP, SIGALRM };
/* Signals to catch. */
static const int fatal_signals[] = { SIGTERM, SIGINT, SIGHUP, SIGALRM };
@@
-66,9
+68,7
@@
fatal_signal_init(void)
inited = true;
inited = true;
- if (pipe(signal_fds)) {
- ovs_fatal(errno, "could not create pipe");
- }
+ xpipe(signal_fds);
set_nonblocking(signal_fds[0]);
set_nonblocking(signal_fds[1]);
set_nonblocking(signal_fds[0]);
set_nonblocking(signal_fds[1]);
@@
-78,12
+78,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)", strerror(errno)
);
}
}
atexit(atexit_handler);
}
}
atexit(atexit_handler);
@@
-194,8
+192,8
@@
call_hooks(int sig_nr)
}
}
\f
}
}
\f
-/* Files to delete on exit.
(The 'data' member of each node is unused.)
*/
-static struct s
hash files = SHASH
_INITIALIZER(&files);
+/* Files to delete on exit. */
+static struct s
set files = SSET
_INITIALIZER(&files);
/* Has a hook function been registered with fatal_signal_add_hook() (and not
* cleared by fatal_signal_fork())? */
/* Has a hook function been registered with fatal_signal_add_hook() (and not
* cleared by fatal_signal_fork())? */
@@
-215,7
+213,7
@@
fatal_signal_add_file_to_unlink(const char *file)
fatal_signal_add_hook(unlink_files, cancel_files, NULL, true);
}
fatal_signal_add_hook(unlink_files, cancel_files, NULL, true);
}
- s
hash_add_once(&files, file, NULL
);
+ s
set_add(&files, file
);
}
/* Unregisters 'file' from being unlinked when the program terminates via
}
/* Unregisters 'file' from being unlinked when the program terminates via
@@
-223,12
+221,7
@@
fatal_signal_add_file_to_unlink(const char *file)
void
fatal_signal_remove_file_to_unlink(const char *file)
{
void
fatal_signal_remove_file_to_unlink(const char *file)
{
- struct shash_node *node;
-
- node = shash_find(&files, file);
- if (node) {
- shash_delete(&files, node);
- }
+ sset_find_and_delete(&files, file);
}
/* Like fatal_signal_remove_file_to_unlink(), but also unlinks 'file'.
}
/* Like fatal_signal_remove_file_to_unlink(), but also unlinks 'file'.
@@
-255,17
+248,17
@@
unlink_files(void *aux OVS_UNUSED)
static void
cancel_files(void *aux OVS_UNUSED)
{
static void
cancel_files(void *aux OVS_UNUSED)
{
- s
hash
_clear(&files);
+ s
set
_clear(&files);
added_hook = false;
}
static void
do_unlink_files(void)
{
added_hook = false;
}
static void
do_unlink_files(void)
{
-
struct shash_node *nod
e;
+
const char *fil
e;
- S
HASH_FOR_EACH (nod
e, &files) {
- unlink(
node->nam
e);
+ S
SET_FOR_EACH (fil
e, &files) {
+ unlink(
fil
e);
}
}
\f
}
}
\f