aboutsummaryrefslogtreecommitdiffstats
path: root/tools/hotplug/NetBSD/rc.d/xend
diff options
context:
space:
mode:
Diffstat (limited to 'tools/hotplug/NetBSD/rc.d/xend')
-rw-r--r--tools/hotplug/NetBSD/rc.d/xend55
1 files changed, 51 insertions, 4 deletions
diff --git a/tools/hotplug/NetBSD/rc.d/xend b/tools/hotplug/NetBSD/rc.d/xend
index ead9ee0390..ac5f2ca1d8 100644
--- a/tools/hotplug/NetBSD/rc.d/xend
+++ b/tools/hotplug/NetBSD/rc.d/xend
@@ -15,10 +15,57 @@ export PATH
name="xend"
rcvar=$name
-command="${SBINDIR}/xend"
-command_args="start"
-command_interpreter=`head -n 1 ${command} | awk '{ print substr($0,3) }'`
-sig_stop="SIGKILL"
+start_precmd="xend_precmd"
+start_cmd="xend_startcmd"
+stop_cmd="xend_stop"
+status_cmd="xend_status"
+extra_commands="status"
+required_files="/kern/xen/privcmd"
+
+XENBACKENDD_PIDFILE="/var/run/xenbackendd.pid"
+#XENBACKENDD_DEBUG=1
+
+xend_precmd()
+{
+ mkdir -p /var/run/xend || exit 1
+ mkdir -p /var/run/xend/boot || exit 1
+}
+
+xend_startcmd()
+{
+ printf "Starting xenbackendd.\n"
+
+ XENBACKENDD_ARGS=""
+ if [ -n "${XENBACKENDD_DEBUG}" ]; then
+ XENBACKENDD_ARGS="${XENBACKENDD_ARGS} -d"
+ fi
+
+ ${SBINDIR}/xenbackendd ${XENBACKENDD_ARGS}
+
+ printf "Starting xend.\n"
+ ${SBINDIR}/xend start >/dev/null 2>&1
+}
+
+xend_stop()
+{
+ printf "Stopping xenbackendd, xend\n"
+ xb_pid=$(check_pidfile ${XENBACKENDD_PIDFILE} ${SBINDIR}/xenbackendd)
+ if test -n "$xb_pid";
+ then
+ kill -${sig_stop:-TERM} $xb_pid
+ fi
+ while pgrep -f ${SBINDIR}/xend >/dev/null 2>&1; do
+ pkill -${sig_stop:-KILL} -f ${SBINDIR}/xend
+ done
+ wait_for_pids $xb_pid
+ rm -f /var/lock/subsys/xend /var/lock/xend /var/run/xenbackendd.pid
+}
+
+xend_status()
+{
+ ${SBINDIR}/xend status
+}
load_rc_config $name
run_rc_command "$1"
+