From 41064650bea07f7896cf5f5ccfebef1bdec153fa Mon Sep 17 00:00:00 2001 From: Gurucharan Shetty Date: Fri, 14 Feb 2014 14:07:34 -0800 Subject: [PATCH] process: Make changes for Windows. As of now, we are using the process subsystem in ovsdb-server to handle the "--run" command line option. That particular option is not used often and till deemed necessary, make it unsupported on Windows platform. Signed-off-by: Gurucharan Shetty Acked-by: Ben Pfaff --- lib/process.c | 21 +++++++++++++++++++++ ovsdb/ovsdb-server.1.in | 2 ++ ovsdb/ovsdb-server.c | 2 ++ 3 files changed, 25 insertions(+) diff --git a/lib/process.c b/lib/process.c index 5dd34b3a7..d0e18821b 100644 --- a/lib/process.c +++ b/lib/process.c @@ -68,6 +68,7 @@ static void sigchld_handler(int signr OVS_UNUSED); void process_init(void) { +#ifndef _WIN32 static bool inited; struct sigaction sa; @@ -86,6 +87,7 @@ process_init(void) sigemptyset(&sa.sa_mask); sa.sa_flags = SA_NOCLDSTOP | SA_RESTART; xsigaction(SIGCHLD, &sa, NULL); +#endif } char * @@ -178,6 +180,7 @@ process_register(const char *name, pid_t pid) int process_start(char **argv, struct process **pp) { +#ifndef _WIN32 pid_t pid; int error; @@ -212,6 +215,10 @@ process_start(char **argv, struct process **pp) argv[0], ovs_strerror(errno)); _exit(1); } +#else + *pp = NULL; + return ENOSYS; +#endif } /* Destroys process 'p'. */ @@ -230,9 +237,13 @@ process_destroy(struct process *p) int process_kill(const struct process *p, int signr) { +#ifndef _WIN32 return (p->exited ? ESRCH : !kill(p->pid, signr) ? 0 : errno); +#else + return ENOSYS; +#endif } /* Returns the pid of process 'p'. */ @@ -275,6 +286,7 @@ char * process_status_msg(int status) { struct ds ds = DS_EMPTY_INITIALIZER; +#ifndef _WIN32 if (WIFEXITED(status)) { ds_put_format(&ds, "exit status %d", WEXITSTATUS(status)); } else if (WIFSIGNALED(status)) { @@ -293,6 +305,9 @@ process_status_msg(int status) if (WCOREDUMP(status)) { ds_put_cstr(&ds, ", core dumped"); } +#else + ds_put_cstr(&ds, "function not supported."); +#endif return ds_cstr(&ds); } @@ -300,6 +315,7 @@ process_status_msg(int status) void process_run(void) { +#ifndef _WIN32 char buf[_POSIX_PIPE_BUF]; if (!list_is_empty(&all_processes) && read(fds[0], buf, sizeof buf) > 0) { @@ -322,6 +338,7 @@ process_run(void) } } } +#endif } @@ -330,11 +347,15 @@ process_run(void) void process_wait(struct process *p) { +#ifndef _WIN32 if (p->exited) { poll_immediate_wake(); } else { poll_fd_wait(fds[0], POLLIN); } +#else + OVS_NOT_REACHED(); +#endif } char * diff --git a/ovsdb/ovsdb-server.1.in b/ovsdb/ovsdb-server.1.in index 6924d4203..a4cf3442d 100644 --- a/ovsdb/ovsdb-server.1.in +++ b/ovsdb/ovsdb-server.1.in @@ -88,6 +88,8 @@ otherwise, it exits with exit code 1. This option can be useful where a database server is needed only to run a single command, e.g.: .B "ovsdb\-server \-\-remote=punix:socket \-\-run='ovsdb\-client dump unix:socket Open_vSwitch'" +.IP +This option is not supported on Windows platform. .SS "Daemon Options" .ds DD \ \fBovsdb\-server\fR detaches only after it starts listening on all \ diff --git a/ovsdb/ovsdb-server.c b/ovsdb/ovsdb-server.c index c24d355ae..bdcdad922 100644 --- a/ovsdb/ovsdb-server.c +++ b/ovsdb/ovsdb-server.c @@ -1172,7 +1172,9 @@ parse_options(int *argcp, char **argvp[], static const struct option long_options[] = { {"remote", required_argument, NULL, OPT_REMOTE}, {"unixctl", required_argument, NULL, OPT_UNIXCTL}, +#ifndef _WIN32 {"run", required_argument, NULL, OPT_RUN}, +#endif {"help", no_argument, NULL, 'h'}, {"version", no_argument, NULL, 'V'}, DAEMON_LONG_OPTIONS, -- 2.43.0