declare -a OPTS_VCONTEXT_CREATE=()
declare -a OPTS_VCONTEXT_MIGRATE=()
declare -a OPTS_VATTRIBUTE=()
-USE_VNAMESPACE=
+declare -a OPTS_VSCHED=()
+
+declare -a VSERVER_EXTRA_CMDS=()
+USE_VNAMESPACE=
INTERFACE_CMDS_IDX=0
_HAVE_INTERFACE_OPTIONS=
_HAVE_CHBIND_OPTIONS=
+_IS_FAKEINIT=
INITSTYLE=sysv
(xplain)
INITCMD_START=( /sbin/init )
INITCMD_STOP=( /sbin/init )
- CHCONTEXT_INIT_OPTS=( --disconnect --flag fakeinit )
- OPTS_VCONTEXT_MIGRATE=( "${OPTS_VCONTEXT_MIGRATE[@]}" --fakeinit --disconnect )
+ _IS_FAKEINIT=1
test -z "$runlevel_start" || INITCMD_START=( "${INITCMD_START[@]}" "$runlevel_start" )
test -z "$runlevel_stop" || INITCMD_STOP=( "${INITCMD_STOP[@]}" "$runlevel_stop" )
;;
(xminit)
INITCMD_START=( /sbin/minit-start )
INITCMD_STOP=( /sbin/minit-stop )
- CHCONTEXT_INIT_OPTS=( --disconnect --flag fakeinit )
+ _IS_FAKEINIT=1
INITCMD_START_SYNC=( "$_INITSYNC_MINIT_START" "$vdir" )
INITCMD_STOP_SYNC=( "$_INITSYNC_MINIT_STOP" "$vdir" )
- OPTS_VCONTEXT_MIGRATE=( "${OPTS_VCONTEXT_MIGRATE[@]}" --fakeinit --disconnect )
test -z "$runlevel_start" || INITCMD_START=( "${INITCMD_START[@]}" "$runlevel_start" )
test -z "$runlevel_stop" || INITCMD_STOP=( "${INITCMD_STOP[@]}" "$runlevel_stop" )
;;
+ (xgentoo)
+ INITCMD_START=( /sbin/rc default )
+ INITCMD_STOP=( /sbin/rc shutdown )
+ ;;
+
(x) ;;
(*) echo "Unknown init-style '$INITSTYLE'; aborting" >&2;
exit 1;;
CHCONTEXT_FLAG_OPTS=()
- test -e "$vdir"/flags || return 0
-
+ test ! -e "$vdir"/flags || \
while read flag; do
case x"$flag" in
(x|x\#) ;;
(xnamespace) ;;
(xfakeinit)
- CHCONTEXT_INIT_OPTS=( --disconnect --flag fakeinit )
- OPTS_VCONTEXT_MIGRATE=( "${OPTS_VCONTEXT_MIGRATE[@]}" --fakeinit --disconnect )
+ _IS_FAKEINIT=1
;;
(*)
OPTS_VATTRIBUTE=( "${OPTS_VATTRIBUTE[@]}" --flag "$flag" )
esac
done <"$vdir"/flags
- isAvoidNamespace "$cfgdir" || {
+ isAvoidNamespace "$vdir" || {
USE_VNAMESPACE=1
CHCONTEXT_FLAG_OPTS=( "${CHCONTEXT_FLAG_OPTS[@]}" --flag namespace )
}
OPTS_VATTRIBUTE=( --secure "${OPTS_VATTRIBUTE[@]}" )
}
+function _generateScheduleOptions
+{
+ local vdir=$1
+ local f="$vdir"/schedule
+ test -e "$f" || return 0
+
+ local fill_rate interval tokens tokens_min tokens_max cpu_mask
+ {
+ {
+ read fill_rate && \
+ read interval && \
+ read tokens && \
+ read tokens_min && \
+ read tokens_max && \
+ read cpu_mask || cpu_mask=
+ } <"$f"
+ } 2>/dev/null
+
+ test "$cpu_mask" || {
+ echo $"Bad content in '$f'; aborting..." >&2
+ false
+ }
+
+ OPTS_VSCHED=( --fill-rate "$fill_rate" --interval "$interval" \
+ --tokens "$tokens" --tokens_min "$tokens_min" \
+ --tokens_max "$tokens_max" --cpu_mask "$cpu_mask" )
+}
+
function _getInterfaceValue
{
local val=$1
_generateNiceCommand "$1"
_generateInitOptions "$1"
_generateChcontextOptions "$1"
+ _generateScheduleOptions "$1"
+
+ if test "$_IS_FAKEINIT"; then
+ CHCONTEXT_INIT_OPTS=( --disconnect --flag fakeinit )
+ OPTS_VCONTEXT_MIGRATE=( "${OPTS_VCONTEXT_MIGRATE[@]}" --fakeinit --disconnect )
+ fi
}
function _mountVserverInternal