This repository has been archived by the owner on Nov 1, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 43
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add logic to aid in the in-kernel build
In the in-kernel build, Kbuild replaces autotools for the user space part. Add some makefile snippets and a script used to aid in that setup. Not used by the github version at the moment. Change-Id: Id2d9508cdabf0da2b9efcec0a0fca99ada90922b Signed-off-by: Knut Omang <knut.omang@oracle.com> Reviewed-on: https://review.no.oracle.com:8443/c/ktf/+/16363 Reviewed-by: Alan Maguire <alan.maguire@oracle.com>
- Loading branch information
Knut Omang
committed
Aug 12, 2019
1 parent
90d73a0
commit a5ccb72
Showing
5 changed files
with
133 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -12,5 +12,4 @@ libtool | |
*.cmd | ||
*.o | ||
*.ko | ||
*.mk | ||
*.xml |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
ktf_symfile=$(shell (cd $(srctree)/$(src) && ls ktf_syms.txt 2> /dev/null || true)) | ||
ktf_syms = $(ktf_symfile:%.txt=%.h) | ||
|
||
ifneq ($(ktf_symfile),) | ||
|
||
$(obj)/self.o: $(obj)/$(ktf_syms) | ||
|
||
ktf_scripts = $(srctree)/$(src)/../scripts | ||
|
||
$(obj)/$(ktf_syms): $(srctree)/$(src)/ktf_syms.txt $(ktf_scripts)/resolve | ||
@echo " KTFSYMS $@" | ||
$(Q)$(ktf_scripts)/resolve $(ccflags-y) $< $@ | ||
|
||
clean-files += $(ktf_syms) | ||
|
||
endif |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
TEST_PROGS := scripts/runtests.sh | ||
|
||
include ../lib.mk |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,100 @@ | ||
#!/bin/bash -e | ||
|
||
verbose=1 | ||
|
||
# Convenience function to return a string that | ||
# is a reverse list of the incoming arguments: | ||
# | ||
reverse() | ||
{ | ||
args=($*) | ||
for (( i=((${#args[*]} - 1)); i >= 0; i-- )); do | ||
echo ${args[$i]} | ||
done | ||
} | ||
|
||
# Set paths to a particular module - if no path is set to a module, use modprobe: | ||
# | ||
declare -A a_mpath | ||
mpath() | ||
{ | ||
local module="$1" | ||
local mpath="$2" | ||
[[ $mpath != "" ]] || fail "Usage: mpath module path" | ||
|
||
a_mpath[$module]="$BUILD/$mpath" | ||
} | ||
|
||
# Set parameters to load a given module with for test purposes: | ||
declare -A a_params | ||
params() | ||
{ | ||
local module="$1" | ||
shift | ||
a_params[$module]="$*" | ||
} | ||
|
||
log() | ||
{ | ||
(( $verbose )) && echo $* | ||
} | ||
|
||
mod_probe() | ||
{ | ||
local fm="" | ||
local name="$1" | ||
shift | ||
|
||
mp=${a_mpath[$name]} | ||
if [[ $mp != "" ]]; then | ||
fm="$mp" | ||
fi | ||
|
||
is_loaded=$(lsmod | egrep "^$name" || true) | ||
if [[ $is_loaded != "" ]]; then | ||
echo "Module \"$name\" is already loaded!" 1>&2 | ||
return 0 | ||
fi | ||
|
||
if [[ $fm == "" ]]; then | ||
log "Modprobing $name" | ||
$sudo modprobe $name ${a_params[$name]} | ||
else | ||
fm=${a_mpath[$name]} | ||
log "Insmod'ing module \"$name\"" 1>&2 | ||
$sudo insmod $fm ${a_params[$name]} | ||
fi | ||
} | ||
|
||
# If/when more modules are to be loaded, this could go in a config file | ||
# but for the purpose of this example, just do it inline: | ||
# | ||
mpath ktf ktf/kernel/ktf.ko | ||
mpath selftest ktf/selftest/selftest.ko | ||
|
||
load_modules="ktf selftest" | ||
|
||
unload_modules=$(reverse $load_modules) | ||
|
||
sudo="" | ||
if [[ $USER != "root" ]]; then | ||
sudo="sudo" | ||
fi | ||
|
||
for m in $load_modules; do | ||
mod_probe $m | ||
done | ||
|
||
if [[ $GTEST_PATH == "" ]];then | ||
echo "Set environment variable GTEST_PATH to point to your googletest build!" | ||
exit 1 | ||
fi | ||
|
||
export LD_LIBRARY_PATH="$BUILD/ktf/lib:$GTEST_PATH/lib64:$GTEST_PATH/lib" | ||
$BUILD/ktf/user/ktftest || stat=$? | ||
|
||
for m in $unload_modules; do | ||
$sudo rmmod $m | ||
done | ||
|
||
exit $stat |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
ifneq ($(TARGETS),) | ||
# We end up here if called from selftests/Makefile | ||
# Invoke our "module target" to get everything built | ||
all: | ||
$(Q)$(MAKE) -C $(abs_objtree) M=tools/testing/selftests/ktf | ||
|
||
clean: | ||
$(Q)$(MAKE) -C $(abs_objtree) M=tools/testing/selftests/ktf clean | ||
|
||
run_tests: | ||
@echo "running tests" | ||
$(MAKE) BUILD=$(abs_objtree)/tools/testing/selftests -f scripts/runtests.mk $@ | ||
|
||
endif |