diff --git a/src/systemcmds/launch_kmod/CMakeLists.txt b/src/systemcmds/launch_kmod/CMakeLists.txt new file mode 100644 index 0000000000..e61fa90845 --- /dev/null +++ b/src/systemcmds/launch_kmod/CMakeLists.txt @@ -0,0 +1,40 @@ +############################################################################ +# +# Copyright (c) 2020 Technology Innovation Institute. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# 3. Neither the name PX4 nor the names of its contributors may be +# used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS +# OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED +# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. +# +############################################################################ + +px4_add_module( + MODULE systemcmds__launch_kmod + MAIN launch_kmod + COMPILE_FLAGS + SRCS + launch_kmod.cpp + ) diff --git a/src/systemcmds/launch_kmod/Kconfig b/src/systemcmds/launch_kmod/Kconfig new file mode 100644 index 0000000000..8c9185e100 --- /dev/null +++ b/src/systemcmds/launch_kmod/Kconfig @@ -0,0 +1,9 @@ +config SYSTEMCMDS_LAUNCH_KMOD + bool + default y + depends on BOARD_PROTECTED + +config USER_LAUNCH_KMOD + bool + default y + depends on BOARD_PROTECTED diff --git a/src/systemcmds/launch_kmod/launch_kmod.cpp b/src/systemcmds/launch_kmod/launch_kmod.cpp new file mode 100644 index 0000000000..87c26f9605 --- /dev/null +++ b/src/systemcmds/launch_kmod/launch_kmod.cpp @@ -0,0 +1,57 @@ +/**************************************************************************** +* +* Copyright (c) 2020 Technology Innovation Institute. All rights reserved. +* +* Redistribution and use in source and binary forms, with or without +* modification, are permitted provided that the following conditions +* are met: +* +* 1. Redistributions of source code must retain the above copyright +* notice, this list of conditions and the following disclaimer. +* 2. Redistributions in binary form must reproduce the above copyright +* notice, this list of conditions and the following disclaimer in +* the documentation and/or other materials provided with the +* distribution. +* 3. Neither the name PX4 nor the names of its contributors may be +* used to endorse or promote products derived from this software +* without specific prior written permission. +* +* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS +* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED +* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +* POSSIBILITY OF SUCH DAMAGE. +* +****************************************************************************/ + +/** +* @file launch_kmod.cpp +* +* Used to launch kernel modules +* +* @author Jukka Laitinen +*/ + +#include +#include +#include +#include + +/* This function is not intended to be called from + command line, it is only used in builtin_list.h + to implicitly launch a module in kenel side. + See builtin_list.h for details. +*/ +extern "C" int launch_kmod_main(int argc, char *argv[]) +{ + platformioclaunch_t module_args = {argc, argv, PX4_ERROR}; + boardctl(PLATFORMIOCLAUNCH, (uintptr_t)&module_args); + return module_args.ret; +}