mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 18:21:39 +01:00
This allows to fall back to the original Unix.select if preferred. It could be useful for debugging purposes too. Signed-off-by: Zheng Li <dev@zheng.li> Reviewed-by: David Scott <dave.scott@citrix.com>
73 lines
3.0 KiB
OCaml
73 lines
3.0 KiB
OCaml
(*
|
|
* Copyright (C) 2006-2007 XenSource Ltd.
|
|
* Copyright (C) 2008 Citrix Ltd.
|
|
* Author Vincent Hanquez <vincent.hanquez@eu.citrix.com>
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU Lesser General Public License as published
|
|
* by the Free Software Foundation; version 2.1 only. with the special
|
|
* exception on linking described in file LICENSE.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU Lesser General Public License for more details.
|
|
*)
|
|
|
|
type config =
|
|
{
|
|
domain_init: bool;
|
|
activate_access_log: bool;
|
|
daemonize: bool;
|
|
reraise_top_level: bool;
|
|
config_file: string option;
|
|
pidfile: string option; (* old xenstored compatibility *)
|
|
tracefile: string option; (* old xenstored compatibility *)
|
|
restart: bool;
|
|
disable_socket: bool;
|
|
use_select: bool;
|
|
}
|
|
|
|
let do_argv =
|
|
let pidfile = ref "" and tracefile = ref "" (* old xenstored compatibility *)
|
|
and domain_init = ref true
|
|
and activate_access_log = ref true
|
|
and daemonize = ref true
|
|
and reraise_top_level = ref false
|
|
and config_file = ref ""
|
|
and restart = ref false
|
|
and disable_socket = ref false
|
|
and use_select = ref false in
|
|
|
|
let speclist =
|
|
[ ("--no-domain-init", Arg.Unit (fun () -> domain_init := false),
|
|
"to state that xenstored should not initialise dom0");
|
|
("--config-file", Arg.Set_string config_file,
|
|
"set an alternative location for the configuration file");
|
|
("--no-fork", Arg.Unit (fun () -> daemonize := false),
|
|
"to request that the daemon does not fork");
|
|
("--reraise-top-level", Arg.Unit (fun () -> reraise_top_level := true),
|
|
"reraise exceptions caught at the top level");
|
|
("--no-access-log", Arg.Unit (fun () -> activate_access_log := false),
|
|
"do not create a xenstore-access.log file");
|
|
("--pid-file", Arg.Set_string pidfile, ""); (* for compatibility *)
|
|
("-T", Arg.Set_string tracefile, ""); (* for compatibility *)
|
|
("--restart", Arg.Set restart, "Read database on starting");
|
|
("--disable-socket", Arg.Unit (fun () -> disable_socket := true), "Disable socket");
|
|
("--use-select", Arg.Unit (fun () -> use_select := true), "Use select instead of poll"); (* for backward compatibility and testing *)
|
|
] in
|
|
let usage_msg = "usage : xenstored [--config-file <filename>] [--no-domain-init] [--help] [--no-fork] [--reraise-top-level] [--restart] [--disable-socket] [--use-select]" in
|
|
Arg.parse speclist (fun s -> ()) usage_msg;
|
|
{
|
|
domain_init = !domain_init;
|
|
activate_access_log = !activate_access_log;
|
|
daemonize = !daemonize;
|
|
reraise_top_level = !reraise_top_level;
|
|
config_file = if !config_file <> "" then Some !config_file else None;
|
|
pidfile = if !pidfile <> "" then Some !pidfile else None;
|
|
tracefile = if !tracefile <> "" then Some !tracefile else None;
|
|
restart = !restart;
|
|
disable_socket = !disable_socket;
|
|
use_select = !use_select;
|
|
}
|