summaryrefslogtreecommitdiffstats
path: root/main/xen/xencommons.initd
blob: 1ad0fb8c35324771ae1218ae51377ea75265d66c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
#!/sbin/runscript
# Copyright 1999-2011 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: $

opts="start stop status restart"

if [ -d /etc/sysconfig ]; then
        xencommons_config=/etc/sysconfig
else
        xencommons_config=/etc/default
fi

test -f $xencommons_config/xencommons && . $xencommons_config/xencommons

XENCONSOLED_PIDFILE=/var/run/xenconsoled.pid
#shopt -s extglob

if test "x$1" = xstart && \
     test -d /proc/xen && \
   ! test -f /proc/xen/capabilities && \
   ! grep '^xenfs ' /proc/mounts >/dev/null;
then
        mount -t xenfs xenfs /proc/xen
fi

if ! grep -q "control_d" /proc/xen/capabilities ; then
        exit 0
fi

depend() {
        need net
        before xend
}

start() {
        local time=0
        local timeout=30

        if ! `xenstore-read -s / >/dev/null 2>&1`
        then
                test -z "$XENSTORED_ROOTDIR" || XENSTORED_ROOTDIR="/var/lib/xenstored"
                rm -f "$XENSTORED_ROOTDIR"/tdb* &>/dev/null
                test -z "$XENSTORED_TRACE" || XENSTORED_ARGS=" -T /var/log/xen/xenstored-trace.log"

                ebegin "Starting xenstored..."
                xenstored --pid-file=/var/run/xenstored.pid $XENSTORED_ARGS

                # Wait for xenstored to actually come up, timing out after 30 seconds
                while [ $time -lt $timeout ] && ! `xenstore-read -s / >/dev/null 2>&1` ; do
                        time=$(($time+1))
                        sleep 1
                done

                # Exit if we timed out
                if ! [ $time -lt $timeout ] ; then
                        eend 1
                        echo Could not start xenstored
                        exit 1
                fi
                eend 0

                ebegin "Setting domain 0 name..."
                xenstore-write "/local/domain/0/name" "Domain-0"
                eend $?
        fi

        ebegin "Starting xenconsoled..."
        test -z "$XENCONSOLED_TRACE" || XENCONSOLED_ARGS=" --log=$XENCONSOLED_TRACE"
        xenconsoled --pid-file=$XENCONSOLED_PIDFILE $XENCONSOLED_ARGS
        eend $?

        test -z "$XENBACKENDD_DEBUG" || XENBACKENDD_ARGS="-d"
        test "`uname`" != "NetBSD" || xenbackendd $XENBACKENDD_ARGS
}

stop() {
        ebegin "Stopping xenconsoled"
        if read 2>/dev/null <$XENCONSOLED_PIDFILE pid; then
                kill $pid
                while kill -9 $pid >/dev/null 2>&1; do sleep 0.1; done
                rm -f $XENCONSOLED_PIDFILE
        fi
        eend 0

        echo WARNING: Not stopping xenstored, as it cannot be restarted.
}

status() {
        xenstore-read -s / >/dev/null 2>&1
}