mcctrl: add MCEXEC_UP_SYS_MOUNT, MCEXEC_UP_SYS_UNSHARE
This commit is contained in:
303
configure
vendored
303
configure
vendored
@ -649,6 +649,7 @@ ac_user_opts='
|
|||||||
enable_option_checking
|
enable_option_checking
|
||||||
with_kernelsrc
|
with_kernelsrc
|
||||||
with_target
|
with_target
|
||||||
|
with_system_map
|
||||||
enable_dcfa
|
enable_dcfa
|
||||||
'
|
'
|
||||||
ac_precious_vars='build_alias
|
ac_precious_vars='build_alias
|
||||||
@ -1277,6 +1278,8 @@ Optional Packages:
|
|||||||
/lib/modules/uname_r/build
|
/lib/modules/uname_r/build
|
||||||
--with-target={attached-mic | builtin-mic | builtin-x86 | smp-x86}
|
--with-target={attached-mic | builtin-mic | builtin-x86 | smp-x86}
|
||||||
target, default is attached-mic
|
target, default is attached-mic
|
||||||
|
--with-system_map=path Path to 'System.map file', default is
|
||||||
|
/boot/System.map-uname_r
|
||||||
|
|
||||||
Some influential environment variables:
|
Some influential environment variables:
|
||||||
CC C compiler command
|
CC C compiler command
|
||||||
@ -1784,6 +1787,15 @@ else
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# Check whether --with-system_map was given.
|
||||||
|
if test "${with_system_map+set}" = set; then :
|
||||||
|
withval=$with_system_map; WITH_SYSTEM_MAP=$withval
|
||||||
|
else
|
||||||
|
WITH_SYSTEM_MAP=yes
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
# Check whether --enable-dcfa was given.
|
# Check whether --enable-dcfa was given.
|
||||||
if test "${enable_dcfa+set}" = set; then :
|
if test "${enable_dcfa+set}" = set; then :
|
||||||
enableval=$enable_dcfa;
|
enableval=$enable_dcfa;
|
||||||
@ -3798,6 +3810,96 @@ esac
|
|||||||
KDIR="$WITH_KERNELSRC"
|
KDIR="$WITH_KERNELSRC"
|
||||||
TARGET="$WITH_TARGET"
|
TARGET="$WITH_TARGET"
|
||||||
|
|
||||||
|
MCCTRL_LINUX_SYMTAB=""
|
||||||
|
case "X$WITH_SYSTEM_MAP" in
|
||||||
|
Xyes | Xno | X)
|
||||||
|
MCCTRL_LINUX_SYMTAB=""
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
MCCTRL_LINUX_SYMTAB="$WITH_SYSTEM_MAP"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for System.map" >&5
|
||||||
|
$as_echo_n "checking for System.map... " >&6; }
|
||||||
|
if test -f "$MCCTRL_LINUX_SYMTAB"; then
|
||||||
|
MCCTRL_LINUX_SYMTAB="$MCCTRL_LINUX_SYMTAB"
|
||||||
|
elif test -f "/boot/System.map-`uname -r`"; then
|
||||||
|
MCCTRL_LINUX_SYMTAB="/boot/System.map-`uname -r`"
|
||||||
|
elif test -f "$KDIR/System.map"; then
|
||||||
|
MCCTRL_LINUX_SYMTAB="$KDIR/System.map"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test "$MCCTRL_LINUX_SYMTAB" == ""; then
|
||||||
|
as_fn_error $? "could not find" "$LINENO" 5
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test -z "`eval cat $MCCTRL_LINUX_SYMTAB`"; then
|
||||||
|
as_fn_error $? "could not read System.map file, no read permission?" "$LINENO" 5
|
||||||
|
fi
|
||||||
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MCCTRL_LINUX_SYMTAB" >&5
|
||||||
|
$as_echo "$MCCTRL_LINUX_SYMTAB" >&6; }
|
||||||
|
|
||||||
|
MCCTRL_LINUX_SYMTAB_CMD="cat $MCCTRL_LINUX_SYMTAB"
|
||||||
|
|
||||||
|
# MCCTRL_FIND_KSYM(SYMBOL)
|
||||||
|
# ------------------------------------------------------
|
||||||
|
# Search System.map for address of the given symbol and
|
||||||
|
# do one of three things in config.h:
|
||||||
|
# If not found, leave MCCTRL_KSYM_foo undefined
|
||||||
|
# If found to be exported, "#define MCCTRL_KSYM_foo 0"
|
||||||
|
# If found not to be exported, "#define MCCTRL_KSYM_foo 0x<value>"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking System.map for symbol sys_mount" >&5
|
||||||
|
$as_echo_n "checking System.map for symbol sys_mount... " >&6; }
|
||||||
|
mcctrl_addr=`eval $MCCTRL_LINUX_SYMTAB_CMD | grep " sys_mount\$" | cut -d\ -f1`
|
||||||
|
if test -z $mcctrl_addr; then
|
||||||
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
|
||||||
|
$as_echo "not found" >&6; }
|
||||||
|
else
|
||||||
|
mcctrl_result=$mcctrl_addr
|
||||||
|
mcctrl_addr="0x$mcctrl_addr"
|
||||||
|
|
||||||
|
if `eval $MCCTRL_LINUX_SYMTAB_CMD | grep " __ksymtab_sys_mount\$" >/dev/null`; then
|
||||||
|
mcctrl_result="exported"
|
||||||
|
mcctrl_addr="0"
|
||||||
|
fi
|
||||||
|
|
||||||
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $mcctrl_result" >&5
|
||||||
|
$as_echo "$mcctrl_result" >&6; }
|
||||||
|
|
||||||
|
cat >>confdefs.h <<_ACEOF
|
||||||
|
#define MCCTRL_KSYM_sys_mount $mcctrl_addr
|
||||||
|
_ACEOF
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking System.map for symbol sys_unshare" >&5
|
||||||
|
$as_echo_n "checking System.map for symbol sys_unshare... " >&6; }
|
||||||
|
mcctrl_addr=`eval $MCCTRL_LINUX_SYMTAB_CMD | grep " sys_unshare\$" | cut -d\ -f1`
|
||||||
|
if test -z $mcctrl_addr; then
|
||||||
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
|
||||||
|
$as_echo "not found" >&6; }
|
||||||
|
else
|
||||||
|
mcctrl_result=$mcctrl_addr
|
||||||
|
mcctrl_addr="0x$mcctrl_addr"
|
||||||
|
|
||||||
|
if `eval $MCCTRL_LINUX_SYMTAB_CMD | grep " __ksymtab_sys_unshare\$" >/dev/null`; then
|
||||||
|
mcctrl_result="exported"
|
||||||
|
mcctrl_addr="0"
|
||||||
|
fi
|
||||||
|
|
||||||
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $mcctrl_result" >&5
|
||||||
|
$as_echo "$mcctrl_result" >&6; }
|
||||||
|
|
||||||
|
cat >>confdefs.h <<_ACEOF
|
||||||
|
#define MCCTRL_KSYM_sys_unshare $mcctrl_addr
|
||||||
|
_ACEOF
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -3816,6 +3918,10 @@ TARGET="$WITH_TARGET"
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
ac_config_headers="$ac_config_headers executer/kernel/mcctrl/config.h"
|
||||||
|
|
||||||
ac_config_files="$ac_config_files Makefile executer/user/Makefile executer/kernel/mcctrl/Makefile executer/kernel/mcoverlayfs/Makefile kernel/Makefile kernel/Makefile.build arch/x86/tools/mcreboot-attached-mic.sh arch/x86/tools/mcshutdown-attached-mic.sh arch/x86/tools/mcreboot-builtin-x86.sh arch/x86/tools/mcreboot-smp-x86.sh arch/x86/tools/mcstop+release-smp-x86.sh arch/x86/tools/mcshutdown-builtin-x86.sh arch/x86/tools/mcreboot.1:arch/x86/tools/mcreboot.1in"
|
ac_config_files="$ac_config_files Makefile executer/user/Makefile executer/kernel/mcctrl/Makefile executer/kernel/mcoverlayfs/Makefile kernel/Makefile kernel/Makefile.build arch/x86/tools/mcreboot-attached-mic.sh arch/x86/tools/mcshutdown-attached-mic.sh arch/x86/tools/mcreboot-builtin-x86.sh arch/x86/tools/mcreboot-smp-x86.sh arch/x86/tools/mcstop+release-smp-x86.sh arch/x86/tools/mcshutdown-builtin-x86.sh arch/x86/tools/mcreboot.1:arch/x86/tools/mcreboot.1in"
|
||||||
|
|
||||||
|
|
||||||
@ -3915,43 +4021,7 @@ test "x$prefix" = xNONE && prefix=$ac_default_prefix
|
|||||||
# Let make expand exec_prefix.
|
# Let make expand exec_prefix.
|
||||||
test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
|
test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
|
||||||
|
|
||||||
# Transform confdefs.h into DEFS.
|
DEFS=-DHAVE_CONFIG_H
|
||||||
# Protect against shell expansion while executing Makefile rules.
|
|
||||||
# Protect against Makefile macro expansion.
|
|
||||||
#
|
|
||||||
# If the first sed substitution is executed (which looks for macros that
|
|
||||||
# take arguments), then branch to the quote section. Otherwise,
|
|
||||||
# look for a macro that doesn't take arguments.
|
|
||||||
ac_script='
|
|
||||||
:mline
|
|
||||||
/\\$/{
|
|
||||||
N
|
|
||||||
s,\\\n,,
|
|
||||||
b mline
|
|
||||||
}
|
|
||||||
t clear
|
|
||||||
:clear
|
|
||||||
s/^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\)/-D\1=\2/g
|
|
||||||
t quote
|
|
||||||
s/^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)/-D\1=\2/g
|
|
||||||
t quote
|
|
||||||
b any
|
|
||||||
:quote
|
|
||||||
s/[ `~#$^&*(){}\\|;'\''"<>?]/\\&/g
|
|
||||||
s/\[/\\&/g
|
|
||||||
s/\]/\\&/g
|
|
||||||
s/\$/$$/g
|
|
||||||
H
|
|
||||||
:any
|
|
||||||
${
|
|
||||||
g
|
|
||||||
s/^\n//
|
|
||||||
s/\n/ /g
|
|
||||||
p
|
|
||||||
}
|
|
||||||
'
|
|
||||||
DEFS=`sed -n "$ac_script" confdefs.h`
|
|
||||||
|
|
||||||
|
|
||||||
ac_libobjs=
|
ac_libobjs=
|
||||||
ac_ltlibobjs=
|
ac_ltlibobjs=
|
||||||
@ -4385,11 +4455,15 @@ case $ac_config_files in *"
|
|||||||
"*) set x $ac_config_files; shift; ac_config_files=$*;;
|
"*) set x $ac_config_files; shift; ac_config_files=$*;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
|
case $ac_config_headers in *"
|
||||||
|
"*) set x $ac_config_headers; shift; ac_config_headers=$*;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
|
||||||
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
|
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
|
||||||
# Files that config.status was made for.
|
# Files that config.status was made for.
|
||||||
config_files="$ac_config_files"
|
config_files="$ac_config_files"
|
||||||
|
config_headers="$ac_config_headers"
|
||||||
|
|
||||||
_ACEOF
|
_ACEOF
|
||||||
|
|
||||||
@ -4410,10 +4484,15 @@ Usage: $0 [OPTION]... [TAG]...
|
|||||||
--recheck update $as_me by reconfiguring in the same conditions
|
--recheck update $as_me by reconfiguring in the same conditions
|
||||||
--file=FILE[:TEMPLATE]
|
--file=FILE[:TEMPLATE]
|
||||||
instantiate the configuration file FILE
|
instantiate the configuration file FILE
|
||||||
|
--header=FILE[:TEMPLATE]
|
||||||
|
instantiate the configuration header FILE
|
||||||
|
|
||||||
Configuration files:
|
Configuration files:
|
||||||
$config_files
|
$config_files
|
||||||
|
|
||||||
|
Configuration headers:
|
||||||
|
$config_headers
|
||||||
|
|
||||||
Report bugs to the package provider."
|
Report bugs to the package provider."
|
||||||
|
|
||||||
_ACEOF
|
_ACEOF
|
||||||
@ -4474,7 +4553,18 @@ do
|
|||||||
esac
|
esac
|
||||||
as_fn_append CONFIG_FILES " '$ac_optarg'"
|
as_fn_append CONFIG_FILES " '$ac_optarg'"
|
||||||
ac_need_defaults=false;;
|
ac_need_defaults=false;;
|
||||||
--he | --h | --help | --hel | -h )
|
--header | --heade | --head | --hea )
|
||||||
|
$ac_shift
|
||||||
|
case $ac_optarg in
|
||||||
|
*\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
|
||||||
|
esac
|
||||||
|
as_fn_append CONFIG_HEADERS " '$ac_optarg'"
|
||||||
|
ac_need_defaults=false;;
|
||||||
|
--he | --h)
|
||||||
|
# Conflict between --help and --header
|
||||||
|
as_fn_error $? "ambiguous option: \`$1'
|
||||||
|
Try \`$0 --help' for more information.";;
|
||||||
|
--help | --hel | -h )
|
||||||
$as_echo "$ac_cs_usage"; exit ;;
|
$as_echo "$ac_cs_usage"; exit ;;
|
||||||
-q | -quiet | --quiet | --quie | --qui | --qu | --q \
|
-q | -quiet | --quiet | --quie | --qui | --qu | --q \
|
||||||
| -silent | --silent | --silen | --sile | --sil | --si | --s)
|
| -silent | --silent | --silen | --sile | --sil | --si | --s)
|
||||||
@ -4530,6 +4620,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
|
|||||||
for ac_config_target in $ac_config_targets
|
for ac_config_target in $ac_config_targets
|
||||||
do
|
do
|
||||||
case $ac_config_target in
|
case $ac_config_target in
|
||||||
|
"executer/kernel/mcctrl/config.h") CONFIG_HEADERS="$CONFIG_HEADERS executer/kernel/mcctrl/config.h" ;;
|
||||||
"Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
|
"Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
|
||||||
"executer/user/Makefile") CONFIG_FILES="$CONFIG_FILES executer/user/Makefile" ;;
|
"executer/user/Makefile") CONFIG_FILES="$CONFIG_FILES executer/user/Makefile" ;;
|
||||||
"executer/kernel/mcctrl/Makefile") CONFIG_FILES="$CONFIG_FILES executer/kernel/mcctrl/Makefile" ;;
|
"executer/kernel/mcctrl/Makefile") CONFIG_FILES="$CONFIG_FILES executer/kernel/mcctrl/Makefile" ;;
|
||||||
@ -4556,6 +4647,7 @@ done
|
|||||||
# bizarre bug on SunOS 4.1.3.
|
# bizarre bug on SunOS 4.1.3.
|
||||||
if $ac_need_defaults; then
|
if $ac_need_defaults; then
|
||||||
test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
|
test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
|
||||||
|
test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Have a temporary directory for convenience. Make it in the build tree
|
# Have a temporary directory for convenience. Make it in the build tree
|
||||||
@ -4743,8 +4835,116 @@ fi
|
|||||||
cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
|
cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
|
||||||
fi # test -n "$CONFIG_FILES"
|
fi # test -n "$CONFIG_FILES"
|
||||||
|
|
||||||
|
# Set up the scripts for CONFIG_HEADERS section.
|
||||||
|
# No need to generate them if there are no CONFIG_HEADERS.
|
||||||
|
# This happens for instance with `./config.status Makefile'.
|
||||||
|
if test -n "$CONFIG_HEADERS"; then
|
||||||
|
cat >"$ac_tmp/defines.awk" <<\_ACAWK ||
|
||||||
|
BEGIN {
|
||||||
|
_ACEOF
|
||||||
|
|
||||||
eval set X " :F $CONFIG_FILES "
|
# Transform confdefs.h into an awk script `defines.awk', embedded as
|
||||||
|
# here-document in config.status, that substitutes the proper values into
|
||||||
|
# config.h.in to produce config.h.
|
||||||
|
|
||||||
|
# Create a delimiter string that does not exist in confdefs.h, to ease
|
||||||
|
# handling of long lines.
|
||||||
|
ac_delim='%!_!# '
|
||||||
|
for ac_last_try in false false :; do
|
||||||
|
ac_tt=`sed -n "/$ac_delim/p" confdefs.h`
|
||||||
|
if test -z "$ac_tt"; then
|
||||||
|
break
|
||||||
|
elif $ac_last_try; then
|
||||||
|
as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5
|
||||||
|
else
|
||||||
|
ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# For the awk script, D is an array of macro values keyed by name,
|
||||||
|
# likewise P contains macro parameters if any. Preserve backslash
|
||||||
|
# newline sequences.
|
||||||
|
|
||||||
|
ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]*
|
||||||
|
sed -n '
|
||||||
|
s/.\{148\}/&'"$ac_delim"'/g
|
||||||
|
t rset
|
||||||
|
:rset
|
||||||
|
s/^[ ]*#[ ]*define[ ][ ]*/ /
|
||||||
|
t def
|
||||||
|
d
|
||||||
|
:def
|
||||||
|
s/\\$//
|
||||||
|
t bsnl
|
||||||
|
s/["\\]/\\&/g
|
||||||
|
s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\
|
||||||
|
D["\1"]=" \3"/p
|
||||||
|
s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p
|
||||||
|
d
|
||||||
|
:bsnl
|
||||||
|
s/["\\]/\\&/g
|
||||||
|
s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\
|
||||||
|
D["\1"]=" \3\\\\\\n"\\/p
|
||||||
|
t cont
|
||||||
|
s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p
|
||||||
|
t cont
|
||||||
|
d
|
||||||
|
:cont
|
||||||
|
n
|
||||||
|
s/.\{148\}/&'"$ac_delim"'/g
|
||||||
|
t clear
|
||||||
|
:clear
|
||||||
|
s/\\$//
|
||||||
|
t bsnlc
|
||||||
|
s/["\\]/\\&/g; s/^/"/; s/$/"/p
|
||||||
|
d
|
||||||
|
:bsnlc
|
||||||
|
s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p
|
||||||
|
b cont
|
||||||
|
' <confdefs.h | sed '
|
||||||
|
s/'"$ac_delim"'/"\\\
|
||||||
|
"/g' >>$CONFIG_STATUS || ac_write_fail=1
|
||||||
|
|
||||||
|
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
|
||||||
|
for (key in D) D_is_set[key] = 1
|
||||||
|
FS = ""
|
||||||
|
}
|
||||||
|
/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ {
|
||||||
|
line = \$ 0
|
||||||
|
split(line, arg, " ")
|
||||||
|
if (arg[1] == "#") {
|
||||||
|
defundef = arg[2]
|
||||||
|
mac1 = arg[3]
|
||||||
|
} else {
|
||||||
|
defundef = substr(arg[1], 2)
|
||||||
|
mac1 = arg[2]
|
||||||
|
}
|
||||||
|
split(mac1, mac2, "(") #)
|
||||||
|
macro = mac2[1]
|
||||||
|
prefix = substr(line, 1, index(line, defundef) - 1)
|
||||||
|
if (D_is_set[macro]) {
|
||||||
|
# Preserve the white space surrounding the "#".
|
||||||
|
print prefix "define", macro P[macro] D[macro]
|
||||||
|
next
|
||||||
|
} else {
|
||||||
|
# Replace #undef with comments. This is necessary, for example,
|
||||||
|
# in the case of _POSIX_SOURCE, which is predefined and required
|
||||||
|
# on some systems where configure will not decide to define it.
|
||||||
|
if (defundef == "undef") {
|
||||||
|
print "/*", prefix defundef, macro, "*/"
|
||||||
|
next
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
{ print }
|
||||||
|
_ACAWK
|
||||||
|
_ACEOF
|
||||||
|
cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
|
||||||
|
as_fn_error $? "could not setup config headers machinery" "$LINENO" 5
|
||||||
|
fi # test -n "$CONFIG_HEADERS"
|
||||||
|
|
||||||
|
|
||||||
|
eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS "
|
||||||
shift
|
shift
|
||||||
for ac_tag
|
for ac_tag
|
||||||
do
|
do
|
||||||
@ -4952,7 +5152,30 @@ which seems to be undefined. Please make sure it is defined" >&2;}
|
|||||||
esac \
|
esac \
|
||||||
|| as_fn_error $? "could not create $ac_file" "$LINENO" 5
|
|| as_fn_error $? "could not create $ac_file" "$LINENO" 5
|
||||||
;;
|
;;
|
||||||
|
:H)
|
||||||
|
#
|
||||||
|
# CONFIG_HEADER
|
||||||
|
#
|
||||||
|
if test x"$ac_file" != x-; then
|
||||||
|
{
|
||||||
|
$as_echo "/* $configure_input */" \
|
||||||
|
&& eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs"
|
||||||
|
} >"$ac_tmp/config.h" \
|
||||||
|
|| as_fn_error $? "could not create $ac_file" "$LINENO" 5
|
||||||
|
if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then
|
||||||
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5
|
||||||
|
$as_echo "$as_me: $ac_file is unchanged" >&6;}
|
||||||
|
else
|
||||||
|
rm -f "$ac_file"
|
||||||
|
mv "$ac_tmp/config.h" "$ac_file" \
|
||||||
|
|| as_fn_error $? "could not create $ac_file" "$LINENO" 5
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
$as_echo "/* $configure_input */" \
|
||||||
|
&& eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \
|
||||||
|
|| as_fn_error $? "could not create -" "$LINENO" 5
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
|
||||||
|
|
||||||
esac
|
esac
|
||||||
|
|||||||
65
configure.ac
65
configure.ac
@ -27,6 +27,11 @@ AC_ARG_WITH([target],
|
|||||||
[--with-target={attached-mic | builtin-mic | builtin-x86 | smp-x86}],[target, default is attached-mic]),
|
[--with-target={attached-mic | builtin-mic | builtin-x86 | smp-x86}],[target, default is attached-mic]),
|
||||||
[WITH_TARGET=$withval],[WITH_TARGET=yes])
|
[WITH_TARGET=$withval],[WITH_TARGET=yes])
|
||||||
|
|
||||||
|
AC_ARG_WITH([system_map],
|
||||||
|
AS_HELP_STRING(
|
||||||
|
[--with-system_map=path],[Path to 'System.map file', default is /boot/System.map-uname_r]),
|
||||||
|
[WITH_SYSTEM_MAP=$withval],[WITH_SYSTEM_MAP=yes])
|
||||||
|
|
||||||
AC_ARG_ENABLE([dcfa],
|
AC_ARG_ENABLE([dcfa],
|
||||||
[AS_HELP_STRING(
|
[AS_HELP_STRING(
|
||||||
[--enable-dcfa],[Enable DCFA modules])],[],[enable_dcfa=no])
|
[--enable-dcfa],[Enable DCFA modules])],[],[enable_dcfa=no])
|
||||||
@ -139,6 +144,65 @@ esac
|
|||||||
KDIR="$WITH_KERNELSRC"
|
KDIR="$WITH_KERNELSRC"
|
||||||
TARGET="$WITH_TARGET"
|
TARGET="$WITH_TARGET"
|
||||||
|
|
||||||
|
MCCTRL_LINUX_SYMTAB=""
|
||||||
|
case "X$WITH_SYSTEM_MAP" in
|
||||||
|
Xyes | Xno | X)
|
||||||
|
MCCTRL_LINUX_SYMTAB=""
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
MCCTRL_LINUX_SYMTAB="$WITH_SYSTEM_MAP"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
AC_MSG_CHECKING([[for System.map]])
|
||||||
|
if test -f "$MCCTRL_LINUX_SYMTAB"; then
|
||||||
|
MCCTRL_LINUX_SYMTAB="$MCCTRL_LINUX_SYMTAB"
|
||||||
|
elif test -f "/boot/System.map-`uname -r`"; then
|
||||||
|
MCCTRL_LINUX_SYMTAB="/boot/System.map-`uname -r`"
|
||||||
|
elif test -f "$KDIR/System.map"; then
|
||||||
|
MCCTRL_LINUX_SYMTAB="$KDIR/System.map"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test "$MCCTRL_LINUX_SYMTAB" == ""; then
|
||||||
|
AC_MSG_ERROR([could not find])
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test -z "`eval cat $MCCTRL_LINUX_SYMTAB`"; then
|
||||||
|
AC_MSG_ERROR([could not read System.map file, no read permission?])
|
||||||
|
fi
|
||||||
|
AC_MSG_RESULT([$MCCTRL_LINUX_SYMTAB])
|
||||||
|
|
||||||
|
MCCTRL_LINUX_SYMTAB_CMD="cat $MCCTRL_LINUX_SYMTAB"
|
||||||
|
|
||||||
|
# MCCTRL_FIND_KSYM(SYMBOL)
|
||||||
|
# ------------------------------------------------------
|
||||||
|
# Search System.map for address of the given symbol and
|
||||||
|
# do one of three things in config.h:
|
||||||
|
# If not found, leave MCCTRL_KSYM_foo undefined
|
||||||
|
# If found to be exported, "#define MCCTRL_KSYM_foo 0"
|
||||||
|
# If found not to be exported, "#define MCCTRL_KSYM_foo 0x<value>"
|
||||||
|
AC_DEFUN([MCCTRL_FIND_KSYM],[
|
||||||
|
AC_MSG_CHECKING([[System.map for symbol $1]])
|
||||||
|
mcctrl_addr=`eval $MCCTRL_LINUX_SYMTAB_CMD | grep " $1\$" | cut -d\ -f1`
|
||||||
|
if test -z $mcctrl_addr; then
|
||||||
|
AC_MSG_RESULT([not found])
|
||||||
|
else
|
||||||
|
mcctrl_result=$mcctrl_addr
|
||||||
|
mcctrl_addr="0x$mcctrl_addr"
|
||||||
|
m4_ifval([$2],[],[
|
||||||
|
if `eval $MCCTRL_LINUX_SYMTAB_CMD | grep " __ksymtab_$1\$" >/dev/null`; then
|
||||||
|
mcctrl_result="exported"
|
||||||
|
mcctrl_addr="0"
|
||||||
|
fi
|
||||||
|
])
|
||||||
|
AC_MSG_RESULT([$mcctrl_result])
|
||||||
|
AC_DEFINE_UNQUOTED(MCCTRL_KSYM_[]$1,$mcctrl_addr,[Define to address of kernel symbol $1, or 0 if exported])
|
||||||
|
fi
|
||||||
|
])
|
||||||
|
|
||||||
|
MCCTRL_FIND_KSYM([sys_mount])
|
||||||
|
MCCTRL_FIND_KSYM([sys_unshare])
|
||||||
|
|
||||||
AC_SUBST(CC)
|
AC_SUBST(CC)
|
||||||
AC_SUBST(XCC)
|
AC_SUBST(XCC)
|
||||||
AC_SUBST(ARCH)
|
AC_SUBST(ARCH)
|
||||||
@ -157,6 +221,7 @@ AC_SUBST(IHK_RELEASE_DATE)
|
|||||||
AC_SUBST(MCKERNEL_RELEASE_DATE)
|
AC_SUBST(MCKERNEL_RELEASE_DATE)
|
||||||
AC_SUBST(DCFA_RESEASE_DATE)
|
AC_SUBST(DCFA_RESEASE_DATE)
|
||||||
|
|
||||||
|
AC_CONFIG_HEADERS([executer/kernel/mcctrl/config.h])
|
||||||
AC_CONFIG_FILES([
|
AC_CONFIG_FILES([
|
||||||
Makefile
|
Makefile
|
||||||
executer/user/Makefile
|
executer/user/Makefile
|
||||||
|
|||||||
@ -48,6 +48,9 @@
|
|||||||
#define MCEXEC_UP_OPEN_EXEC 0x30a02912
|
#define MCEXEC_UP_OPEN_EXEC 0x30a02912
|
||||||
#define MCEXEC_UP_CLOSE_EXEC 0x30a02913
|
#define MCEXEC_UP_CLOSE_EXEC 0x30a02913
|
||||||
|
|
||||||
|
#define MCEXEC_UP_SYS_MOUNT 0x30a02914
|
||||||
|
#define MCEXEC_UP_SYS_UNSHARE 0x30a02915
|
||||||
|
|
||||||
#define MCEXEC_UP_DEBUG_LOG 0x40000000
|
#define MCEXEC_UP_DEBUG_LOG 0x40000000
|
||||||
|
|
||||||
#define MCEXEC_UP_TRANSFER_TO_REMOTE 0
|
#define MCEXEC_UP_TRANSFER_TO_REMOTE 0
|
||||||
@ -167,4 +170,16 @@ struct newprocess_desc {
|
|||||||
int pid;
|
int pid;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct sys_mount_desc {
|
||||||
|
char *dev_name;
|
||||||
|
char *dir_name;
|
||||||
|
char *type;
|
||||||
|
unsigned long flags;
|
||||||
|
void *data;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct sys_unshare_desc {
|
||||||
|
unsigned long unshare_flags;
|
||||||
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
25
executer/kernel/mcctrl/config.h.in
Normal file
25
executer/kernel/mcctrl/config.h.in
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
/* executer/kernel/mcctrl/config.h.in. Generated from configure.ac by autoheader. */
|
||||||
|
|
||||||
|
/* Define to address of kernel symbol sys_mount, or 0 if exported */
|
||||||
|
#undef MCCTRL_KSYM_sys_mount
|
||||||
|
|
||||||
|
/* Define to address of kernel symbol sys_unshare, or 0 if exported */
|
||||||
|
#undef MCCTRL_KSYM_sys_unshare
|
||||||
|
|
||||||
|
/* Define to the address where bug reports for this package should be sent. */
|
||||||
|
#undef PACKAGE_BUGREPORT
|
||||||
|
|
||||||
|
/* Define to the full name of this package. */
|
||||||
|
#undef PACKAGE_NAME
|
||||||
|
|
||||||
|
/* Define to the full name and version of this package. */
|
||||||
|
#undef PACKAGE_STRING
|
||||||
|
|
||||||
|
/* Define to the one symbol short name of this package. */
|
||||||
|
#undef PACKAGE_TARNAME
|
||||||
|
|
||||||
|
/* Define to the home page for this package. */
|
||||||
|
#undef PACKAGE_URL
|
||||||
|
|
||||||
|
/* Define to the version of this package. */
|
||||||
|
#undef PACKAGE_VERSION
|
||||||
@ -36,6 +36,7 @@
|
|||||||
#include <asm/delay.h>
|
#include <asm/delay.h>
|
||||||
#include <asm/msr.h>
|
#include <asm/msr.h>
|
||||||
#include <asm/io.h>
|
#include <asm/io.h>
|
||||||
|
#include "config.h"
|
||||||
#include "mcctrl.h"
|
#include "mcctrl.h"
|
||||||
|
|
||||||
//#define DEBUG
|
//#define DEBUG
|
||||||
@ -46,6 +47,28 @@
|
|||||||
#define dprintk(...)
|
#define dprintk(...)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef MCCTRL_KSYM_sys_unshare
|
||||||
|
#if MCCTRL_KSYM_sys_unshare
|
||||||
|
typedef int (*int_star_fn_ulong_t)(unsigned long);
|
||||||
|
int (*mcctrl_sys_unshare)(unsigned long unshare_flags) =
|
||||||
|
(int_star_fn_ulong_t)
|
||||||
|
MCCTRL_KSYM_sys_unshare;
|
||||||
|
#else // exported
|
||||||
|
int (*mcctrl_sys_unshare)(unsigned long unshare_flags) = NULL;
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef MCCTRL_KSYM_sys_mount
|
||||||
|
#if MCCTRL_KSYM_sys_mount
|
||||||
|
typedef int (*int_star_fn_char_char_char_ulong_void_t)(char *, char *, char *, unsigned long, void *);
|
||||||
|
int (*mcctrl_sys_mount)(char *dev_name,char *dir_name, char *type, unsigned long flags, void *data) =
|
||||||
|
(int_star_fn_char_char_char_ulong_void_t)
|
||||||
|
MCCTRL_KSYM_sys_mount;
|
||||||
|
#else // exported
|
||||||
|
int (*mcctrl_sys_mount)(char *dev_name,char *dir_name, char *type, unsigned long flags, void *data) = NULL;
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
//static DECLARE_WAIT_QUEUE_HEAD(wq_prepare);
|
//static DECLARE_WAIT_QUEUE_HEAD(wq_prepare);
|
||||||
//extern struct mcctrl_channel *channels;
|
//extern struct mcctrl_channel *channels;
|
||||||
int mcctrl_ikc_set_recv_cpu(ihk_os_t os, int cpu);
|
int mcctrl_ikc_set_recv_cpu(ihk_os_t os, int cpu);
|
||||||
@ -1011,6 +1034,67 @@ long mcexec_strncpy_from_user(ihk_os_t os, struct strncpy_from_user_desc * __use
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
long mcexec_sys_mount(struct sys_mount_desc *__user arg)
|
||||||
|
{
|
||||||
|
struct sys_mount_desc desc;
|
||||||
|
struct cred *promoted;
|
||||||
|
const struct cred *original;
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
if (copy_from_user(&desc, arg, sizeof(desc))) {
|
||||||
|
return -EFAULT;
|
||||||
|
}
|
||||||
|
|
||||||
|
promoted = prepare_creds();
|
||||||
|
if (!promoted) {
|
||||||
|
return -ENOMEM;
|
||||||
|
}
|
||||||
|
cap_raise(promoted->cap_effective, CAP_SYS_ADMIN);
|
||||||
|
original = override_creds(promoted);
|
||||||
|
|
||||||
|
#if MCCTRL_KSYM_sys_mount
|
||||||
|
ret = mcctrl_sys_mount(desc.dev_name, desc.dir_name, desc.type,
|
||||||
|
desc.flags, desc.data);
|
||||||
|
#else
|
||||||
|
ret = -EFAULT;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
revert_creds(original);
|
||||||
|
put_cred(promoted);
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
long mcexec_sys_unshare(struct sys_unshare_desc *__user arg)
|
||||||
|
{
|
||||||
|
struct sys_unshare_desc desc;
|
||||||
|
struct cred *promoted;
|
||||||
|
const struct cred *original;
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
if (copy_from_user(&desc, arg, sizeof(desc))) {
|
||||||
|
return -EFAULT;
|
||||||
|
}
|
||||||
|
|
||||||
|
promoted = prepare_creds();
|
||||||
|
if (!promoted) {
|
||||||
|
return -ENOMEM;
|
||||||
|
}
|
||||||
|
cap_raise(promoted->cap_effective, CAP_SYS_ADMIN);
|
||||||
|
original = override_creds(promoted);
|
||||||
|
|
||||||
|
#if MCCTRL_KSYM_sys_unshare
|
||||||
|
ret = mcctrl_sys_unshare(desc.unshare_flags);
|
||||||
|
#else
|
||||||
|
ret = -EFAULT;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
revert_creds(original);
|
||||||
|
put_cred(promoted);
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
long __mcctrl_control(ihk_os_t os, unsigned int req, unsigned long arg,
|
long __mcctrl_control(ihk_os_t os, unsigned int req, unsigned long arg,
|
||||||
struct file *file)
|
struct file *file)
|
||||||
{
|
{
|
||||||
@ -1065,6 +1149,12 @@ long __mcctrl_control(ihk_os_t os, unsigned int req, unsigned long arg,
|
|||||||
case MCEXEC_UP_GET_CREDV:
|
case MCEXEC_UP_GET_CREDV:
|
||||||
return mcexec_getcredv((int *)arg);
|
return mcexec_getcredv((int *)arg);
|
||||||
|
|
||||||
|
case MCEXEC_UP_SYS_MOUNT:
|
||||||
|
return mcexec_sys_mount((struct sys_mount_desc *)arg);
|
||||||
|
|
||||||
|
case MCEXEC_UP_SYS_UNSHARE:
|
||||||
|
return mcexec_sys_unshare((struct sys_unshare_desc *)arg);
|
||||||
|
|
||||||
case MCEXEC_UP_DEBUG_LOG:
|
case MCEXEC_UP_DEBUG_LOG:
|
||||||
return mcexec_debug_log(os, arg);
|
return mcexec_debug_log(os, arg);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -68,6 +68,8 @@ static struct ihk_os_user_call_handler mcctrl_uchs[] = {
|
|||||||
{ .request = MCEXEC_UP_CLOSE_EXEC, .func = mcctrl_ioctl },
|
{ .request = MCEXEC_UP_CLOSE_EXEC, .func = mcctrl_ioctl },
|
||||||
{ .request = MCEXEC_UP_GET_CRED, .func = mcctrl_ioctl },
|
{ .request = MCEXEC_UP_GET_CRED, .func = mcctrl_ioctl },
|
||||||
{ .request = MCEXEC_UP_GET_CREDV, .func = mcctrl_ioctl },
|
{ .request = MCEXEC_UP_GET_CREDV, .func = mcctrl_ioctl },
|
||||||
|
{ .request = MCEXEC_UP_SYS_MOUNT, .func = mcctrl_ioctl },
|
||||||
|
{ .request = MCEXEC_UP_SYS_UNSHARE, .func = mcctrl_ioctl },
|
||||||
{ .request = MCEXEC_UP_DEBUG_LOG, .func = mcctrl_ioctl },
|
{ .request = MCEXEC_UP_DEBUG_LOG, .func = mcctrl_ioctl },
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user