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
ofp-actions: enforce valid range for table_id in goto_table instruction
[sliver-openvswitch.git]
/
lib
/
process.c
diff --git
a/lib/process.c
b/lib/process.c
index
3d6c11a
..
0aa1842
100644
(file)
--- a/
lib/process.c
+++ b/
lib/process.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.
@@
-16,7
+16,6
@@
#include <config.h>
#include "process.h"
#include <config.h>
#include "process.h"
-#include <assert.h>
#include <errno.h>
#include <fcntl.h>
#include <signal.h>
#include <errno.h>
#include <fcntl.h>
#include <signal.h>
@@
-82,9
+81,7
@@
process_init(void)
inited = true;
/* Create notification pipe. */
inited = true;
/* Create notification pipe. */
- xpipe(fds);
- set_nonblocking(fds[0]);
- set_nonblocking(fds[1]);
+ xpipe_nonblocking(fds);
/* Set up child termination signal handler. */
memset(&sa, 0, sizeof sa);
/* Set up child termination signal handler. */
memset(&sa, 0, sizeof sa);
@@
-161,7
+158,7
@@
process_register(const char *name, pid_t pid)
struct process *p;
const char *slash;
struct process *p;
const char *slash;
- assert(sigchld_is_blocked());
+
ovs_
assert(sigchld_is_blocked());
p = xzalloc(sizeof *p);
p->pid = pid;
p = xzalloc(sizeof *p);
p->pid = pid;
@@
-310,7
+307,7
@@
process_exited(struct process *p)
int
process_status(const struct process *p)
{
int
process_status(const struct process *p)
{
- assert(p->exited);
+
ovs_
assert(p->exited);
return p->status;
}
return p->status;
}
@@
-351,9
+348,15
@@
process_status_msg(int status)
if (WIFEXITED(status)) {
ds_put_format(&ds, "exit status %d", WEXITSTATUS(status));
} else if (WIFSIGNALED(status)) {
if (WIFEXITED(status)) {
ds_put_format(&ds, "exit status %d", WEXITSTATUS(status));
} else if (WIFSIGNALED(status)) {
- ds_put_format(&ds, "killed (%s)", signal_name(WTERMSIG(status)));
+ char namebuf[SIGNAL_NAME_BUFSIZE];
+
+ ds_put_format(&ds, "killed (%s)",
+ signal_name(WTERMSIG(status), namebuf, sizeof namebuf));
} else if (WIFSTOPPED(status)) {
} else if (WIFSTOPPED(status)) {
- ds_put_format(&ds, "stopped (%s)", signal_name(WSTOPSIG(status)));
+ char namebuf[SIGNAL_NAME_BUFSIZE];
+
+ ds_put_format(&ds, "stopped (%s)",
+ signal_name(WSTOPSIG(status), namebuf, sizeof namebuf));
} else {
ds_put_format(&ds, "terminated abnormally (%x)", status);
}
} else {
ds_put_format(&ds, "terminated abnormally (%x)", status);
}
@@
-411,14
+414,20
@@
struct stream {
static int
stream_open(struct stream *s, size_t max_size)
{
static int
stream_open(struct stream *s, size_t max_size)
{
+ int error;
+
s->max_size = max_size;
ds_init(&s->log);
if (pipe(s->fds)) {
VLOG_WARN("failed to create pipe: %s", strerror(errno));
return errno;
}
s->max_size = max_size;
ds_init(&s->log);
if (pipe(s->fds)) {
VLOG_WARN("failed to create pipe: %s", strerror(errno));
return errno;
}
- set_nonblocking(s->fds[0]);
- return 0;
+ error = set_nonblocking(s->fds[0]);
+ if (error) {
+ close(s->fds[0]);
+ close(s->fds[1]);
+ }
+ return error;
}
static void
}
static void
@@
-637,7
+646,7
@@
sigchld_is_blocked(void)
{
sigset_t sigs;
{
sigset_t sigs;
- x
sigproc
mask(SIG_SETMASK, NULL, &sigs);
+ x
pthread_sig
mask(SIG_SETMASK, NULL, &sigs);
return sigismember(&sigs, SIGCHLD);
}
return sigismember(&sigs, SIGCHLD);
}
@@
-648,11
+657,11
@@
block_sigchld(sigset_t *oldsigs)
sigemptyset(&sigchld);
sigaddset(&sigchld, SIGCHLD);
sigemptyset(&sigchld);
sigaddset(&sigchld, SIGCHLD);
- x
sigproc
mask(SIG_BLOCK, &sigchld, oldsigs);
+ x
pthread_sig
mask(SIG_BLOCK, &sigchld, oldsigs);
}
static void
unblock_sigchld(const sigset_t *oldsigs)
{
}
static void
unblock_sigchld(const sigset_t *oldsigs)
{
- x
sigproc
mask(SIG_SETMASK, oldsigs, NULL);
+ x
pthread_sig
mask(SIG_SETMASK, oldsigs, NULL);
}
}