From 454ae2f46eaecc354412305244f4e6ce885db523 Mon Sep 17 00:00:00 2001 From: Markus Lehr Date: Fri, 21 Jun 2024 08:51:47 +0200 Subject: [PATCH] added vrpmdv-rtservice, vrpmdv-mon-datafile, vrpmdv-monitoring-controler, vrpmdv-mon-tty --- .../vrpmdv-mon-datafile/.vscode/settings.json | 8 + .../.~lock.Create-Kernel-Driver.odt# | 1 + .../Create-Kernel-Driver.odt | Bin 0 -> 314929 bytes .../vrpmdv-mon-datafile/LockingWaitQueues.pdf | Bin 0 -> 235748 bytes .../files/75-mon-datafile.rules | 1 + .../vrpmdv-mon-datafile/files/Makefile | 26 + .../vrpmdv-mon-datafile/files/lock.csave | 116 + .../files/vrpmdv-mon-datafile.c | 720 + .../kernel-module-vrpmdv-monitoring-driver.bb | 16 + .../save/netlink-save.c.save | 541 + .../vrpmdv-mon-datafile/save/rpmsg_sdb.csva | 536 + .../save/stm32_rpmsg_sdb (Kopie).c.old | 541 + .../vrpmdv-mon-datafile/save/ttyrpmsg.csave | 287 + .../save/vrpmdv-mon-datafile (Kopie).c.save | 553 + .../save/vrpmdv-mon-datafile copy.c | 552 + .../vrpmdv-mon-datafile-before-DMA-Change.c | 706 + .../save/vrpmdv-mon-datafile.c.old | 28 + .../save/vrpmdv-monitoring-controler.cold | 804 + .../save/vrpmdv-monitoring-driver copy.bb.old | 24 + .../vrpmdv-monitoring-driver copy1.bb.old | 26 + .../save/vrpmdv-monitoring-driverv2.bb.old | 26 + .../vrpmdv-mon-datafile.bb | 25 + .../vrpmdv-mon-tty/.vscode/settings.json | 8 + .../vrpmdv-mon-tty/Create-Kernel-Driver.odt | Bin 0 -> 314929 bytes .../vrpmdv-mon-tty/LockingWaitQueues.pdf | Bin 0 -> 235748 bytes .../vrpmdv-mon-tty/files/75-mon-tty.rules | 1 + .../vrpmdv-mon-tty/files/Makefile | 26 + .../vrpmdv-mon-tty/files/lock.csave | 116 + .../vrpmdv-mon-tty/files/vrpmdv-mon-log.c.old | 795 + .../vrpmdv-mon-tty/files/vrpmdv-mon-tty.c | 308 + .../vrpmdv-mon-tty/files/vrpmdv_mon_tty.c.old | 287 + .../kernel-module-vrpmdv-monitoring-driver.bb | 16 + .../vrpmdv-mon-tty/save/netlink-save.c.save | 541 + .../vrpmdv-mon-tty/save/rpmsg_sdb.csva | 536 + .../vrpmdv-mon-tty/save/ttyrpmsg.csave | 287 + .../save/vrpmdv-monitoring-controler.cold | 804 + .../save/vrpmdv-monitoring-driver copy.bb.old | 24 + .../vrpmdv-monitoring-driver copy1.bb.old | 26 + .../save/vrpmdv-monitoring-driverv2.bb.old | 26 + .../vrpmdv-mon-tty/vrpmdv-mon-tty.bb | 24 + .../vrpmdv-monitoring-controler/.gitignore | 1 + .../.vscode/settings.json | 8 + .../Create-Kernel-Driver.odt | Bin 0 -> 314929 bytes .../LockingWaitQueues.pdf | Bin 0 -> 235748 bytes .../files/Makefile | 26 + .../files/lock.csave | 116 + .../files/vrpmdv-monitoring-cmd.c | 541 + .../files/vrpmdv-monitoring-cmd.h | 98 + .../files/vrpmdv-monitoring-controler.c | 865 + .../kernel-module-vrpmdv-monitoring-driver.bb | 16 + .../save/netlink-save.c.save | 541 + .../save/rpmsg_sdb.csva | 536 + .../save/ttyrpmsg.csave | 287 + .../save/vrpmdv-monitoring-controler.cold | 804 + .../save/vrpmdv-monitoring-driver copy.bb.old | 24 + .../vrpmdv-monitoring-driver copy1.bb.old | 26 + .../save/vrpmdv-monitoring-driverv2.bb.old | 26 + .../vrpmdv-monitoring-controler.bb | 17 + .../vrpmdv-rtservice/files/CMakeLists.txt | 59 + .../vrpmdv-rtservice/files/_build/.gitignore | 4 + .../files/_build/CMakeFiles/.gitignore | 7 + .../files/_build/CMakeFiles/3.25.2/.gitignore | 5 + .../CMakeFiles/3.25.2/CompilerIdC/.gitignore | 2 + .../3.25.2/CompilerIdCXX/.gitignore | 2 + .../CMakeFiles/RTService.dir/.gitignore | 10 + .../CMakeFiles/RTService.dir/src/.gitignore | 2 + .../src/monitoringTask/.gitignore | 2 + .../RTService.dir/src/utilities/.gitignore | 2 + .../files/include/RTSCoproHelper.h | 37 + .../files/include/RTSMonFrame.h | 72 + .../files/include/RTSMonitoringTask.h | 42 + .../vrpmdv-rtservice/files/include/json.hpp | 24766 ++++++++++++++++ .../files/include/json_fwd.hpp | 176 + .../vrpmdv-rtservice/files/src/RTService.cpp | 23 + .../src/monitoringTask/RTSMonitoringTask.cpp | 104 + .../files/src/utilities/RTSCoproHelper.cpp | 347 + .../files/zephyr_openamp_rsc_table.elf | Bin 0 -> 864248 bytes .../vrpmdv-rtservice/vrpmdv-rtservice.bb | 49 + 78 files changed, 39005 insertions(+) create mode 100644 recipes-vrpmdv/recipes-base/vrpmdv-mon-datafile/.vscode/settings.json create mode 100644 recipes-vrpmdv/recipes-base/vrpmdv-mon-datafile/.~lock.Create-Kernel-Driver.odt# create mode 100644 recipes-vrpmdv/recipes-base/vrpmdv-mon-datafile/Create-Kernel-Driver.odt create mode 100644 recipes-vrpmdv/recipes-base/vrpmdv-mon-datafile/LockingWaitQueues.pdf create mode 100644 recipes-vrpmdv/recipes-base/vrpmdv-mon-datafile/files/75-mon-datafile.rules create mode 100644 recipes-vrpmdv/recipes-base/vrpmdv-mon-datafile/files/Makefile create mode 100644 recipes-vrpmdv/recipes-base/vrpmdv-mon-datafile/files/lock.csave create mode 100644 recipes-vrpmdv/recipes-base/vrpmdv-mon-datafile/files/vrpmdv-mon-datafile.c create mode 100644 recipes-vrpmdv/recipes-base/vrpmdv-mon-datafile/save/kernel-module-vrpmdv-monitoring-driver.bb create mode 100644 recipes-vrpmdv/recipes-base/vrpmdv-mon-datafile/save/netlink-save.c.save create mode 100644 recipes-vrpmdv/recipes-base/vrpmdv-mon-datafile/save/rpmsg_sdb.csva create mode 100644 recipes-vrpmdv/recipes-base/vrpmdv-mon-datafile/save/stm32_rpmsg_sdb (Kopie).c.old create mode 100644 recipes-vrpmdv/recipes-base/vrpmdv-mon-datafile/save/ttyrpmsg.csave create mode 100644 recipes-vrpmdv/recipes-base/vrpmdv-mon-datafile/save/vrpmdv-mon-datafile (Kopie).c.save create mode 100644 recipes-vrpmdv/recipes-base/vrpmdv-mon-datafile/save/vrpmdv-mon-datafile copy.c create mode 100644 recipes-vrpmdv/recipes-base/vrpmdv-mon-datafile/save/vrpmdv-mon-datafile-before-DMA-Change.c create mode 100644 recipes-vrpmdv/recipes-base/vrpmdv-mon-datafile/save/vrpmdv-mon-datafile.c.old create mode 100644 recipes-vrpmdv/recipes-base/vrpmdv-mon-datafile/save/vrpmdv-monitoring-controler.cold create mode 100644 recipes-vrpmdv/recipes-base/vrpmdv-mon-datafile/save/vrpmdv-monitoring-driver copy.bb.old create mode 100644 recipes-vrpmdv/recipes-base/vrpmdv-mon-datafile/save/vrpmdv-monitoring-driver copy1.bb.old create mode 100644 recipes-vrpmdv/recipes-base/vrpmdv-mon-datafile/save/vrpmdv-monitoring-driverv2.bb.old create mode 100644 recipes-vrpmdv/recipes-base/vrpmdv-mon-datafile/vrpmdv-mon-datafile.bb create mode 100644 recipes-vrpmdv/recipes-base/vrpmdv-mon-tty/.vscode/settings.json create mode 100644 recipes-vrpmdv/recipes-base/vrpmdv-mon-tty/Create-Kernel-Driver.odt create mode 100644 recipes-vrpmdv/recipes-base/vrpmdv-mon-tty/LockingWaitQueues.pdf create mode 100644 recipes-vrpmdv/recipes-base/vrpmdv-mon-tty/files/75-mon-tty.rules create mode 100644 recipes-vrpmdv/recipes-base/vrpmdv-mon-tty/files/Makefile create mode 100644 recipes-vrpmdv/recipes-base/vrpmdv-mon-tty/files/lock.csave create mode 100644 recipes-vrpmdv/recipes-base/vrpmdv-mon-tty/files/vrpmdv-mon-log.c.old create mode 100644 recipes-vrpmdv/recipes-base/vrpmdv-mon-tty/files/vrpmdv-mon-tty.c create mode 100644 recipes-vrpmdv/recipes-base/vrpmdv-mon-tty/files/vrpmdv_mon_tty.c.old create mode 100644 recipes-vrpmdv/recipes-base/vrpmdv-mon-tty/save/kernel-module-vrpmdv-monitoring-driver.bb create mode 100644 recipes-vrpmdv/recipes-base/vrpmdv-mon-tty/save/netlink-save.c.save create mode 100644 recipes-vrpmdv/recipes-base/vrpmdv-mon-tty/save/rpmsg_sdb.csva create mode 100644 recipes-vrpmdv/recipes-base/vrpmdv-mon-tty/save/ttyrpmsg.csave create mode 100644 recipes-vrpmdv/recipes-base/vrpmdv-mon-tty/save/vrpmdv-monitoring-controler.cold create mode 100644 recipes-vrpmdv/recipes-base/vrpmdv-mon-tty/save/vrpmdv-monitoring-driver copy.bb.old create mode 100644 recipes-vrpmdv/recipes-base/vrpmdv-mon-tty/save/vrpmdv-monitoring-driver copy1.bb.old create mode 100644 recipes-vrpmdv/recipes-base/vrpmdv-mon-tty/save/vrpmdv-monitoring-driverv2.bb.old create mode 100644 recipes-vrpmdv/recipes-base/vrpmdv-mon-tty/vrpmdv-mon-tty.bb create mode 100644 recipes-vrpmdv/recipes-base/vrpmdv-monitoring-controler/.gitignore create mode 100644 recipes-vrpmdv/recipes-base/vrpmdv-monitoring-controler/.vscode/settings.json create mode 100644 recipes-vrpmdv/recipes-base/vrpmdv-monitoring-controler/Create-Kernel-Driver.odt create mode 100644 recipes-vrpmdv/recipes-base/vrpmdv-monitoring-controler/LockingWaitQueues.pdf create mode 100644 recipes-vrpmdv/recipes-base/vrpmdv-monitoring-controler/files/Makefile create mode 100644 recipes-vrpmdv/recipes-base/vrpmdv-monitoring-controler/files/lock.csave create mode 100644 recipes-vrpmdv/recipes-base/vrpmdv-monitoring-controler/files/vrpmdv-monitoring-cmd.c create mode 100644 recipes-vrpmdv/recipes-base/vrpmdv-monitoring-controler/files/vrpmdv-monitoring-cmd.h create mode 100644 recipes-vrpmdv/recipes-base/vrpmdv-monitoring-controler/files/vrpmdv-monitoring-controler.c create mode 100644 recipes-vrpmdv/recipes-base/vrpmdv-monitoring-controler/save/kernel-module-vrpmdv-monitoring-driver.bb create mode 100644 recipes-vrpmdv/recipes-base/vrpmdv-monitoring-controler/save/netlink-save.c.save create mode 100644 recipes-vrpmdv/recipes-base/vrpmdv-monitoring-controler/save/rpmsg_sdb.csva create mode 100644 recipes-vrpmdv/recipes-base/vrpmdv-monitoring-controler/save/ttyrpmsg.csave create mode 100644 recipes-vrpmdv/recipes-base/vrpmdv-monitoring-controler/save/vrpmdv-monitoring-controler.cold create mode 100644 recipes-vrpmdv/recipes-base/vrpmdv-monitoring-controler/save/vrpmdv-monitoring-driver copy.bb.old create mode 100644 recipes-vrpmdv/recipes-base/vrpmdv-monitoring-controler/save/vrpmdv-monitoring-driver copy1.bb.old create mode 100644 recipes-vrpmdv/recipes-base/vrpmdv-monitoring-controler/save/vrpmdv-monitoring-driverv2.bb.old create mode 100644 recipes-vrpmdv/recipes-base/vrpmdv-monitoring-controler/vrpmdv-monitoring-controler.bb create mode 100644 recipes-vrpmdv/recipes-base/vrpmdv-rtservice/files/CMakeLists.txt create mode 100644 recipes-vrpmdv/recipes-base/vrpmdv-rtservice/files/_build/.gitignore create mode 100644 recipes-vrpmdv/recipes-base/vrpmdv-rtservice/files/_build/CMakeFiles/.gitignore create mode 100644 recipes-vrpmdv/recipes-base/vrpmdv-rtservice/files/_build/CMakeFiles/3.25.2/.gitignore create mode 100644 recipes-vrpmdv/recipes-base/vrpmdv-rtservice/files/_build/CMakeFiles/3.25.2/CompilerIdC/.gitignore create mode 100644 recipes-vrpmdv/recipes-base/vrpmdv-rtservice/files/_build/CMakeFiles/3.25.2/CompilerIdCXX/.gitignore create mode 100644 recipes-vrpmdv/recipes-base/vrpmdv-rtservice/files/_build/CMakeFiles/RTService.dir/.gitignore create mode 100644 recipes-vrpmdv/recipes-base/vrpmdv-rtservice/files/_build/CMakeFiles/RTService.dir/src/.gitignore create mode 100644 recipes-vrpmdv/recipes-base/vrpmdv-rtservice/files/_build/CMakeFiles/RTService.dir/src/monitoringTask/.gitignore create mode 100644 recipes-vrpmdv/recipes-base/vrpmdv-rtservice/files/_build/CMakeFiles/RTService.dir/src/utilities/.gitignore create mode 100644 recipes-vrpmdv/recipes-base/vrpmdv-rtservice/files/include/RTSCoproHelper.h create mode 100644 recipes-vrpmdv/recipes-base/vrpmdv-rtservice/files/include/RTSMonFrame.h create mode 100644 recipes-vrpmdv/recipes-base/vrpmdv-rtservice/files/include/RTSMonitoringTask.h create mode 100644 recipes-vrpmdv/recipes-base/vrpmdv-rtservice/files/include/json.hpp create mode 100644 recipes-vrpmdv/recipes-base/vrpmdv-rtservice/files/include/json_fwd.hpp create mode 100644 recipes-vrpmdv/recipes-base/vrpmdv-rtservice/files/src/RTService.cpp create mode 100644 recipes-vrpmdv/recipes-base/vrpmdv-rtservice/files/src/monitoringTask/RTSMonitoringTask.cpp create mode 100644 recipes-vrpmdv/recipes-base/vrpmdv-rtservice/files/src/utilities/RTSCoproHelper.cpp create mode 100755 recipes-vrpmdv/recipes-base/vrpmdv-rtservice/files/zephyr_openamp_rsc_table.elf create mode 100644 recipes-vrpmdv/recipes-base/vrpmdv-rtservice/vrpmdv-rtservice.bb diff --git a/recipes-vrpmdv/recipes-base/vrpmdv-mon-datafile/.vscode/settings.json b/recipes-vrpmdv/recipes-base/vrpmdv-mon-datafile/.vscode/settings.json new file mode 100644 index 0000000..a644266 --- /dev/null +++ b/recipes-vrpmdv/recipes-base/vrpmdv-mon-datafile/.vscode/settings.json @@ -0,0 +1,8 @@ +{ + "files.associations": { + "rpmsg.h": "c", + "types.h": "c", + "ioctl.h": "c", + "wait.h": "c" + } +} \ No newline at end of file diff --git a/recipes-vrpmdv/recipes-base/vrpmdv-mon-datafile/.~lock.Create-Kernel-Driver.odt# b/recipes-vrpmdv/recipes-base/vrpmdv-mon-datafile/.~lock.Create-Kernel-Driver.odt# new file mode 100644 index 0000000..58373c8 --- /dev/null +++ b/recipes-vrpmdv/recipes-base/vrpmdv-mon-datafile/.~lock.Create-Kernel-Driver.odt# @@ -0,0 +1 @@ +,markus,U2204VM,02.05.2024 10:15,file:///home/markus/.config/libreoffice/4; \ No newline at end of file diff --git a/recipes-vrpmdv/recipes-base/vrpmdv-mon-datafile/Create-Kernel-Driver.odt b/recipes-vrpmdv/recipes-base/vrpmdv-mon-datafile/Create-Kernel-Driver.odt new file mode 100644 index 0000000000000000000000000000000000000000..cee5ccfb8a2a2416490d82af7db60d68015b3e7e GIT binary patch literal 314929 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 z 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

cxO1|lNk>&7v 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 literal 0 HcmV?d00001 diff --git a/recipes-vrpmdv/recipes-base/vrpmdv-mon-tty/LockingWaitQueues.pdf b/recipes-vrpmdv/recipes-base/vrpmdv-mon-tty/LockingWaitQueues.pdf new file mode 100644 index 0000000000000000000000000000000000000000..6d16b4bb99684256fd08e562d2080ea8ff544a06 GIT binary patch literal 235748 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⋙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 V9LAQ05(JWWaQ{6A8dMB4xW literal 0 HcmV?d00001 diff --git a/recipes-vrpmdv/recipes-base/vrpmdv-mon-tty/files/75-mon-tty.rules b/recipes-vrpmdv/recipes-base/vrpmdv-mon-tty/files/75-mon-tty.rules new file mode 100644 index 0000000..a573a73 --- /dev/null +++ b/recipes-vrpmdv/recipes-base/vrpmdv-mon-tty/files/75-mon-tty.rules @@ -0,0 +1 @@ +SUBSYSTEM=="misc", KERNEL=="ttyMON", GROUP="tty", MODE="0666" diff --git a/recipes-vrpmdv/recipes-base/vrpmdv-mon-tty/files/Makefile b/recipes-vrpmdv/recipes-base/vrpmdv-mon-tty/files/Makefile new file mode 100644 index 0000000..86fda31 --- /dev/null +++ b/recipes-vrpmdv/recipes-base/vrpmdv-mon-tty/files/Makefile @@ -0,0 +1,26 @@ +# Makefile for VRPMDV Monitoring Controler +obj-m := vrpmdv-mon-tty.o + + +SRC := $(shell pwd) + +all: + $(MAKE) -C $(KERNEL_SRC) M=$(SRC) + +modules_install: + $(MAKE) -C $(KERNEL_SRC) M=$(SRC) modules_install + +clean: + rm -f *.o *~ core .depend .*.cmd *.ko *.mod.c + rm -f Module.markers Module.symvers modules.order + rm -rf .tmp_versions Modules.symvers + +# obj-m = vrpmdv-monitoring-controler.o + +# KVERSION = $(shell uname -r) + +# all: +# make -C /lib/modules/$(KVERSION)/build M=$(PWD) modules + +# clean: +# make -C /lib/modules/$(KVERSION)/build M=$(PWD) clean diff --git a/recipes-vrpmdv/recipes-base/vrpmdv-mon-tty/files/lock.csave b/recipes-vrpmdv/recipes-base/vrpmdv-mon-tty/files/lock.csave new file mode 100644 index 0000000..0de60b3 --- /dev/null +++ b/recipes-vrpmdv/recipes-base/vrpmdv-mon-tty/files/lock.csave @@ -0,0 +1,116 @@ +include +#include +#include +#include +#include + +std::mutex m; +std::condition_variable cv; +std::string data; +bool ready = false; +bool processed = false; + +void worker_thread() +{ + // wait until main() sends data + std::unique_lock lk(m); + cv.wait(lk, []{ return ready; }); + + // after the wait, we own the lock + std::cout << "Worker thread is processing data\n"; + data += " after processing"; + + // send data back to main() + processed = true; + std::cout << "Worker thread signals data processing completed\n"; + + // manual unlocking is done before notifying, to avoid waking up + // the waiting thread only to block again (see notify_one for details) + lk.unlock(); + cv.notify_one(); +} + +int main() +{ + std::thread worker(worker_thread); + + data = "Example data"; + // send data to the worker thread + { + std::lock_guard lk(m); + ready = true; + std::cout << "main() signals data ready for processing\n"; + } + cv.notify_one(); + + // wait for the worker + { + std::unique_lock lk(m); + cv.wait(lk, []{ return processed; }); + } + std::cout << "Back in main(), data = " << data << '\n'; + + worker.join(); +} + +-------------------- + +// waiting for timeout after 5 seconds +std::chrono::seconds timeoutPeriod = 5; +auto timePoint = std::chrono::system_clock::now() + timeoutPeriod; +std::unique_lock uLock(myDataMutex); +while(!DataAreReadyForProcessing()) +{ + if (myCondVar.wait_until(uLock, timePoint) //<## + == std::cv_status::timeout) + { + // data conditions where not fulfilled within + // the time period; e.g. do some error handling + break; + } +} + +-- + +if (myCondVar.wait_for(uLock, timeoutPeriod, + DataAreReadyForProcessing)) +{ + // data conditions where fulfilled + // regular processing +} +else // timeout occured, conditions are not fulfilled +{ + // e.g. do some error handling +} + + + + + + +------------- + + +static int rpmsg_sample_probe(struct rpmsg_device *rpdev) +{ + + int ret; + struct instance_data *idata; + + dev_info(&rpdev->dev, "new channel: 0x%x -> 0x%x!\n", + rpdev->src, rpdev->dst); + + idata = devm_kzalloc(&rpdev->dev, sizeof(*idata), GFP_KERNEL); + if (!idata) + return -ENOMEM; + + dev_set_drvdata(&rpdev->dev, idata); + + /* send a message to our remote processor */ + ret = rpmsg_send(rpdev->ept, MSG, strlen(MSG)); + if (ret) { + dev_err(&rpdev->dev, "rpmsg_send failed: %d\n", ret); + return ret; + } + + return 0; diff --git a/recipes-vrpmdv/recipes-base/vrpmdv-mon-tty/files/vrpmdv-mon-log.c.old b/recipes-vrpmdv/recipes-base/vrpmdv-mon-tty/files/vrpmdv-mon-log.c.old new file mode 100644 index 0000000..dab7cc2 --- /dev/null +++ b/recipes-vrpmdv/recipes-base/vrpmdv-mon-tty/files/vrpmdv-mon-log.c.old @@ -0,0 +1,795 @@ +/* Copyright 2024 Markus Lehr + * + * + * This Software is owned by Markus Lehr. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, + * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A + * PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +// ################################################################################################## +/* + * This is a Linux kernel module/driver called "vrpmdv-monitoring-cmd " which holds the family ID + * and functions to handle the monitoring in a Generic Netlink in the kernel. + * "It registers a Netlink family called "vrpmdv-monitoring_cmd". + * + * + * You can find some more interesting documentation about Generic Netlink here: + * "Generic Netlink HOW-TO based on Jamal's original doc" https://lwn.net/Articles/208755/ + */ + + +#include +#include + +// basic definitions for kernel module development +#include +// definitions for generic netlink families, policies etc; +// transitive dependencies for basic netlink, sockets etc +#include +// required for locking inside the .dumpit callback demonstration +#include +#include + + +// data/vars/enums/properties that describes our protocol that we implement +// on top of generic netlink (like functions we want to trigger on the receiving side) +//#include "vrpmdv-monitoring-cmd.h" + + +/* ######################## CONVENIENT LOGGING MACROS ######################## */ +// (Re)definition of some convenient logging macros from . You can see the logging +// messages when printing the kernel log, e.g. with `$ sudo dmesg`. +// See https://elixir.bootlin.com/linux/latest/source/include/linux/printk.h + +// with this redefinition we can easily prefix all log messages from pr_* logging macros +#ifdef pr_fmt +#undef pr_fmt +#endif +#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt +/* ########################################################################### */ + + +#define MSG "hello Monitoring!" +static bool retok = true; + +static int count = 100; +module_param(count, int, 0644); + +struct instance_data { + int rx_count; +}; + + +// std::chrono::seconds timeoutPeriod = 5; +// auto timePoint = std::chrono::system_clock::now() + timeoutPeriod; + + +/** ----- NETLINK Driver defintion ------------------*/ + + +/** + * Generic Netlink will create a Netlink family with this name. Kernel will asign + * a numeric ID and afterwards we can talk to the family with its ID. To get + * the ID we use Generic Netlink in the userland and pass the family name. + * + * Short for: Generic Netlink VRPMDV Monitoring gnl_foobar_mcmd + */ +#define FAMILY_NAME "gnl-vrpmdv-mcmd" + +/** + * These are the attributes that we want to share in gnl_foobar_xmpl. + * You can understand an attribute as a semantic type. This is + * the payload of Netlink messages. + * GNl: Generic Netlink + */ +enum GNL_VRPMDV_XMPL_ATTRIBUTE { + /** + * 0 is never used (=> UNSPEC), you can also see this in other family definitions in Linux code. + * We do the same, although I'm not sure, if this is really enforced by code. + */ + GNL_VRPMDV_MCMD_A_UNSPEC, + /** We expect a MSG to be a null-terminated C-string. */ + GNL_VRPMDV_MCMD_A_MSG, + /** Unused marker field to get the length/count of enum entries. No real attribute. */ + __GNL_VRPMDV_MCMD_A_MAX, +}; +/** + * Number of elements in `enum GNL_VRPMDV_MCMD_COMMAND`. + */ +#define GNL_VRPMDV_MCMD_ATTRIBUTE_ENUM_LEN (__GNL_VRPMDV_MCMD_A_MAX) +/** + * The number of actual usable attributes in `enum GNL_VRPMDV_MCMD_ATTRIBUTE`. + * This is `GNL_VRPMDV_MCMD_ATTRIBUTE_ENUM_LEN` - 1 because "UNSPEC" is never used. + */ +#define GNL_VRPMDV_MCMD_ATTRIBUTE_COUNT (GNL_VRPMDV_MCMD_ATTRIBUTE_ENUM_LEN - 1) + +/** + * Enumeration of all commands (functions) that our custom protocol on top + * of generic netlink supports. This can be understood as the action that + * we want to trigger on the receiving side. + */ +enum GNL_VRPMDV_MCMD_COMMAND { + /** + * 0 is never used (=> UNSPEC), you can also see this in other family definitions in Linux code. + * We do the same, although I'm not sure, if this is really enforced by code. + */ + GNL_VRPMDV_MCMD_C_UNSPEC, + + // first real command is "1" (>0) + /** + * When this command is received, we expect the attribute `GNL_VRPMDV_MCMD_ATTRIBUTE::GNL_VRPMDV_MCMD_A_MSG` to + * be present in the Generic Netlink request message. The kernel reads the message from the packet and + * sent it to the copro. THe result will be return by creating a new Generic Netlink response message + * with an corresponding attribute/payload. + * + * This command/signaling mechanism is independent of the Netlink flag `NLM_F_ECHO (0x08)`. We use it as + * "echo specific data" instead of return a 1:1 copy of the package, which you could do with + * `NLM_F_ECHO (0x08)` for example. + */ + GNL_VRPMDV_MCMD_C_MSG, + + /** + * Provokes a NLMSG_ERR answer to this request as described in netlink manpage + * (https://man7.org/linux/man-pages/man7/netlink.7.html). + */ + GNL_VRPMDV_MCMD_C_REPLY_WITH_NLMSG_ERR, + + /** Unused marker field to get the length/count of enum entries. No real attribute. */ + __GNL_VRPMDV_MCMD_C_MAX, +}; +/** + * Number of elements in `enum GNL_VRPMDV_MCMD_COMMAND`. + */ +#define GNL_VRPMDV_MCMD_COMMAND_ENUM_LEN (__GNL_VRPMDV_MCMD_C_MAX) +/** + * The number of actual usable commands in `enum GNL_FOOBAR_XMPL_COMMAND`. + * This is `GNL_VRPMDV_MCMD_COMMAND_ENUM_LEN` - 1 because "UNSPEC" is never used. + */ +#define GNL_VRPMDV_MCMD_COMMAND_COUNT (GNL_VRPMDV_MCMD_COMMAND_ENUM_LEN - 1) + +#define NODATARECEIVED 0 +#define DATARECEIVED 1 + + + + /** + * rpmsg wait for response from copro side. + */ + struct mutex sendMTX; + /** + * rpmsg wait for response from copro side. + */ + struct mutex receiveCV; + /** + * Wait Queue: if it is signaled we have received data from copro + */ + wait_queue_head_t receive_queue; + /** + * Waitflag: 0= no data received, 1 = data received + */ + int receive_queue_flag = NODATARECEIVED; + + char* received_bytes = NULL; + int received_len = 0; + //the rpmsg device which sends the data to the copro + struct rpmsg_device* prpdev = NULL; /* handle rpmsg device */ + + +// Documentation is on the implementation of this function. +int gnl_cb_vrpmdv_doit(struct sk_buff *sender_skb, struct genl_info *info); + +// Documentation is on the implementation of this function. +int gnl_cb_doit_reply_with_nlmsg_err(struct sk_buff *sender_skb, struct genl_info *info); + +/** + * The length of `struct genl_ops gnl_foobar_xmpl_ops[]`. Not necessarily + * the number of commands in `enum GNlFoobarXmplCommand`. It depends on your application logic. + * For example, you can use the same command multiple times and - dependent by flag - + * invoke a different callback handler. In our simple example we just use one .doit callback + * per operation/command. + */ +#define GNL_VRPMDV_OPS_LEN (GNL_VRPMDV_MCMD_COMMAND_COUNT) + +/** + * Array with all operations that our protocol on top of Generic Netlink + * supports. An operation is the glue between a command ("cmd" field in `struct genlmsghdr` of + * received Generic Netlink message) and the corresponding ".doit" callback function. + * See: https://elixir.bootlin.com/linux/v5.11/source/include/net/genetlink.h#L148 + */ +struct genl_ops gnl_vrpmdv_mcmd_ops[GNL_VRPMDV_OPS_LEN] = { + { + /* The "cmd" field in `struct genlmsghdr` of received Generic Netlink message */ + .cmd = GNL_VRPMDV_MCMD_C_MSG, + /* TODO Use case ? */ + .flags = 0, + /* TODO Use case ? */ + .internal_flags = 0, + /* Callback handler when a request with the specified ".cmd" above is received. + * Always validates the payload except one set NO_STRICT_VALIDATION flag in ".validate" + * See: https://elixir.bootlin.com/linux/v5.11/source/net/netlink/genetlink.c#L717 + * + * Quote from: https://lwn.net/Articles/208755 + * "The 'doit' handler should do whatever processing is necessary and return + * zero on success, or a negative value on failure. Negative return values + * will cause a NLMSG_ERROR message to be sent while a zero return value will + * only cause a NLMSG_ERROR message to be sent if the request is received with + * the NLM_F_ACK flag set." + * + * You can find this in Linux code here: + * https://elixir.bootlin.com/linux/v5.11/source/net/netlink/af_netlink.c#L2499 + * + * One can find more information about NLMSG_ERROR responses and how to handle them + * in userland in the manpage: https://man7.org/linux/man-pages/man7/netlink.7.html + * + */ + .doit = gnl_cb_vrpmdv_doit, + /* This callback is similar in use to the standard Netlink 'dumpit' callback. + * The 'dumpit' callback is invoked when a Generic Netlink message is received + * with the NLM_F_DUMP flag set. + * + * A dump can be understand as a "GET ALL DATA OF THE GIVEN ENTITY", i.e. + * the userland can receive as long as the .dumpit callback returns data. + * + * .dumpit is not mandatory, but either it or .doit must be provided, see + * https://elixir.bootlin.com/linux/v5.11/source/net/netlink/genetlink.c#L367 + * + * To be honest I don't know in what use case one should use .dumpit and why + * it is useful, because you can achieve the same also with .doit handlers. + * Anyway, this is just an example/tutorial. + * + * Quote from: https://lwn.net/Articles/208755 + * "The main difference between a 'dumpit' handler and a 'doit' handler is + * that a 'dumpit' handler does not allocate a message buffer for a response; + * a pre-allocated sk_buff is passed to the 'dumpit' handler as the first + * parameter. The 'dumpit' handler should fill the message buffer with the + * appropriate response message and return the size of the sk_buff, + * i.e. sk_buff->len, and the message buffer will automatically be sent to the + * Generic Netlink client that initiated the request. As long as the 'dumpit' + * handler returns a value greater than zero it will be called again with a + * newly allocated message buffer to fill, when the handler has no more data + * to send it should return zero; error conditions are indicated by returning + * a negative value. If necessary, state can be preserved in the + * netlink_callback parameter which is passed to the 'dumpit' handler; the + * netlink_callback parameter values will be preserved across handler calls + * for a single request." + * + * You can see the check for the NLM_F_DUMP-flag here: + * https://elixir.bootlin.com/linux/v5.11/source/net/netlink/genetlink.c#L780 + */ + .dumpit = NULL, //gnl_cb_echo_dumpit, + /* Start callback for dumps. Can be used to lock data structures. */ + .start = NULL, //gnl_cb_echo_dumpit_before, + /* Completion callback for dumps. Can be used for cleanup after a dump and releasing locks. */ + .done = NULL, //gnl_cb_echo_dumpit_before_after, + /* + 0 (= "validate strictly") or value `enum genl_validate_flags` + * see: https://elixir.bootlin.com/linux/v5.11/source/include/net/genetlink.h#L108 + */ + .validate = 0, + }, + { + .cmd = GNL_VRPMDV_MCMD_C_REPLY_WITH_NLMSG_ERR, + .flags = 0, + .internal_flags = 0, + .doit = gnl_cb_doit_reply_with_nlmsg_err, + // .dumpit is not required, only optional; application specific/dependent on your use case + // in a real application you probably have different .dumpit handlers per operation/command + .dumpit = NULL, + // in a real application you probably have different .start handlers per operation/command + .start = NULL, + // in a real application you probably have different .done handlers per operation/command + .done = NULL, + .validate = 0, + } +}; + + +/** + * Attribute policy: defines which attribute has which type (e.g int, char * etc). + * This get validated for each received Generic Netlink message, if not deactivated + * in `gnl_foobar_xmpl_ops[].validate`. + * See https://elixir.bootlin.com/linux/v5.11/source/net/netlink/genetlink.c#L717 + */ +static struct nla_policy gnl_vrpmdv_mcmd_policy[GNL_VRPMDV_MCMD_ATTRIBUTE_ENUM_LEN] = { + // In case you are seeing this syntax for the first time (I also learned this just after a few years of + // coding with C myself): The following static array initiations are equivalent: + // `int a[2] = {1, 2}` <==> `int a[2] = {[0] => 1, [1] => 2}`. + + [GNL_VRPMDV_MCMD_A_UNSPEC] = {.type = NLA_UNSPEC}, + + // You can set this to NLA_U32 for testing and send an ECHO message from the userland + // It will fail in this case and you see a entry in the kernel log. + + // `enum GNL_FOOBAR_XMPL_ATTRIBUTE::GNL_FOOBAR_XMPL_A_MSG` is a null-terminated C-String + [GNL_VRPMDV_MCMD_A_MSG] = {.type = NLA_NUL_STRING}, +}; + + + +/** + * Definition of the Netlink family we want to register using Generic Netlink functionality + */ +static struct genl_family gnl_vrpmdv_mcmd_family = { + // automatically assign an id + .id = 0, + // we don't use custom additional header info / user specific header + .hdrsize = 0, + // The name of this family, used by userspace application to get the numeric ID + .name = FAMILY_NAME, + // family specific version number; can be used to evolve application over time (multiple versions) + .version = 1, + // delegates all incoming requests to callback functions + .ops = gnl_vrpmdv_mcmd_ops, + // length of array `gnl_foobar_xmpl_ops` + .n_ops = GNL_VRPMDV_OPS_LEN, + // attribute policy (for validation of messages). Enforced automatically, except ".validate" in + // corresponding ".ops"-field is set accordingly. + .policy = gnl_vrpmdv_mcmd_policy, + // Number of attributes / bounds check for policy (array length) + .maxattr = GNL_VRPMDV_MCMD_ATTRIBUTE_ENUM_LEN, + // Owning Kernel module of the Netlink family we register. + .module = THIS_MODULE, + + // Actually not necessary because this memory region would be zeroed anyway during module load, + // but this way one sees all possible options. + + // if your application must handle multiple netlink calls in parallel (where one should not block the next + // from starting), set this to true! otherwise all netlink calls are mutually exclusive + .parallel_ops = 0, + // set to true if the family can handle network namespaces and should be presented in all of them + .netnsok = 0, + // called before an operation's doit callback, it may do additional, common, filtering and return an error + .pre_doit = NULL, + // called after an operation's doit callback, it may undo operations done by pre_doit, for example release locks + .post_doit = NULL, +}; + + + +/** + * Regular ".doit"-callback function if a Generic Netlink with command `GNL_VRPMDV_MCMD_C_MSG` is received. + * Please look into the comments where this is used as ".doit" callback above in + * `struct genl_ops gnl_vrpmdv_mcmd_ops[]` for more information about ".doit" callbacks. +*/ +int gnl_cb_vrpmdv_doit(struct sk_buff *sender_skb, struct genl_info *info) { + struct nlattr *na; + struct sk_buff *reply_skb; + int rc; + void *msg_head; + char *recv_msg; + + pr_info("%s() invoked\n", __func__); + + if (info == NULL) { + // should never happen + pr_err("An error occurred in %s():\n", __func__); + return -EINVAL; + } + + /* + * For each attribute there is an index in info->attrs which points to a nlattr structure + * in this structure the data is stored. + */ + na = info->attrs[GNL_VRPMDV_MCMD_A_MSG]; + + if (!na) { + pr_err("no info->attrs[%i]\n", GNL_VRPMDV_MCMD_A_MSG); + return -EINVAL; // we return here because we expect to recv a msg + } + + recv_msg = (char *) nla_data(na); + if (recv_msg == NULL) { + pr_err("error while receiving data\n"); + } else { + pr_info("received: '%s'\n", recv_msg); + } + + //aquire lock for cmd repmsg channel + // std::lock sendlk(cmd_cb_progress_data.sendmtx); + + //send the message to the copro over RPMSG + if (prpdev) { + rc = rpmsg_send(prpdev->ept, recv_msg, strlen(recv_msg)); + if (rc) { + pr_err("rpmsg_send failed: %d\n", rc); + return rc; + } + + // struct rpmsg_vrpmdv_mon_t *drv = dev_get_drvdata(&rpdev->dev); + + // Send a message back after we receive the reply from rpmsg channel + // --------------------- + + // Allocate some memory, since the size is not yet known use NLMSG_GOODSIZE + reply_skb = genlmsg_new(NLMSG_GOODSIZE, GFP_KERNEL); + if (reply_skb == NULL) { + pr_err("An error occurred in %s():\n", __func__); + return -ENOMEM; + } + + // Create the message headersprpdev + + // Add header to netlink message; + // afterwards the buffer looks like this: + // ---------------------------------- + // | netlink header | + // | generic netlink header | + // | | + // ---------------------------------- + // msg_head = genlmsg_put(reply_skb, // buffer for netlink message: struct sk_buff * + // // According to my findings: this is not used for routing + // // This can be used in an application specific way to target + // // different endpoints within the same user application + // // but general rule: just put sender port id here + // info->snd_portid, // sending port (not process) id: int + // info->snd_seq + 1, // sequence number: int (might be used by receiver, but not mandatory) + // &gnl_vrpmdv_mcmd_family, // struct genl_family * + // 0, // flags for Netlink header: int; application specific and not mandatory + // // The command/operation (u8) from `enum GNL_FOOBAR_XMPL_COMMAND` for Generic Netlink header + // GNL_VRPMDV_MCMD_C_MSG + // ); + + msg_head = genlmsg_put_reply(reply_skb, // buffer for netlink message: struct sk_buff * + info, // info + &gnl_vrpmdv_mcmd_family, // struct genl_family * + 0, // flags for Netlink header: int; application specific and not mandatory + // The command/operation (u8) from `enum GNL_FOOBAR_XMPL_COMMAND` for Generic Netlink header + info->genlhdr->cmd + ); + + if (msg_head == NULL) { + rc = ENOMEM; + pr_err("An error occurred in %s():\n", __func__); + return -rc; + } + + { + pr_info("wait for response\n"); + // wait until receive_queue_flag=1 , that means we have received data from Copro + wait_event_interruptible(receive_queue, receive_queue_flag != 0 ); + + //Copy data + receive_queue_flag = NODATARECEIVED; + + + + // std::unique_lock lk(cmd_cb_progress_data.receivemtx); + // if (myCondVar.wait_until(uLock, timePoint) == std::cv_status::timeout) + // { + // dev_err(&cmd_cb_progress_data.rpdev, "rpmsg_send failed, timeout: \n"); + // return -1: + // } + + //pr_info("get response: '%s'\n", recv_msg); + if (received_len > 0) { + pr_info("received data from copro %s\n", received_bytes); + } + else { + pr_err("don't received data from Copro \n"); + } + + } + + // Add a GNL_VRPMDV_MCMD_A_MSG attribute (actual value/payload to be sent) + // echo the value we just received + rc = nla_put_string(reply_skb, GNL_VRPMDV_MCMD_A_MSG, received_bytes); + + if (rc != 0) { + pr_err("An error occurred in %s():\n", __func__); + //free the buffer + kfree(received_bytes); + received_bytes = NULL; + return -rc; + } + + // Finalize the message: + // Corrects the netlink message header (length) to include the appended + // attributes. Only necessary if attributes have been added to the message. + genlmsg_end(reply_skb, msg_head); + + // Send the message back + rc = genlmsg_reply(reply_skb, info); + // same as genlmsg_unicast(genl_info_net(info), reply_skb, info->snd_portid) + // see https://elixir.bootlin.com/linux/v5.8.9/source/include/net/genetlink.h#L326 + + kfree(received_bytes); + received_bytes = NULL; + + if (rc != 0) { + pr_err("An error occurred in %s():\n", __func__); + return -rc; + } + return 0; + + } + pr_info("Device not set in Probe. Should not happen"); + return -1; +} + +/** + * Regular ".doit"-callback function if a Generic Netlink with command `GNL_FOOBAR_XMPL_C_REPLY_WITH_NLMSG_ERR` is received. + * Please look into the comments where this is used as ".doit" callback above in + * `struct genl_ops gnl_foobar_xmpl_ops[]` for more information about ".doit" callbacks. +*/ +int gnl_cb_doit_reply_with_nlmsg_err(struct sk_buff *sender_skb, struct genl_info *info) { + pr_info("%s() invoked, a NLMSG_ERR response will be sent back\n", __func__); + + /* + * Generic Netlink is smart enough and sends a NLMSG_ERR reply automatically as reply + * Quote from https://lwn.net/Articles/208755/: + * "The 'doit' handler should do whatever processing is necessary and return + * zero on success, or a negative value on failure. Negative return values + * will cause a NLMSG_ERROR message to be sent while a zero return value will + * only cause a NLMSG_ERROR message to be sent if the request is received with + * the NLM_F_ACK flag set." + * + * You can find this in Linux code here: + * https://elixir.bootlin.com/linux/v5.11/source/net/netlink/af_netlink.c#L2499 + * + * One can find more information about NLMSG_ERROR responses and how to handle them + * in userland in the manpage: https://man7.org/linux/man-pages/man7/netlink.7.html + */ + return -EINVAL; +} + + + +/** ----- NETLINK Driver defintion ------------------*/ + + + + + +/** + * callback that is called after the copro send data + * we have to copy it in a buffer for the netlink and later send it back to the userland + * +*/ +static int vrpmdv_monitoring_cb(struct rpmsg_device *rpdev, void *data, int len, + void *priv, u32 src) +{ + int ret = 0; + // struct instance_data *idata = dev_get_drvdata(&rpdev->dev); + + // dev_info(&rpdev->dev, "incoming msg %d (src: 0x%x)\n", + // ++idata->rx_count, src); + + print_hex_dump_debug(__func__, DUMP_PREFIX_NONE, 16, 1, data, len, + true); + if (len == 0) { + pr_err("(%s) Empty lenght requested\n", __func__); + return -EINVAL; + } + else { + pr_info("received logging: %s\n", (char*) data); + } + + ret = rpmsg_send(rpdev->ept, retok, sizeof(retok)); + + // received_bytes = (char *)kmalloc(len+1, GFP_KERNEL); + // memcpy(received_bytes, data, len); + + // rpmsg_RxBuf[len] = 0; + + + + // received_bytes = (char *)kmalloc(len, GFP_KERNEL); + // memcpy(received_bytes, data, len); + // received_len = len; + // receive_queue_flag= DATARECEIVED; + // wake_up_interruptible(&receive_queue); + + // /* samples should not live forever */ + // if (idata->rx_count >= count) { + // dev_info(&rpdev->dev, "goodbye!\n"); + // return 0; + // } + + /* send a new message now */ + // ret = rpmsg_send(rpdev->ept, MSG, strlen(MSG)); + // if (ret) + // dev_err(&rpdev->dev, "rpmsg_send failed: %d\n", ret); + + return ret; +} + +static int vrpmdv_mon_log_probe(struct rpmsg_device *rpdev) +{ + //int rc; + + // int ret; + // struct instance_data *idata; + + // dev_info(&rpdev->dev, "new channel: 0x%x -> 0x%x!\n", + // rpdev->src, rpdev->dst); + + pr_info("RPMSG mon logger device driver started.\n"); + + // idata = devm_kzalloc(&rpdev->dev, sizeof(*idata), GFP_KERNEL); + // if (!idata) + // return -ENOMEM; + + // dev_set_drvdata(&rpdev->dev, idata); + + // /* send a message to our remote processor to */ + // ret = rpmsg_send(rpdev->ept, MSG, strlen(MSG)); + // if (ret) { + // dev_err(&rpdev->dev, "vrpmdv_monitoring_controler_send failed: %d\n", ret); + // return ret; + // } + + // return 0; + + // struct device *dev; + // dev = &rpdev->dev; + // struct rpmsg_vrpmdv_mon_t *rpmsg_vrpmdv_mon; + + // rpmsg_vrpmdv_mon = devm_kzalloc(dev, sizeof(*rpmsg_vrpmdv_mon), GFP_KERNEL); + // if (!rpmsg_vrpmdv_mon) + // return -ENOMEM; + + // mutex_init(&sendMTX); + // init_waitqueue_head (&receive_queue); + prpdev = rpdev; + + // dev_set_drvdata(&rpdev->dev, rpmsg_vrpmdv_mon); + pr_info("RPMSG Logger Device set.\n"); + + + /** NEU **/ + // if (cmd_cb_progress_data.rpdev == NULL) { + // cmd_cb_progress_data.rpdev = rpdev; + // pr_info("RPMSG CMD Device set.\n"); + // } + // else { + // pr_info("Error: RPMSG CMD Device already set. Don't set it twice\n"); + // } + + //pr_info("Generic Netlink VRPMDV-Mon-Log Module started.\n"); + + // Register family with its operations and policies + // rc = genl_register_family(&gnl_vrpmdv_mcmd_family); + // if (rc != 0) { + // pr_err("FAILED: genl_register_family(): %i\n", rc); + // pr_err("An error occurred while inserting the generic netlink example module\n"); + // return -1; + // } else { + // pr_info("successfully registered custom Netlink family '" FAMILY_NAME "' using Generic Netlink.\n"); + // } + + return 0; + + + +} + +static void vrpmdv_mon_log_remove(struct rpmsg_device *rpdev) +{ + //int ret; + pr_info("Mon Logger unloaded.\n"); + + // Unregister the family + // ret = genl_unregister_family(&gnl_vrpmdv_mcmd_family); + // if (ret != 0) { + // pr_err("genl_unregister_family() failed: %i\n", ret); + // return; + // } else { + // pr_info("successfully unregistered custom Netlink family '" FAMILY_NAME "' using Generic Netlink.\n"); + // } + + // mutex_destroy(&sendMTX); + // wake_up_interruptible(&receive_queue); + + pr_info("vrpmdv-mon logger driver is removed\n"); + // dev_info(&rpdev->dev, "vrpmdv-monitoring controler driver is removed\n"); + +} + +static struct rpmsg_device_id vrpmdv_mon_log_id_table[] = { + { .name = "vrpmdv-mon-log" }, + { }, +}; +MODULE_DEVICE_TABLE(rpmsg, vrpmdv_mon_log_id_table); + +static struct rpmsg_driver vrpmdv_mon_log = { + .drv.name = KBUILD_MODNAME, + .id_table = vrpmdv_mon_log_id_table, + .probe = vrpmdv_mon_log_probe, + .callback = vrpmdv_mon_log_cb, + .remove = vrpmdv_mon_log_remove, +}; +module_rpmsg_driver(vrpmdv_mon_log); + + +// static struct rpmsg_driver vrpmdv_monitoring_data = { +// .drv.name = KBUILD_MODNAME, +// .id_table = vrpmdv_monitoring_controler_id_table, +// .probe = vrpmdv_monitoring_probe, +// .callback = vrpmdv_monitoring_cb, +// .remove = vrpmdv_monitoring_remove, +// }; + +// module_rpmsg_driver(vrpmdv_monitoring_data); + +MODULE_DESCRIPTION("Remote processor messaging vrpmdv monitoring controler"); +MODULE_LICENSE("GPL v2"); + + + +// /** +// * Module/driver initializer. Called on module load/insertion. +// * +// * @return success (0) or error code. +// */ +// static int __init gnl_foobar_xmpl_module_init(void) { +// int rc; +// pr_info("Generic Netlink Example Module inserted.\n"); + +// // Register family with its operations and policies +// rc = genl_register_family(&gnl_foobar_xmpl_family); +// if (rc != 0) { +// pr_err("FAILED: genl_register_family(): %i\n", rc); +// pr_err("An error occurred while inserting the generic netlink example module\n"); +// return -1; +// } else { +// pr_info("successfully registered custom Netlink family '" FAMILY_NAME "' using Generic Netlink.\n"); +// } + +// mutex_init(&dumpit_cb_progress_data.mtx); + +// return 0; +// } + +// /** +// * Module/driver uninitializer. Called on module unload/removal. +// * +// * @return success (0) or error code. +// */ +// static void __exit gnl_foobar_xmpl_module_exit(void) { +// int ret; +// pr_info("Generic Netlink Example Module unloaded.\n"); + +// // Unregister the family +// ret = genl_unregister_family(&gnl_foobar_xmpl_family); +// if (ret != 0) { +// pr_err("genl_unregister_family() failed: %i\n", ret); +// return; +// } else { +// pr_info("successfully unregistered custom Netlink family '" FAMILY_NAME "' using Generic Netlink.\n"); +// } + +// mutex_destroy(&dumpit_cb_progress_data.mtx); +// } + + +// ---- + +// static int __init rpmsg_sdb_drv_init(void) +// { +// int ret = 0; + +// /* Register rpmsg device */ +// ret = register_rpmsg_driver(&rpmsg_sdb_rmpsg_drv); + +// if (ret) { +// pr_err("rpmsg_sdb(ERROR): Failed to register device\n"); +// return ret; +// } + +// pr_info("rpmsg_sdb: Init done\n"); + +// return ret; +// } + +// static void __exit rpmsg_sdb_drv_exit(void) +// { +// unregister_rpmsg_driver(&rpmsg_sdb_rmpsg_drv); +// pr_info("rpmsg_sdb: Exit\n"); +// } + +// module_init(rpmsg_sdb_drv_init); +// module_exit(rpmsg_sdb_drv_exit); diff --git a/recipes-vrpmdv/recipes-base/vrpmdv-mon-tty/files/vrpmdv-mon-tty.c b/recipes-vrpmdv/recipes-base/vrpmdv-mon-tty/files/vrpmdv-mon-tty.c new file mode 100644 index 0000000..d122414 --- /dev/null +++ b/recipes-vrpmdv/recipes-base/vrpmdv-mon-tty/files/vrpmdv-mon-tty.c @@ -0,0 +1,308 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2021 STMicroelectronics - All Rights Reserved + * + * The rpmsg tty driver implements serial communication on the RPMsg bus to makes + * possible for user-space programs to send and receive rpmsg messages as a standard + * tty protocol. + * + * The remote processor can instantiate a new tty by requesting a "rpmsg-tty" RPMsg service. + * The "rpmsg-tty" service is directly used for data exchange. No flow control is implemented yet. + */ + +#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt + +#include +#include +#include +#include +#include + +#define RPMSG_TTY_NAME "ttyMON" +#define MAX_TTY_RPMSG 32 + +static DEFINE_IDR(tty_idr); /* tty instance id */ +static DEFINE_MUTEX(idr_lock); /* protects tty_idr */ + +static struct tty_driver *rpmsg_tty_driver; + +struct rpmsg_tty_port { + struct tty_port port; /* TTY port data */ + int id; /* TTY rpmsg index */ + struct rpmsg_device *rpdev; /* rpmsg device */ +}; + +static int rpmsg_tty_cb(struct rpmsg_device *rpdev, void *data, int len, void *priv, u32 src) +{ + struct rpmsg_tty_port *cport = dev_get_drvdata(&rpdev->dev); + int copied; + + pr_info("%s() invoked\n", __func__); + + if (!len) + return -EINVAL; + + copied = tty_insert_flip_string(&cport->port, data, len); + pr_info("%s() received\n", data); + + if (copied != len) + dev_err_ratelimited(&rpdev->dev, "Trunc buffer: available space is %d\n", copied); + pr_info("%s() error cop\n", __func__); + + tty_flip_buffer_push(&cport->port); + pr_info("%s() invoked. succes!!\n", __func__); + return 0; +} + +static int rpmsg_tty_install(struct tty_driver *driver, struct tty_struct *tty) +{ + pr_info("%s() invoked\n", __func__); + struct rpmsg_tty_port *cport = idr_find(&tty_idr, tty->index); + struct tty_port *port; + + tty->driver_data = cport; + + port = tty_port_get(&cport->port); + return tty_port_install(port, driver, tty); +} + +static void rpmsg_tty_cleanup(struct tty_struct *tty) +{ + pr_info("%s() invoked\n", __func__); + tty_port_put(tty->port); +} + +static int rpmsg_tty_open(struct tty_struct *tty, struct file *filp) +{ + pr_info("%s() invoked\n", __func__); + return tty_port_open(tty->port, tty, filp); +} + +static void rpmsg_tty_close(struct tty_struct *tty, struct file *filp) +{ + pr_info("%s() invoked\n", __func__); + return tty_port_close(tty->port, tty, filp); +} + +static int rpmsg_tty_write(struct tty_struct *tty, const u8 *buf, int len) +{ + pr_info("%s() invoked\n", __func__); + struct rpmsg_tty_port *cport = tty->driver_data; + struct rpmsg_device *rpdev; + int msg_max_size, msg_size; + int ret; + + rpdev = cport->rpdev; + + msg_max_size = rpmsg_get_mtu(rpdev->ept); + if (msg_max_size < 0) + return msg_max_size; + + msg_size = min(len, msg_max_size); + + /* + * Use rpmsg_trysend instead of rpmsg_send to send the message so the caller is not + * hung until a rpmsg buffer is available. In such case rpmsg_trysend returns -ENOMEM. + */ + ret = rpmsg_trysend(rpdev->ept, (void *)buf, msg_size); + if (ret) { + dev_dbg_ratelimited(&rpdev->dev, "rpmsg_send failed: %d\n", ret); + return ret; + } + pr_info("%s() invoked. send succes!!\n", __func__); + return msg_size; +} + +static unsigned int rpmsg_tty_write_room(struct tty_struct *tty) +{ + pr_info("%s() invoked\n", __func__); + struct rpmsg_tty_port *cport = tty->driver_data; + int size; + + size = rpmsg_get_mtu(cport->rpdev->ept); + if (size < 0) + return 0; + pr_info("%s() invoked. write success\n", __func__); + return size; +} + +static void rpmsg_tty_hangup(struct tty_struct *tty) +{ + pr_info("%s() invoked\n", __func__); + tty_port_hangup(tty->port); +} + +static const struct tty_operations rpmsg_tty_ops = { + .install = rpmsg_tty_install, + .open = rpmsg_tty_open, + .close = rpmsg_tty_close, + .write = rpmsg_tty_write, + .write_room = rpmsg_tty_write_room, + .hangup = rpmsg_tty_hangup, + .cleanup = rpmsg_tty_cleanup, +}; + +static struct rpmsg_tty_port *rpmsg_tty_alloc_cport(void) +{ + pr_info("%s() invoked\n", __func__); + struct rpmsg_tty_port *cport; + int ret; + + cport = kzalloc(sizeof(*cport), GFP_KERNEL); + if (!cport) + return ERR_PTR(-ENOMEM); + + mutex_lock(&idr_lock); + ret = idr_alloc(&tty_idr, cport, 0, MAX_TTY_RPMSG, GFP_KERNEL); + mutex_unlock(&idr_lock); + + if (ret < 0) { + kfree(cport); + return ERR_PTR(ret); + } + + cport->id = ret; + + return cport; +} + +static void rpmsg_tty_destruct_port(struct tty_port *port) +{ + pr_info("%s() invoked\n", __func__); + struct rpmsg_tty_port *cport = container_of(port, struct rpmsg_tty_port, port); + + mutex_lock(&idr_lock); + idr_remove(&tty_idr, cport->id); + mutex_unlock(&idr_lock); + + kfree(cport); +} + +static const struct tty_port_operations rpmsg_tty_port_ops = { + .destruct = rpmsg_tty_destruct_port, +}; + + +static int rpmsg_tty_probe(struct rpmsg_device *rpdev) +{ + pr_info("%s() invoked\n", __func__); + struct rpmsg_tty_port *cport; + struct device *dev = &rpdev->dev; + struct device *tty_dev; + int ret; + + cport = rpmsg_tty_alloc_cport(); + if (IS_ERR(cport)) + return dev_err_probe(dev, PTR_ERR(cport), "Failed to alloc tty mon port\n"); + + tty_port_init(&cport->port); + cport->port.ops = &rpmsg_tty_port_ops; + + tty_dev = tty_port_register_device(&cport->port, rpmsg_tty_driver, + cport->id, dev); + if (IS_ERR(tty_dev)) { + ret = dev_err_probe(dev, PTR_ERR(tty_dev), "Failed to register tty mon port\n"); + tty_port_put(&cport->port); + return ret; + } + + cport->rpdev = rpdev; + + dev_set_drvdata(dev, cport); + + dev_dbg(dev, "New channel: 0x%x -> 0x%x: " RPMSG_TTY_NAME "%d\n", + rpdev->src, rpdev->dst, cport->id); + + return 0; +} + +static void rpmsg_tty_remove(struct rpmsg_device *rpdev) +{ + pr_info("%s() invoked\n", __func__); + struct rpmsg_tty_port *cport = dev_get_drvdata(&rpdev->dev); + + dev_dbg(&rpdev->dev, "Removing mon tty device %d\n", cport->id); + + /* User hang up to release the tty */ + tty_port_tty_hangup(&cport->port, false); + + tty_unregister_device(rpmsg_tty_driver, cport->id); + + tty_port_put(&cport->port); +} + +static struct rpmsg_device_id rpmsg_driver_tty_id_table[] = { + { .name = "vrpmdv-mon-tty" }, + { }, +}; +MODULE_DEVICE_TABLE(rpmsg, rpmsg_driver_tty_id_table); + +static struct rpmsg_driver rpmsg_tty_rpmsg_drv = { + .drv.name = KBUILD_MODNAME, + .id_table = rpmsg_driver_tty_id_table, + .probe = rpmsg_tty_probe, + .callback = rpmsg_tty_cb, + .remove = rpmsg_tty_remove, +}; + +static int __init rpmsg_tty_init(void) +{ + pr_info("%s() invoked\n", __func__); + int ret; + + rpmsg_tty_driver = tty_alloc_driver(MAX_TTY_RPMSG, TTY_DRIVER_REAL_RAW | + TTY_DRIVER_DYNAMIC_DEV); + if (IS_ERR(rpmsg_tty_driver)) + return PTR_ERR(rpmsg_tty_driver); + + rpmsg_tty_driver->driver_name = "vrpmdv-mon-tty"; + rpmsg_tty_driver->name = RPMSG_TTY_NAME; + rpmsg_tty_driver->major = 0; + rpmsg_tty_driver->type = TTY_DRIVER_TYPE_CONSOLE; + + /* Disable unused mode by default */ + rpmsg_tty_driver->init_termios = tty_std_termios; + rpmsg_tty_driver->init_termios.c_lflag &= ~(ECHO | ICANON); + rpmsg_tty_driver->init_termios.c_oflag &= ~(OPOST | ONLCR); + + tty_set_operations(rpmsg_tty_driver, &rpmsg_tty_ops); + + ret = tty_register_driver(rpmsg_tty_driver); + if (ret < 0) { + pr_err("Couldn't install mon tty driver: %d\n", ret); + goto error_put; + } + + ret = register_rpmsg_driver(&rpmsg_tty_rpmsg_drv); + if (ret < 0) { + pr_err("Couldn't register mon tty driver: %d\n", ret); + goto error_unregister; + } + pr_info("%s() invoked. Install complete!\n", __func__); + return 0; + +error_unregister: + pr_info("%s() invoked unregister.\n", __func__); + tty_unregister_driver(rpmsg_tty_driver); + +error_put: + pr_info("%s() invoked. error put\n", __func__); + tty_driver_kref_put(rpmsg_tty_driver); + + return ret; +} + +static void __exit rpmsg_tty_exit(void) +{ + unregister_rpmsg_driver(&rpmsg_tty_rpmsg_drv); + tty_unregister_driver(rpmsg_tty_driver); + tty_driver_kref_put(rpmsg_tty_driver); + idr_destroy(&tty_idr); +} + +module_init(rpmsg_tty_init); +module_exit(rpmsg_tty_exit); + +MODULE_AUTHOR("Arnaud Pouliquen "); +MODULE_DESCRIPTION("remote processor messaging tty driver"); +MODULE_LICENSE("GPL v2"); diff --git a/recipes-vrpmdv/recipes-base/vrpmdv-mon-tty/files/vrpmdv_mon_tty.c.old b/recipes-vrpmdv/recipes-base/vrpmdv-mon-tty/files/vrpmdv_mon_tty.c.old new file mode 100644 index 0000000..2bf7717 --- /dev/null +++ b/recipes-vrpmdv/recipes-base/vrpmdv-mon-tty/files/vrpmdv_mon_tty.c.old @@ -0,0 +1,287 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2021 STMicroelectronics - All Rights Reserved + * + * The rpmsg tty driver implements serial communication on the RPMsg bus to makes + * possible for user-space programs to send and receive rpmsg messages as a standard + * tty protocol. + * + * The remote processor can instantiate a new tty by requesting a "rpmsg-tty" RPMsg service. + * The "rpmsg-tty" service is directly used for data exchange. No flow control is implemented yet. + */ + +#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt + +#include +#include +#include +#include +#include + +#define RPMSG_TTY_NAME "ttyMON" +#define MAX_TTY_RPMSG 32 + +static DEFINE_IDR(tty_idr); /* tty instance id */ +static DEFINE_MUTEX(idr_lock); /* protects tty_idr */ + +static struct tty_driver *rpmsg_tty_driver; + +struct rpmsg_tty_port { + struct tty_port port; /* TTY port data */ + int id; /* TTY rpmsg index */ + struct rpmsg_device *rpdev; /* rpmsg device */ +}; + +static int rpmsg_tty_cb(struct rpmsg_device *rpdev, void *data, int len, void *priv, u32 src) +{ + struct rpmsg_tty_port *cport = dev_get_drvdata(&rpdev->dev); + int copied; + + if (!len) + return -EINVAL; + copied = tty_insert_flip_string(&cport->port, data, len); + if (copied != len) + dev_err_ratelimited(&rpdev->dev, "Trunc buffer: available space is %d\n", copied); + tty_flip_buffer_push(&cport->port); + + return 0; +} + +static int rpmsg_tty_install(struct tty_driver *driver, struct tty_struct *tty) +{ + struct rpmsg_tty_port *cport = idr_find(&tty_idr, tty->index); + struct tty_port *port; + + tty->driver_data = cport; + + port = tty_port_get(&cport->port); + return tty_port_install(port, driver, tty); +} + +static void rpmsg_tty_cleanup(struct tty_struct *tty) +{ + tty_port_put(tty->port); +} + +static int rpmsg_tty_open(struct tty_struct *tty, struct file *filp) +{ + return tty_port_open(tty->port, tty, filp); +} + +static void rpmsg_tty_close(struct tty_struct *tty, struct file *filp) +{ + return tty_port_close(tty->port, tty, filp); +} + +static int rpmsg_tty_write(struct tty_struct *tty, const u8 *buf, int len) +{ + struct rpmsg_tty_port *cport = tty->driver_data; + struct rpmsg_device *rpdev; + int msg_max_size, msg_size; + int ret; + + rpdev = cport->rpdev; + + msg_max_size = rpmsg_get_mtu(rpdev->ept); + if (msg_max_size < 0) + return msg_max_size; + + msg_size = min(len, msg_max_size); + + /* + * Use rpmsg_trysend instead of rpmsg_send to send the message so the caller is not + * hung until a rpmsg buffer is available. In such case rpmsg_trysend returns -ENOMEM. + */ + ret = rpmsg_trysend(rpdev->ept, (void *)buf, msg_size); + if (ret) { + dev_dbg_ratelimited(&rpdev->dev, "rpmsg_send failed: %d\n", ret); + return ret; + } + + return msg_size; +} + +static unsigned int rpmsg_tty_write_room(struct tty_struct *tty) +{ + struct rpmsg_tty_port *cport = tty->driver_data; + int size; + + size = rpmsg_get_mtu(cport->rpdev->ept); + if (size < 0) + return 0; + + return size; +} + +static void rpmsg_tty_hangup(struct tty_struct *tty) +{ + tty_port_hangup(tty->port); +} + +static const struct tty_operations rpmsg_tty_ops = { + .install = rpmsg_tty_install, + .open = rpmsg_tty_open, + .close = rpmsg_tty_close, + .write = rpmsg_tty_write, + .write_room = rpmsg_tty_write_room, + .hangup = rpmsg_tty_hangup, + .cleanup = rpmsg_tty_cleanup, +}; + +static struct rpmsg_tty_port *rpmsg_tty_alloc_cport(void) +{ + struct rpmsg_tty_port *cport; + int ret; + + cport = kzalloc(sizeof(*cport), GFP_KERNEL); + if (!cport) + return ERR_PTR(-ENOMEM); + + mutex_lock(&idr_lock); + ret = idr_alloc(&tty_idr, cport, 0, MAX_TTY_RPMSG, GFP_KERNEL); + mutex_unlock(&idr_lock); + + if (ret < 0) { + kfree(cport); + return ERR_PTR(ret); + } + + cport->id = ret; + + return cport; +} + +static void rpmsg_tty_destruct_port(struct tty_port *port) +{ + struct rpmsg_tty_port *cport = container_of(port, struct rpmsg_tty_port, port); + + mutex_lock(&idr_lock); + idr_remove(&tty_idr, cport->id); + mutex_unlock(&idr_lock); + + kfree(cport); +} + +static const struct tty_port_operations rpmsg_tty_port_ops = { + .destruct = rpmsg_tty_destruct_port, +}; + + +static int rpmsg_tty_probe(struct rpmsg_device *rpdev) +{ + struct rpmsg_tty_port *cport; + struct device *dev = &rpdev->dev; + struct device *tty_dev; + int ret; + + cport = rpmsg_tty_alloc_cport(); + if (IS_ERR(cport)) + return dev_err_probe(dev, PTR_ERR(cport), "Failed to alloc tty mon port\n"); + + tty_port_init(&cport->port); + cport->port.ops = &rpmsg_tty_port_ops; + + tty_dev = tty_port_register_device(&cport->port, rpmsg_tty_driver, + cport->id, dev); + if (IS_ERR(tty_dev)) { + ret = dev_err_probe(dev, PTR_ERR(tty_dev), "Failed to register tty mon port\n"); + tty_port_put(&cport->port); + return ret; + } + + cport->rpdev = rpdev; + + dev_set_drvdata(dev, cport); + + dev_dbg(dev, "New channel: 0x%x -> 0x%x: " RPMSG_TTY_NAME "%d\n", + rpdev->src, rpdev->dst, cport->id); + + return 0; +} + +static void rpmsg_tty_remove(struct rpmsg_device *rpdev) +{ + struct rpmsg_tty_port *cport = dev_get_drvdata(&rpdev->dev); + + dev_dbg(&rpdev->dev, "Removing mon tty device %d\n", cport->id); + + /* User hang up to release the tty */ + tty_port_tty_hangup(&cport->port, false); + + tty_unregister_device(rpmsg_tty_driver, cport->id); + + tty_port_put(&cport->port); +} + +static struct rpmsg_device_id rpmsg_driver_tty_id_table[] = { + { .name = "vrpmdv-mon-tty" }, + { }, +}; +MODULE_DEVICE_TABLE(rpmsg, rpmsg_driver_tty_id_table); + +static struct rpmsg_driver rpmsg_tty_rpmsg_drv = { + .drv.name = KBUILD_MODNAME, + .id_table = rpmsg_driver_tty_id_table, + .probe = rpmsg_tty_probe, + .callback = rpmsg_tty_cb, + .remove = rpmsg_tty_remove, +}; + +static int __init rpmsg_tty_init(void) +{ + int ret; + + rpmsg_tty_driver = tty_alloc_driver(MAX_TTY_RPMSG, TTY_DRIVER_REAL_RAW | + TTY_DRIVER_DYNAMIC_DEV); + if (IS_ERR(rpmsg_tty_driver)) + return PTR_ERR(rpmsg_tty_driver); + + rpmsg_tty_driver->driver_name = "vrpmdv-mon-tty"; + rpmsg_tty_driver->name = RPMSG_TTY_NAME; + rpmsg_tty_driver->major = 0; + rpmsg_tty_driver->type = TTY_DRIVER_TYPE_CONSOLE; + + /* Disable unused mode by default */ + rpmsg_tty_driver->init_termios = tty_std_termios; + rpmsg_tty_driver->init_termios.c_lflag &= ~(ECHO | ICANON); + rpmsg_tty_driver->init_termios.c_oflag &= ~(OPOST | ONLCR); + + tty_set_operations(rpmsg_tty_driver, &rpmsg_tty_ops); + + ret = tty_register_driver(rpmsg_tty_driver); + if (ret < 0) { + pr_err("Couldn't install mon tty driver: %d\n", ret); + goto error_put; + } + + ret = register_rpmsg_driver(&rpmsg_tty_rpmsg_drv); + if (ret < 0) { + pr_err("Couldn't register mon tty driver: %d\n", ret); + goto error_unregister; + } + + return 0; + +error_unregister: + tty_unregister_driver(rpmsg_tty_driver); + +error_put: + tty_driver_kref_put(rpmsg_tty_driver); + + return ret; +} + +static void __exit rpmsg_tty_exit(void) +{ + unregister_rpmsg_driver(&rpmsg_tty_rpmsg_drv); + tty_unregister_driver(rpmsg_tty_driver); + tty_driver_kref_put(rpmsg_tty_driver); + idr_destroy(&tty_idr); +} + +module_init(rpmsg_tty_init); +module_exit(rpmsg_tty_exit); + +MODULE_AUTHOR("Arnaud Pouliquen "); +MODULE_DESCRIPTION("remote processor messaging tty driver"); +MODULE_LICENSE("GPL v2"); diff --git a/recipes-vrpmdv/recipes-base/vrpmdv-mon-tty/save/kernel-module-vrpmdv-monitoring-driver.bb b/recipes-vrpmdv/recipes-base/vrpmdv-mon-tty/save/kernel-module-vrpmdv-monitoring-driver.bb new file mode 100644 index 0000000..9bd4cda --- /dev/null +++ b/recipes-vrpmdv/recipes-base/vrpmdv-mon-tty/save/kernel-module-vrpmdv-monitoring-driver.bb @@ -0,0 +1,16 @@ +SUMMARY = "VRPMDV Monitoring Driver" +LICENSE = "GPL-2.0-only" +LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/GPL-2.0-only;md5=801f80980d171dd6425610833a22dbe6" + +inherit module + +SRC_URI = "file://Makefile \ + file://vrpmdv-monitoring.c \ + " + +S = "${WORKDIR}" + +# The inherit of module.bbclass will automatically name module packages with +# "kernel-module-" prefix as required by the oe-core build environment. + +RPROVIDES:${PN} += "kernel-module-vrpmdv-monitoring" diff --git a/recipes-vrpmdv/recipes-base/vrpmdv-mon-tty/save/netlink-save.c.save b/recipes-vrpmdv/recipes-base/vrpmdv-mon-tty/save/netlink-save.c.save new file mode 100644 index 0000000..8a32ba8 --- /dev/null +++ b/recipes-vrpmdv/recipes-base/vrpmdv-mon-tty/save/netlink-save.c.save @@ -0,0 +1,541 @@ +/* Copyright 2021 Philipp Schuster + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in the + * Software without restriction, including without limitation the rights to use, copy, + * modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, subject to the + * following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies + * or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, + * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A + * PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +// ################################################################################################## +/* + * This is a Linux kernel module/driver called "gnl_foobar_xmpl" which shows you the basics of using + * Generic Netlink in the kernel. It registers a Netlink family called "gnl_foobar_xmpl". See + * "gnl_foobar_xmpl_prop.h" for common properties of the family. "Generic Netlink" offers us a lot of + * convenient functions to register new/custom Netlink families on the fly during runtime. We use this + * functionality here. It implements simple IPC between Userland and Kernel (Kernel responds to userland). + * + * Check "gnl_foobar_xmpl_prop.h" for common properties of the family first, afterwards follow the code here. + * + * You can find some more interesting documentation about Generic Netlink here: + * "Generic Netlink HOW-TO based on Jamal's original doc" https://lwn.net/Articles/208755/ + */ + +// basic definitions for kernel module development +#include +// definitions for generic netlink families, policies etc; +// transitive dependencies for basic netlink, sockets etc +#include +// required for locking inside the .dumpit callback demonstration +#include + +// data/vars/enums/properties that describes our protocol that we implement +// on top of generic netlink (like functions we want to trigger on the receiving side) +#include "gnl_foobar_xmpl_prop.h" + +// Module/Driver description. +// You can see this for example when executing `$ modinfo ./gnl_foobar_xmpl.ko` (after build). +MODULE_LICENSE("GPL"); +MODULE_AUTHOR("Philipp Schuster "); +MODULE_DESCRIPTION( + "Linux driver that registers the custom Netlink family " + "\"" FAMILY_NAME "\" via Generic Netlink and responds to echo messages " + "according to the properties specified in \"gnl_foobar_xmpl_prop.h\"." +); + + +/* ######################## CONVENIENT LOGGING MACROS ######################## */ +// (Re)definition of some convenient logging macros from . You can see the logging +// messages when printing the kernel log, e.g. with `$ sudo dmesg`. +// See https://elixir.bootlin.com/linux/latest/source/include/linux/printk.h + +// with this redefinition we can easily prefix all log messages from pr_* logging macros +#ifdef pr_fmt +#undef pr_fmt +#endif +#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt +/* ########################################################################### */ + +/** + * Data structure required for our .dumpit callback handler to + * know about the progress of an ongoing dump. + * See the dumpit callback handler how it is used. + */ +struct { + // from + /** + * Only one process is allowed per dump process. We need a lock for that. + */ + struct mutex mtx; + /** + * Number that describes how many packets we need to send until we are done + * during an ongoing dumpit process. 0 = done. + */ + int unsigned runs_to_go; + /** + * Number that describes how many packets per dump are sent in total. + * Constant per dump. + */ + int unsigned total_runs; +} dumpit_cb_progress_data; + +// Documentation is on the implementation of this function. +int gnl_cb_echo_doit(struct sk_buff *sender_skb, struct genl_info *info); + +// Documentation is on the implementation of this function. +int gnl_cb_echo_dumpit(struct sk_buff *pre_allocated_skb, struct netlink_callback *cb); + +// Documentation is on the implementation of this function. +int gnl_cb_echo_dumpit_before(struct netlink_callback *cb); + +// Documentation is on the implementation of this function. +int gnl_cb_echo_dumpit_before_after(struct netlink_callback *cb); + +// Documentation is on the implementation of this function. +int gnl_cb_doit_reply_with_nlmsg_err(struct sk_buff *sender_skb, struct genl_info *info); + +/** + * The length of `struct genl_ops gnl_foobar_xmpl_ops[]`. Not necessarily + * the number of commands in `enum GNlFoobarXmplCommand`. It depends on your application logic. + * For example, you can use the same command multiple times and - dependent by flag - + * invoke a different callback handler. In our simple example we just use one .doit callback + * per operation/command. + */ +#define GNL_FOOBAR_OPS_LEN (GNL_FOOBAR_XMPL_COMMAND_COUNT) + +/** + * Array with all operations that our protocol on top of Generic Netlink + * supports. An operation is the glue between a command ("cmd" field in `struct genlmsghdr` of + * received Generic Netlink message) and the corresponding ".doit" callback function. + * See: https://elixir.bootlin.com/linux/v5.11/source/include/net/genetlink.h#L148 + */ +struct genl_ops gnl_foobar_xmpl_ops[GNL_FOOBAR_OPS_LEN] = { + { + /* The "cmd" field in `struct genlmsghdr` of received Generic Netlink message */ + .cmd = GNL_FOOBAR_XMPL_C_ECHO_MSG, + /* TODO Use case ? */ + .flags = 0, + /* TODO Use case ? */ + .internal_flags = 0, + /* Callback handler when a request with the specified ".cmd" above is received. + * Always validates the payload except one set NO_STRICT_VALIDATION flag in ".validate" + * See: https://elixir.bootlin.com/linux/v5.11/source/net/netlink/genetlink.c#L717 + * + * Quote from: https://lwn.net/Articles/208755 + * "The 'doit' handler should do whatever processing is necessary and return + * zero on success, or a negative value on failure. Negative return values + * will cause a NLMSG_ERROR message to be sent while a zero return value will + * only cause a NLMSG_ERROR message to be sent if the request is received with + * the NLM_F_ACK flag set." + * + * You can find this in Linux code here: + * https://elixir.bootlin.com/linux/v5.11/source/net/netlink/af_netlink.c#L2499 + * + * One can find more information about NLMSG_ERROR responses and how to handle them + * in userland in the manpage: https://man7.org/linux/man-pages/man7/netlink.7.html + * + */ + .doit = gnl_cb_echo_doit, + /* This callback is similar in use to the standard Netlink 'dumpit' callback. + * The 'dumpit' callback is invoked when a Generic Netlink message is received + * with the NLM_F_DUMP flag set. + * + * A dump can be understand as a "GET ALL DATA OF THE GIVEN ENTITY", i.e. + * the userland can receive as long as the .dumpit callback returns data. + * + * .dumpit is not mandatory, but either it or .doit must be provided, see + * https://elixir.bootlin.com/linux/v5.11/source/net/netlink/genetlink.c#L367 + * + * To be honest I don't know in what use case one should use .dumpit and why + * it is useful, because you can achieve the same also with .doit handlers. + * Anyway, this is just an example/tutorial. + * + * Quote from: https://lwn.net/Articles/208755 + * "The main difference between a 'dumpit' handler and a 'doit' handler is + * that a 'dumpit' handler does not allocate a message buffer for a response; + * a pre-allocated sk_buff is passed to the 'dumpit' handler as the first + * parameter. The 'dumpit' handler should fill the message buffer with the + * appropriate response message and return the size of the sk_buff, + * i.e. sk_buff->len, and the message buffer will automatically be sent to the + * Generic Netlink client that initiated the request. As long as the 'dumpit' + * handler returns a value greater than zero it will be called again with a + * newly allocated message buffer to fill, when the handler has no more data + * to send it should return zero; error conditions are indicated by returning + * a negative value. If necessary, state can be preserved in the + * netlink_callback parameter which is passed to the 'dumpit' handler; the + * netlink_callback parameter values will be preserved across handler calls + * for a single request." + * + * You can see the check for the NLM_F_DUMP-flag here: + * https://elixir.bootlin.com/linux/v5.11/source/net/netlink/genetlink.c#L780 + */ + .dumpit = gnl_cb_echo_dumpit, + /* Start callback for dumps. Can be used to lock data structures. */ + .start = gnl_cb_echo_dumpit_before, + /* Completion callback for dumps. Can be used for cleanup after a dump and releasing locks. */ + .done = gnl_cb_echo_dumpit_before_after, + /* + 0 (= "validate strictly") or value `enum genl_validate_flags` + * see: https://elixir.bootlin.com/linux/v5.11/source/include/net/genetlink.h#L108 + */ + .validate = 0, + }, + { + .cmd = GNL_FOOBAR_XMPL_C_REPLY_WITH_NLMSG_ERR, + .flags = 0, + .internal_flags = 0, + .doit = gnl_cb_doit_reply_with_nlmsg_err, + // .dumpit is not required, only optional; application specific/dependent on your use case + // in a real application you probably have different .dumpit handlers per operation/command + .dumpit = NULL, + // in a real application you probably have different .start handlers per operation/command + .start = NULL, + // in a real application you probably have different .done handlers per operation/command + .done = NULL, + .validate = 0, + } +}; + +/** + * Attribute policy: defines which attribute has which type (e.g int, char * etc). + * This get validated for each received Generic Netlink message, if not deactivated + * in `gnl_foobar_xmpl_ops[].validate`. + * See https://elixir.bootlin.com/linux/v5.11/source/net/netlink/genetlink.c#L717 + */ +static struct nla_policy gnl_foobar_xmpl_policy[GNL_FOOBAR_XMPL_ATTRIBUTE_ENUM_LEN] = { + // In case you are seeing this syntax for the first time (I also learned this just after a few years of + // coding with C myself): The following static array initiations are equivalent: + // `int a[2] = {1, 2}` <==> `int a[2] = {[0] => 1, [1] => 2}`. + + [GNL_FOOBAR_XMPL_A_UNSPEC] = {.type = NLA_UNSPEC}, + + // You can set this to NLA_U32 for testing and send an ECHO message from the userland + // It will fail in this case and you see a entry in the kernel log. + + // `enum GNL_FOOBAR_XMPL_ATTRIBUTE::GNL_FOOBAR_XMPL_A_MSG` is a null-terminated C-String + [GNL_FOOBAR_XMPL_A_MSG] = {.type = NLA_NUL_STRING}, +}; + +/** + * Definition of the Netlink family we want to register using Generic Netlink functionality + */ +static struct genl_family gnl_foobar_xmpl_family = { + // automatically assign an id + .id = 0, + // we don't use custom additional header info / user specific header + .hdrsize = 0, + // The name of this family, used by userspace application to get the numeric ID + .name = FAMILY_NAME, + // family specific version number; can be used to evolve application over time (multiple versions) + .version = 1, + // delegates all incoming requests to callback functions + .ops = gnl_foobar_xmpl_ops, + // length of array `gnl_foobar_xmpl_ops` + .n_ops = GNL_FOOBAR_OPS_LEN, + // attribute policy (for validation of messages). Enforced automatically, except ".validate" in + // corresponding ".ops"-field is set accordingly. + .policy = gnl_foobar_xmpl_policy, + // Number of attributes / bounds check for policy (array length) + .maxattr = GNL_FOOBAR_XMPL_ATTRIBUTE_ENUM_LEN, + // Owning Kernel module of the Netlink family we register. + .module = THIS_MODULE, + + // Actually not necessary because this memory region would be zeroed anyway during module load, + // but this way one sees all possible options. + + // if your application must handle multiple netlink calls in parallel (where one should not block the next + // from starting), set this to true! otherwise all netlink calls are mutually exclusive + .parallel_ops = 0, + // set to true if the family can handle network namespaces and should be presented in all of them + .netnsok = 0, + // called before an operation's doit callback, it may do additional, common, filtering and return an error + .pre_doit = NULL, + // called after an operation's doit callback, it may undo operations done by pre_doit, for example release locks + .post_doit = NULL, +}; + +/** + * Regular ".doit"-callback function if a Generic Netlink with command `GNL_FOOBAR_XMPL_C_ECHO` is received. + * Please look into the comments where this is used as ".doit" callback above in + * `struct genl_ops gnl_foobar_xmpl_ops[]` for more information about ".doit" callbacks. +*/ +int gnl_cb_echo_doit(struct sk_buff *sender_skb, struct genl_info *info) { + struct nlattr *na; + struct sk_buff *reply_skb; + int rc; + void *msg_head; + char *recv_msg; + + pr_info("%s() invoked\n", __func__); + + if (info == NULL) { + // should never happen + pr_err("An error occurred in %s():\n", __func__); + return -EINVAL; + } + + /* + * For each attribute there is an index in info->attrs which points to a nlattr structure + * in this structure the data is stored. + */ + na = info->attrs[GNL_FOOBAR_XMPL_A_MSG]; + + if (!na) { + pr_err("no info->attrs[%i]\n", GNL_FOOBAR_XMPL_A_MSG); + return -EINVAL; // we return here because we expect to recv a msg + } + + recv_msg = (char *) nla_data(na); + if (recv_msg == NULL) { + pr_err("error while receiving data\n"); + } else { + pr_info("received: '%s'\n", recv_msg); + } + + + // Send a message back + // --------------------- + + // Allocate some memory, since the size is not yet known use NLMSG_GOODSIZE + reply_skb = genlmsg_new(NLMSG_GOODSIZE, GFP_KERNEL); + if (reply_skb == NULL) { + pr_err("An error occurred in %s():\n", __func__); + return -ENOMEM; + } + + // Create the message headers + + // Add header to netlink message; + // afterwards the buffer looks like this: + // ---------------------------------- + // | netlink header | + // | generic netlink header | + // | | + // ---------------------------------- + msg_head = genlmsg_put(reply_skb, // buffer for netlink message: struct sk_buff * + // According to my findings: this is not used for routing + // This can be used in an application specific way to target + // different endpoints within the same user application + // but general rule: just put sender port id here + info->snd_portid, // sending port (not process) id: int + info->snd_seq + 1, // sequence number: int (might be used by receiver, but not mandatory) + &gnl_foobar_xmpl_family, // struct genl_family * + 0, // flags for Netlink header: int; application specific and not mandatory + // The command/operation (u8) from `enum GNL_FOOBAR_XMPL_COMMAND` for Generic Netlink header + GNL_FOOBAR_XMPL_C_ECHO_MSG + ); + if (msg_head == NULL) { + rc = ENOMEM; + pr_err("An error occurred in %s():\n", __func__); + return -rc; + } + + // Add a GNL_FOOBAR_XMPL_A_MSG attribute (actual value/payload to be sent) + // echo the value we just received + rc = nla_put_string(reply_skb, GNL_FOOBAR_XMPL_A_MSG, recv_msg); + if (rc != 0) { + pr_err("An error occurred in %s():\n", __func__); + return -rc; + } + + // Finalize the message: + // Corrects the netlink message header (length) to include the appended + // attributes. Only necessary if attributes have been added to the message. + genlmsg_end(reply_skb, msg_head); + + // Send the message back + rc = genlmsg_reply(reply_skb, info); + // same as genlmsg_unicast(genl_info_net(info), reply_skb, info->snd_portid) + // see https://elixir.bootlin.com/linux/v5.8.9/source/include/net/genetlink.h#L326 + + if (rc != 0) { + pr_err("An error occurred in %s():\n", __func__); + return -rc; + } + return 0; +} + +/** + * ".dumpit"-callback function if a Generic Netlink with command ECHO_MSG and flag `NLM_F_DUMP` is received. + * Please look into the comments where this is used as ".dumpit" callback above in + * `struct genl_ops gnl_foobar_xmpl_ops[]` for more information about ".dumpit" callbacks. + * + * A dump must be understand of "give me all data of a given entity" + * rather than a "dump of the netlink message itself" for debugging etc! + * + * This handler requires `gnl_cb_echo_dumpit_before` to run before a dump and `gnl_cb_echo_dumpit_after` after a dump. + * + * For the sake of simplicity, we use the ECHO_MSG command for the dump. In fact, we don't expect a + * MSG-Attribute here, unlike the regular ECHO_MSG handler. We reply with a dump of + * "all messages that we got" (application specific, hard coded in this example). +*/ +int gnl_cb_echo_dumpit(struct sk_buff *pre_allocated_skb, struct netlink_callback *cb) { + void *msg_head; + int ret; + static const char HELLO_FROM_DUMPIT_MSG[] = "You set the flag NLM_F_DUMP; this message is " + "brought to you by .dumpit callback :)"; + pr_info("Called %s()\n", __func__); + + if (dumpit_cb_progress_data.runs_to_go == 0) { + pr_info("no more data to send in dumpit cb\n"); + // mark that dump is done; + return 0; + } else { + dumpit_cb_progress_data.runs_to_go--; + pr_info("%s: %d more runs to do\n", __func__, dumpit_cb_progress_data.runs_to_go); + } + + msg_head = genlmsg_put(pre_allocated_skb, // buffer for netlink message: struct sk_buff * + // According to my findings: this is not used for routing + // This can be used in an application specific way to target + // different endpoints within the same user application + // but general rule: just put sender port id here + cb->nlh->nlmsg_pid, // sending port (not process) id: int + // sequence number: int (might be used by receiver, but not mandatory) + // sequence 0, 1, 2... + dumpit_cb_progress_data.total_runs - dumpit_cb_progress_data.runs_to_go - 1, + &gnl_foobar_xmpl_family, // struct genl_family * + 0, // flags: int (for netlink header); we don't check them in the userland; application specific + // this way we can trigger a specific command/callback on the receiving side or imply + // on which type of command we are currently answering; this is application specific + GNL_FOOBAR_XMPL_C_ECHO_MSG // cmd: u8 (for generic netlink header); + ); + if (msg_head == NULL) { + pr_info("An error occurred in %s(): genlmsg_put() failed\n", __func__); + return -ENOMEM; + } + ret = nla_put_string( + pre_allocated_skb, + GNL_FOOBAR_XMPL_A_MSG, + HELLO_FROM_DUMPIT_MSG + ); + if (ret < 0) { + pr_info("An error occurred in %s():\n", __func__); + return ret; + } + genlmsg_end(pre_allocated_skb, msg_head); + + // return the length of data we wrote into the pre-allocated buffer + return pre_allocated_skb->len; +} + +/** + * Regular ".doit"-callback function if a Generic Netlink with command `GNL_FOOBAR_XMPL_C_REPLY_WITH_NLMSG_ERR` is received. + * Please look into the comments where this is used as ".doit" callback above in + * `struct genl_ops gnl_foobar_xmpl_ops[]` for more information about ".doit" callbacks. +*/ +int gnl_cb_doit_reply_with_nlmsg_err(struct sk_buff *sender_skb, struct genl_info *info) { + pr_info("%s() invoked, a NLMSG_ERR response will be sent back\n", __func__); + + /* + * Generic Netlink is smart enough and sends a NLMSG_ERR reply automatically as reply + * Quote from https://lwn.net/Articles/208755/: + * "The 'doit' handler should do whatever processing is necessary and return + * zero on success, or a negative value on failure. Negative return values + * will cause a NLMSG_ERROR message to be sent while a zero return value will + * only cause a NLMSG_ERROR message to be sent if the request is received with + * the NLM_F_ACK flag set." + * + * You can find this in Linux code here: + * https://elixir.bootlin.com/linux/v5.11/source/net/netlink/af_netlink.c#L2499 + * + * One can find more information about NLMSG_ERROR responses and how to handle them + * in userland in the manpage: https://man7.org/linux/man-pages/man7/netlink.7.html + */ + return -EINVAL; +} + +/** + * Called before a dump with `gnl_cb_echo_dumpit()` starts. + * See where this is assigned in `struct genl_ops gnl_foobar_xmpl_ops[]` as + * `.start` callback for more comments. + * + * @return success (0) or error. + */ +int gnl_cb_echo_dumpit_before(struct netlink_callback *cb) { + int ret; + static int unsigned const dump_runs = 3; + pr_info("%s: dump started. acquire lock. initialize dump runs_to_go (number of receives userland can make) to %d runs\n", __func__, dump_runs); + // Lock the mutex like mutex_lock(), and return 0 if the mutex has been acquired or sleep until the mutex becomes available + // If a signal arrives while waiting for the lock then this function returns -EINTR. + ret = mutex_lock_interruptible(&dumpit_cb_progress_data.mtx); + if (ret != 0) { + pr_err("Failed to get lock!\n"); + return ret; + } + dumpit_cb_progress_data.total_runs = dump_runs; + dumpit_cb_progress_data.runs_to_go = dump_runs; + return 0; + +} + +/** + * Called before a dump with `gnl_cb_echo_dumpit()` starts. + * See where this is assigned in `struct genl_ops gnl_foobar_xmpl_ops[]` as + * `.start` callback for more comments. + * + * @return success (0) or error. + */ +int gnl_cb_echo_dumpit_before_after(struct netlink_callback *cb) { + pr_info("%s: dump done. release lock\n", __func__); + mutex_unlock(&dumpit_cb_progress_data.mtx); + return 0; +} + +/** + * Module/driver initializer. Called on module load/insertion. + * + * @return success (0) or error code. + */ +static int __init gnl_foobar_xmpl_module_init(void) { + int rc; + pr_info("Generic Netlink Example Module inserted.\n"); + + // Register family with its operations and policies + rc = genl_register_family(&gnl_foobar_xmpl_family); + if (rc != 0) { + pr_err("FAILED: genl_register_family(): %i\n", rc); + pr_err("An error occurred while inserting the generic netlink example module\n"); + return -1; + } else { + pr_info("successfully registered custom Netlink family '" FAMILY_NAME "' using Generic Netlink.\n"); + } + + mutex_init(&dumpit_cb_progress_data.mtx); + + return 0; +} + +/** + * Module/driver uninitializer. Called on module unload/removal. + * + * @return success (0) or error code. + */ +static void __exit gnl_foobar_xmpl_module_exit(void) { + int ret; + pr_info("Generic Netlink Example Module unloaded.\n"); + + // Unregister the family + ret = genl_unregister_family(&gnl_foobar_xmpl_family); + if (ret != 0) { + pr_err("genl_unregister_family() failed: %i\n", ret); + return; + } else { + pr_info("successfully unregistered custom Netlink family '" FAMILY_NAME "' using Generic Netlink.\n"); + } + + mutex_destroy(&dumpit_cb_progress_data.mtx); +} + +module_init(gnl_foobar_xmpl_module_init); +module_exit(gnl_foobar_xmpl_module_exit); \ No newline at end of file diff --git a/recipes-vrpmdv/recipes-base/vrpmdv-mon-tty/save/rpmsg_sdb.csva b/recipes-vrpmdv/recipes-base/vrpmdv-mon-tty/save/rpmsg_sdb.csva new file mode 100644 index 0000000..857a42c --- /dev/null +++ b/recipes-vrpmdv/recipes-base/vrpmdv-mon-tty/save/rpmsg_sdb.csva @@ -0,0 +1,536 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (C) STMicroelectronics 2019 - All Rights Reserved + * Author: Jean-Philippe Romain + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define RPMSG_SDB_DRIVER_VERSION "1.0" + +/* + * Static global variables + */ +static const char rpmsg_sdb_driver_name[] = "stm32-rpmsg-sdb"; + +static int LastBufferId; + +struct rpmsg_sdb_ioctl_set_efd { + int bufferId, eventfd; +}; + +struct rpmsg_sdb_ioctl_get_data_size { + int bufferId; + uint32_t size; +}; + +/* ioctl numbers */ +/* _IOW means userland is writing and kernel is reading */ +/* _IOR means userland is reading and kernel is writing */ +/* _IOWR means userland and kernel can both read and write */ +#define RPMSG_SDB_IOCTL_SET_EFD _IOW('R', 0x00, struct rpmsg_sdb_ioctl_set_efd *) +#define RPMSG_SDB_IOCTL_GET_DATA_SIZE _IOWR('R', 0x01, struct rpmsg_sdb_ioctl_get_data_size *) + +struct sdb_buf_t { + int index; /* index of buffer */ + size_t size; /* buffer size */ + size_t writing_size; /* size of data written by copro */ + dma_addr_t paddr; /* physical address*/ + void *vaddr; /* virtual address */ + void *uaddr; /* mapped address for userland */ + struct eventfd_ctx *efd_ctx; /* eventfd context */ + struct list_head buflist; /* reference in the buffers list */ +}; + +struct rpmsg_sdb_t { + struct mutex mutex; /* mutex to protect the ioctls */ + struct miscdevice mdev; /* misc device ref */ + struct rpmsg_device *rpdev; /* handle rpmsg device */ + struct list_head buffer_list; /* buffer instances list */ +}; + +struct device *rpmsg_sdb_dev; + +static int rpmsg_sdb_format_txbuf_string(struct sdb_buf_t *buffer, char *bufinfo_str, size_t bufinfo_str_size) +{ + pr_debug("rpmsg_sdb(%s): Buffer index:%d, addr:%08x, size:%08x\n", + __func__, + buffer->index, + buffer->paddr, + buffer->size); + return snprintf(bufinfo_str, bufinfo_str_size, "B%dA%08xL%08x", buffer->index, buffer->paddr, buffer->size); +} + +static long rpmsg_sdb_decode_rxbuf_string(char *rxbuf_str, int *buffer_id, size_t *size) +{ + int ret = 0; + char *sub_str; + long bsize; + long bufid; + const char delimiter[2] = {'L','\0'}; + + pr_debug("rpmsg_sdb(%s): rxbuf_str:%s\n", __func__, rxbuf_str); + + /* Get first part containing the buffer id */ + sub_str = strsep(&rxbuf_str, delimiter); + + pr_debug("rpmsg_sdb(%s): sub_str:%s\n", __func__, sub_str); + + /* Save Buffer id and size: template BxLyyyyyyyy*/ + ret = kstrtol(&sub_str[1], 10, &bufid); + if (ret < 0) { + pr_err("rpmsg_sdb(ERROR): Extract of buffer id failed(%d)", ret); + goto out; + } + + ret = kstrtol(&rxbuf_str[2], 16, &bsize); + if (ret < 0) { + pr_err("rpmsg_sdb(ERROR): Extract of buffer size failed(%d)", ret); + goto out; + } + + *size = (size_t)bsize; + *buffer_id = (int)bufid; + +out: + return ret; +} + +static int rpmsg_sdb_send_buf_info(struct rpmsg_sdb_t *rpmsg_sdb, struct sdb_buf_t *buffer) +{ + int count = 0, ret = 0; + const unsigned char *tbuf; + char mybuf[32]; + int msg_size; + struct rpmsg_device *_rpdev; + + _rpdev = rpmsg_sdb->rpdev; + msg_size = rpmsg_get_buffer_size(_rpdev->ept); + + if (msg_size < 0) + return msg_size; + + count = rpmsg_sdb_format_txbuf_string(buffer, mybuf, 32); + tbuf = &mybuf[0]; + + do { + /* send a message to our remote processor */ + ret = rpmsg_send(_rpdev->ept, (void *)tbuf, + count > msg_size ? msg_size : count); + if (ret) { + dev_err(&_rpdev->dev, "rpmsg_send failed: %d\n", ret); + return ret; + } + + if (count > msg_size) { + count -= msg_size; + tbuf += msg_size; + } else { + count = 0; + } + } while (count > 0); + + return count; +} + +static int rpmsg_sdb_mmap(struct file *file, struct vm_area_struct *vma) +{ + unsigned long vsize = vma->vm_end - vma->vm_start; + unsigned long size = PAGE_ALIGN(vsize); + unsigned long NumPages = size >> PAGE_SHIFT; + unsigned long align = get_order(size); + pgprot_t prot = pgprot_noncached(vma->vm_page_prot); + struct rpmsg_sdb_t *_rpmsg_sdb; + struct sdb_buf_t *_buffer; + + if (align > CONFIG_CMA_ALIGNMENT) + align = CONFIG_CMA_ALIGNMENT; + + if (rpmsg_sdb_dev == NULL) + return -ENOMEM; + + rpmsg_sdb_dev->coherent_dma_mask = DMA_BIT_MASK(32); + rpmsg_sdb_dev->dma_mask = &rpmsg_sdb_dev->coherent_dma_mask; + + _rpmsg_sdb = container_of(file->private_data, struct rpmsg_sdb_t, + mdev); + + /* Field the last buffer entry which is the last one created */ + if (!list_empty(&_rpmsg_sdb->buffer_list)) { + _buffer = list_last_entry(&_rpmsg_sdb->buffer_list, + struct sdb_buf_t, buflist); + + _buffer->uaddr = NULL; + _buffer->size = NumPages * PAGE_SIZE; + _buffer->writing_size = -1; + _buffer->vaddr = dma_alloc_coherent(rpmsg_sdb_dev, + _buffer->size, + &_buffer->paddr, + GFP_KERNEL); + + if (!_buffer->vaddr) { + pr_err("rpmsg_sdb(ERROR): Memory allocation issue\n"); + return -ENOMEM; + } + + pr_debug("rpmsg_sdb(%s): dma_alloc_coherent done - paddr[%d]:%x - vaddr[%d]:%p\n", + __func__, + _buffer->index, + _buffer->paddr, + _buffer->index, + _buffer->vaddr); + + /* Get address for userland */ + if (remap_pfn_range(vma, vma->vm_start, + (_buffer->paddr >> PAGE_SHIFT) + vma->vm_pgoff, + size, prot)) + return -EAGAIN; + + _buffer->uaddr = (void *)vma->vm_start; + + /* Send information to remote proc */ + rpmsg_sdb_send_buf_info(_rpmsg_sdb, _buffer); + } else { + dev_err(rpmsg_sdb_dev, "No existing buffer entry exist in the list !!!"); + return -EINVAL; + } + + /* Increment for number of requested buffer */ + LastBufferId++; + + return 0; +} + +/** + * rpmsg_sdb_open - Open Session + * + * @inode: inode struct + * @file: file struct + * + * Return: + * 0 - Success + * Non-zero - Failure + */ +static int rpmsg_sdb_open(struct inode *inode, struct file *file) +{ + struct rpmsg_sdb_t *_rpmsg_sdb; + + _rpmsg_sdb = container_of(file->private_data, struct rpmsg_sdb_t, + mdev); + + /* Initialize the buffer list*/ + INIT_LIST_HEAD(&_rpmsg_sdb->buffer_list); + + mutex_init(&_rpmsg_sdb->mutex); + + return 0; +} + +/** + * rpmsg_sdb_close - Close Session + * + * @inode: inode struct + * @file: file struct + * + * Return: + * 0 - Success + * Non-zero - Failure + */ +static int rpmsg_sdb_close(struct inode *inode, struct file *file) +{ + struct rpmsg_sdb_t *_rpmsg_sdb; + struct sdb_buf_t *pos, *next; + + _rpmsg_sdb = container_of(file->private_data, struct rpmsg_sdb_t, + mdev); + + list_for_each_entry_safe(pos, next, &_rpmsg_sdb->buffer_list, buflist) { + /* Free the CMA allocation */ + pr_debug("rpmsg_sdb(%s): Free the CMA allocation: pos->size:%08x, pos->vaddr:%08x, pos->paddr:%08x\n", + __func__, + pos->size, + pos->vaddr, + pos->paddr); + + dma_free_coherent(rpmsg_sdb_dev, pos->size, pos->vaddr, + pos->paddr); + /* Remove the buffer from the list */ + list_del(&pos->buflist); + /* Free the buffer */ + kfree(pos); + } + + /* Reset LastBufferId */ + LastBufferId = 0; + + return 0; +} + +/** + * rpmsg_sdb_ioctl - IOCTL + * + * @session: ibmvmc_file_session struct + * @cmd: cmd field + * @arg: Argument field + * + * Return: + * 0 - Success + * Non-zero - Failure + */ +static long rpmsg_sdb_ioctl(struct file *file, unsigned int cmd, unsigned long arg) +{ + int idx = 0; + + struct rpmsg_sdb_t *_rpmsg_sdb; + struct sdb_buf_t *buffer, *lastbuffer; + + struct list_head *pos; + struct sdb_buf_t *datastructureptr = NULL; + + struct rpmsg_sdb_ioctl_set_efd q_set_efd; + struct rpmsg_sdb_ioctl_get_data_size q_get_dat_size; + + void __user *argp = (void __user *)arg; + + _rpmsg_sdb = container_of(file->private_data, struct rpmsg_sdb_t, + mdev); + + switch (cmd) { + case RPMSG_SDB_IOCTL_SET_EFD: + mutex_lock(&_rpmsg_sdb->mutex); + + /* Get index from the last buffer in the list */ + if (!list_empty(&_rpmsg_sdb->buffer_list)) { + lastbuffer = list_last_entry(&_rpmsg_sdb->buffer_list, struct sdb_buf_t, buflist); + idx = lastbuffer->index; + + /* Check last index was properly initiated*/ + if (lastbuffer->vaddr == NULL) { + pr_err("rpmsg_sdb(ERROR): RPMSG_SDB_IOCTL_SET_EFD - previous buffer was not allocated\n"); + mutex_unlock(&_rpmsg_sdb->mutex); + return -EBADE; + } + + /* increment this index for the next buffer creation*/ + idx++; + } + + if (copy_from_user(&q_set_efd, (struct rpmsg_sdb_ioctl_set_efd *)argp, + sizeof(struct rpmsg_sdb_ioctl_set_efd))) { + pr_err("rpmsg_sdb(ERROR): RPMSG_SDB_IOCTL_SET_EFD - copy from user failed\n"); + mutex_unlock(&_rpmsg_sdb->mutex); + return -EFAULT; + } + + /* create a new buffer which will be added in the buffer list */ + buffer = kmalloc(sizeof(struct sdb_buf_t), GFP_KERNEL); + + buffer->index = idx; + buffer->vaddr = NULL; + buffer->efd_ctx = eventfd_ctx_fdget(q_set_efd.eventfd); + list_add_tail(&buffer->buflist, &_rpmsg_sdb->buffer_list); + + mutex_unlock(&_rpmsg_sdb->mutex); + break; + + case RPMSG_SDB_IOCTL_GET_DATA_SIZE: + if (copy_from_user(&q_get_dat_size, (struct rpmsg_sdb_ioctl_get_data_size *)argp, + sizeof(struct rpmsg_sdb_ioctl_get_data_size))) { + pr_err("rpmsg_sdb(ERROR): RPMSG_SDB_IOCTL_GET_DATA_SIZE - copy from user failed\n"); + return -EFAULT; + } + + /* Get the index of the requested buffer and then look-up in the buffer list*/ + idx = q_get_dat_size.bufferId; + + list_for_each(pos, &_rpmsg_sdb->buffer_list) + { + datastructureptr = list_entry(pos, struct sdb_buf_t, buflist); + if (datastructureptr->index == idx) { + /* Get the writing size*/ + q_get_dat_size.size = datastructureptr->writing_size; + break; + } + } + + if (copy_to_user((struct rpmsg_sdb_ioctl_get_data_size *)argp, &q_get_dat_size, + sizeof(struct rpmsg_sdb_ioctl_get_data_size))) { + pr_err("rpmsg_sdb(ERROR): RPMSG_SDB_IOCTL_GET_DATA_SIZE - copy to user failed\n"); + return -EFAULT; + } + + /* Reset the writing size*/ + datastructureptr->writing_size = -1; + + break; + default: + return -EINVAL; + } + + return 0; +} + +static const struct file_operations rpmsg_sdb_fops = { + .owner = THIS_MODULE, + .unlocked_ioctl = rpmsg_sdb_ioctl, + .mmap = rpmsg_sdb_mmap, + .open = rpmsg_sdb_open, + .release = rpmsg_sdb_close, +}; + +static int rpmsg_sdb_drv_cb(struct rpmsg_device *rpdev, void *data, int len, + void *priv, u32 src) +{ + int ret = 0; + int buffer_id = 0; + size_t buffer_size; + char *rpmsg_RxBuf; + struct list_head *pos; + struct sdb_buf_t *datastructureptr = NULL; + + struct rpmsg_sdb_t *drv = dev_get_drvdata(&rpdev->dev); + + if (len == 0) { + dev_err(rpmsg_sdb_dev, "(%s) Empty lenght requested\n", __func__); + return -EINVAL; + } + + //dev_err(rpmsg_sdb_dev, "(%s) lenght: %d\n", __func__,len); + + rpmsg_RxBuf = (char *)kmalloc(len+1, GFP_KERNEL); + memcpy(rpmsg_RxBuf, data, len); + + rpmsg_RxBuf[len] = 0; + + ret = rpmsg_sdb_decode_rxbuf_string(rpmsg_RxBuf, &buffer_id, &buffer_size); + kfree(rpmsg_RxBuf); + if (ret < 0) + goto out; + + if (buffer_id > LastBufferId) { + ret = -EINVAL; + goto out; + } + + /* Signal to User space application */ + list_for_each(pos, &drv->buffer_list) + { + datastructureptr = list_entry(pos, struct sdb_buf_t, buflist); + if (datastructureptr->index == buffer_id) { + datastructureptr->writing_size = buffer_size; + + if (datastructureptr->writing_size > datastructureptr->size) { + dev_err(rpmsg_sdb_dev, "(%s) Writing size is bigger than buffer size\n", __func__); + ret = -EINVAL; + goto out; + } + + eventfd_signal(datastructureptr->efd_ctx, 1); + break; + } + /* TODO: quid if nothing find during the loop ? */ + } + +out: + return ret; +} + +static int rpmsg_sdb_drv_probe(struct rpmsg_device *rpdev) +{ + int ret = 0; + struct device *dev = &rpdev->dev; + struct rpmsg_sdb_t *rpmsg_sdb; + + rpmsg_sdb = devm_kzalloc(dev, sizeof(*rpmsg_sdb), GFP_KERNEL); + if (!rpmsg_sdb) + return -ENOMEM; + + mutex_init(&rpmsg_sdb->mutex); + + rpmsg_sdb->rpdev = rpdev; + + rpmsg_sdb->mdev.name = "rpmsg-sdb"; + rpmsg_sdb->mdev.minor = MISC_DYNAMIC_MINOR; + rpmsg_sdb->mdev.fops = &rpmsg_sdb_fops; + + dev_set_drvdata(&rpdev->dev, rpmsg_sdb); + + /* Register misc device */ + ret = misc_register(&rpmsg_sdb->mdev); + + if (ret) { + dev_err(dev, "Failed to register device\n"); + goto err_out; + } + + rpmsg_sdb_dev = rpmsg_sdb->mdev.this_device; + + dev_info(dev, "%s probed\n", rpmsg_sdb_driver_name); + +err_out: + return ret; +} + +static void rpmsg_sdb_drv_remove(struct rpmsg_device *rpmsgdev) +{ + struct rpmsg_sdb_t *drv = dev_get_drvdata(&rpmsgdev->dev); + + misc_deregister(&drv->mdev); +} + +static struct rpmsg_device_id rpmsg_driver_sdb_id_table[] = { + { .name = "rpmsg-sdb-channel" }, + { }, +}; +MODULE_DEVICE_TABLE(rpmsg, rpmsg_driver_sdb_id_table); + +static struct rpmsg_driver rpmsg_sdb_rmpsg_drv = { + .drv.name = KBUILD_MODNAME, + .drv.owner = THIS_MODULE, + .id_table = rpmsg_driver_sdb_id_table, + .probe = rpmsg_sdb_drv_probe, + .callback = rpmsg_sdb_drv_cb, + .remove = rpmsg_sdb_drv_remove, +}; + +static int __init rpmsg_sdb_drv_init(void) +{ + int ret = 0; + + /* Register rpmsg device */ + ret = register_rpmsg_driver(&rpmsg_sdb_rmpsg_drv); + + if (ret) { + pr_err("rpmsg_sdb(ERROR): Failed to register device\n"); + return ret; + } + + pr_info("rpmsg_sdb: Init done\n"); + + return ret; +} + +static void __exit rpmsg_sdb_drv_exit(void) +{ + unregister_rpmsg_driver(&rpmsg_sdb_rmpsg_drv); + pr_info("rpmsg_sdb: Exit\n"); +} + +module_init(rpmsg_sdb_drv_init); +module_exit(rpmsg_sdb_drv_exit); + + +MODULE_AUTHOR("Jean-Philippe Romain "); +MODULE_DESCRIPTION("shared data buffer over RPMSG"); +MODULE_VERSION(RPMSG_SDB_DRIVER_VERSION); +MODULE_LICENSE("GPL v2"); \ No newline at end of file diff --git a/recipes-vrpmdv/recipes-base/vrpmdv-mon-tty/save/ttyrpmsg.csave b/recipes-vrpmdv/recipes-base/vrpmdv-mon-tty/save/ttyrpmsg.csave new file mode 100644 index 0000000..ec89035 --- /dev/null +++ b/recipes-vrpmdv/recipes-base/vrpmdv-mon-tty/save/ttyrpmsg.csave @@ -0,0 +1,287 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2021 STMicroelectronics - All Rights Reserved + * + * The rpmsg tty driver implements serial communication on the RPMsg bus to makes + * possible for user-space programs to send and receive rpmsg messages as a standard + * tty protocol. + * + * The remote processor can instantiate a new tty by requesting a "rpmsg-tty" RPMsg service. + * The "rpmsg-tty" service is directly used for data exchange. No flow control is implemented yet. + */ + +#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt + +#include +#include +#include +#include +#include + +#define RPMSG_TTY_NAME "ttyRPMSG" +#define MAX_TTY_RPMSG 32 + +static DEFINE_IDR(tty_idr); /* tty instance id */ +static DEFINE_MUTEX(idr_lock); /* protects tty_idr */ + +static struct tty_driver *rpmsg_tty_driver; + +struct rpmsg_tty_port { + struct tty_port port; /* TTY port data */ + int id; /* TTY rpmsg index */ + struct rpmsg_device *rpdev; /* rpmsg device */ +}; + +static int rpmsg_tty_cb(struct rpmsg_device *rpdev, void *data, int len, void *priv, u32 src) +{ + struct rpmsg_tty_port *cport = dev_get_drvdata(&rpdev->dev); + int copied; + + if (!len) + return -EINVAL; + copied = tty_insert_flip_string(&cport->port, data, len); + if (copied != len) + dev_err_ratelimited(&rpdev->dev, "Trunc buffer: available space is %d\n", copied); + tty_flip_buffer_push(&cport->port); + + return 0; +} + +static int rpmsg_tty_install(struct tty_driver *driver, struct tty_struct *tty) +{ + struct rpmsg_tty_port *cport = idr_find(&tty_idr, tty->index); + struct tty_port *port; + + tty->driver_data = cport; + + port = tty_port_get(&cport->port); + return tty_port_install(port, driver, tty); +} + +static void rpmsg_tty_cleanup(struct tty_struct *tty) +{ + tty_port_put(tty->port); +} + +static int rpmsg_tty_open(struct tty_struct *tty, struct file *filp) +{ + return tty_port_open(tty->port, tty, filp); +} + +static void rpmsg_tty_close(struct tty_struct *tty, struct file *filp) +{ + return tty_port_close(tty->port, tty, filp); +} + +static int rpmsg_tty_write(struct tty_struct *tty, const u8 *buf, int len) +{ + struct rpmsg_tty_port *cport = tty->driver_data; + struct rpmsg_device *rpdev; + int msg_max_size, msg_size; + int ret; + + rpdev = cport->rpdev; + + msg_max_size = rpmsg_get_mtu(rpdev->ept); + if (msg_max_size < 0) + return msg_max_size; + + msg_size = min(len, msg_max_size); + + /* + * Use rpmsg_trysend instead of rpmsg_send to send the message so the caller is not + * hung until a rpmsg buffer is available. In such case rpmsg_trysend returns -ENOMEM. + */ + ret = rpmsg_trysend(rpdev->ept, (void *)buf, msg_size); + if (ret) { + dev_dbg_ratelimited(&rpdev->dev, "rpmsg_send failed: %d\n", ret); + return ret; + } + + return msg_size; +} + +static unsigned int rpmsg_tty_write_room(struct tty_struct *tty) +{ + struct rpmsg_tty_port *cport = tty->driver_data; + int size; + + size = rpmsg_get_mtu(cport->rpdev->ept); + if (size < 0) + return 0; + + return size; +} + +static void rpmsg_tty_hangup(struct tty_struct *tty) +{ + tty_port_hangup(tty->port); +} + +static const struct tty_operations rpmsg_tty_ops = { + .install = rpmsg_tty_install, + .open = rpmsg_tty_open, + .close = rpmsg_tty_close, + .write = rpmsg_tty_write, + .write_room = rpmsg_tty_write_room, + .hangup = rpmsg_tty_hangup, + .cleanup = rpmsg_tty_cleanup, +}; + +static struct rpmsg_tty_port *rpmsg_tty_alloc_cport(void) +{ + struct rpmsg_tty_port *cport; + int ret; + + cport = kzalloc(sizeof(*cport), GFP_KERNEL); + if (!cport) + return ERR_PTR(-ENOMEM); + + mutex_lock(&idr_lock); + ret = idr_alloc(&tty_idr, cport, 0, MAX_TTY_RPMSG, GFP_KERNEL); + mutex_unlock(&idr_lock); + + if (ret < 0) { + kfree(cport); + return ERR_PTR(ret); + } + + cport->id = ret; + + return cport; +} + +static void rpmsg_tty_destruct_port(struct tty_port *port) +{ + struct rpmsg_tty_port *cport = container_of(port, struct rpmsg_tty_port, port); + + mutex_lock(&idr_lock); + idr_remove(&tty_idr, cport->id); + mutex_unlock(&idr_lock); + + kfree(cport); +} + +static const struct tty_port_operations rpmsg_tty_port_ops = { + .destruct = rpmsg_tty_destruct_port, +}; + + +static int rpmsg_tty_probe(struct rpmsg_device *rpdev) +{ + struct rpmsg_tty_port *cport; + struct device *dev = &rpdev->dev; + struct device *tty_dev; + int ret; + + cport = rpmsg_tty_alloc_cport(); + if (IS_ERR(cport)) + return dev_err_probe(dev, PTR_ERR(cport), "Failed to alloc tty port\n"); + + tty_port_init(&cport->port); + cport->port.ops = &rpmsg_tty_port_ops; + + tty_dev = tty_port_register_device(&cport->port, rpmsg_tty_driver, + cport->id, dev); + if (IS_ERR(tty_dev)) { + ret = dev_err_probe(dev, PTR_ERR(tty_dev), "Failed to register tty port\n"); + tty_port_put(&cport->port); + return ret; + } + + cport->rpdev = rpdev; + + dev_set_drvdata(dev, cport); + + dev_dbg(dev, "New channel: 0x%x -> 0x%x: " RPMSG_TTY_NAME "%d\n", + rpdev->src, rpdev->dst, cport->id); + + return 0; +} + +static void rpmsg_tty_remove(struct rpmsg_device *rpdev) +{ + struct rpmsg_tty_port *cport = dev_get_drvdata(&rpdev->dev); + + dev_dbg(&rpdev->dev, "Removing rpmsg tty device %d\n", cport->id); + + /* User hang up to release the tty */ + tty_port_tty_hangup(&cport->port, false); + + tty_unregister_device(rpmsg_tty_driver, cport->id); + + tty_port_put(&cport->port); +} + +static struct rpmsg_device_id rpmsg_driver_tty_id_table[] = { + { .name = "rpmsg-tty" }, + { }, +}; +MODULE_DEVICE_TABLE(rpmsg, rpmsg_driver_tty_id_table); + +static struct rpmsg_driver rpmsg_tty_rpmsg_drv = { + .drv.name = KBUILD_MODNAME, + .id_table = rpmsg_driver_tty_id_table, + .probe = rpmsg_tty_probe, + .callback = rpmsg_tty_cb, + .remove = rpmsg_tty_remove, +}; + +static int __init rpmsg_tty_init(void) +{ + int ret; + + rpmsg_tty_driver = tty_alloc_driver(MAX_TTY_RPMSG, TTY_DRIVER_REAL_RAW | + TTY_DRIVER_DYNAMIC_DEV); + if (IS_ERR(rpmsg_tty_driver)) + return PTR_ERR(rpmsg_tty_driver); + + rpmsg_tty_driver->driver_name = "rpmsg_tty"; + rpmsg_tty_driver->name = RPMSG_TTY_NAME; + rpmsg_tty_driver->major = 0; + rpmsg_tty_driver->type = TTY_DRIVER_TYPE_CONSOLE; + + /* Disable unused mode by default */ + rpmsg_tty_driver->init_termios = tty_std_termios; + rpmsg_tty_driver->init_termios.c_lflag &= ~(ECHO | ICANON); + rpmsg_tty_driver->init_termios.c_oflag &= ~(OPOST | ONLCR); + + tty_set_operations(rpmsg_tty_driver, &rpmsg_tty_ops); + + ret = tty_register_driver(rpmsg_tty_driver); + if (ret < 0) { + pr_err("Couldn't install driver: %d\n", ret); + goto error_put; + } + + ret = register_rpmsg_driver(&rpmsg_tty_rpmsg_drv); + if (ret < 0) { + pr_err("Couldn't register driver: %d\n", ret); + goto error_unregister; + } + + return 0; + +error_unregister: + tty_unregister_driver(rpmsg_tty_driver); + +error_put: + tty_driver_kref_put(rpmsg_tty_driver); + + return ret; +} + +static void __exit rpmsg_tty_exit(void) +{ + unregister_rpmsg_driver(&rpmsg_tty_rpmsg_drv); + tty_unregister_driver(rpmsg_tty_driver); + tty_driver_kref_put(rpmsg_tty_driver); + idr_destroy(&tty_idr); +} + +module_init(rpmsg_tty_init); +module_exit(rpmsg_tty_exit); + +MODULE_AUTHOR("Arnaud Pouliquen "); +MODULE_DESCRIPTION("remote processor messaging tty driver"); +MODULE_LICENSE("GPL v2"); \ No newline at end of file diff --git a/recipes-vrpmdv/recipes-base/vrpmdv-mon-tty/save/vrpmdv-monitoring-controler.cold b/recipes-vrpmdv/recipes-base/vrpmdv-mon-tty/save/vrpmdv-monitoring-controler.cold new file mode 100644 index 0000000..12438fe --- /dev/null +++ b/recipes-vrpmdv/recipes-base/vrpmdv-mon-tty/save/vrpmdv-monitoring-controler.cold @@ -0,0 +1,804 @@ +/* Copyright 2024 Markus Lehr + * + * + * This Software is owned by Markus Lehr. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, + * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A + * PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +// ################################################################################################## +/* + * This is a Linux kernel module/driver called "vrpmdv-monitoring-cmd " which holds the family ID + * and functions to handle the monitoring in a Generic Netlink in the kernel. + * "It registers a Netlink family called "vrpmdv-monitoring_cmd". + * + * + * You can find some more interesting documentation about Generic Netlink here: + * "Generic Netlink HOW-TO based on Jamal's original doc" https://lwn.net/Articles/208755/ + */ + + +#include +#include + +// basic definitions for kernel module development +#include +// definitions for generic netlink families, policies etc; +// transitive dependencies for basic netlink, sockets etc +#include +// required for locking inside the .dumpit callback demonstration +#include +#include + + +// data/vars/enums/properties that describes our protocol that we implement +// on top of generic netlink (like functions we want to trigger on the receiving side) +//#include "vrpmdv-monitoring-cmd.h" + + +/* ######################## CONVENIENT LOGGING MACROS ######################## */ +// (Re)definition of some convenient logging macros from . You can see the logging +// messages when printing the kernel log, e.g. with `$ sudo dmesg`. +// See https://elixir.bootlin.com/linux/latest/source/include/linux/printk.h + +// with this redefinition we can easily prefix all log messages from pr_* logging macros +#ifdef pr_fmt +#undef pr_fmt +#endif +#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt +/* ########################################################################### */ + + +#define MSG "hello Monitoring!" + +static int count = 100; +module_param(count, int, 0644); + +struct instance_data { + int rx_count; +}; + + +// std::chrono::seconds timeoutPeriod = 5; +// auto timePoint = std::chrono::system_clock::now() + timeoutPeriod; + + +/** ----- NETLINK Driver defintion ------------------*/ + + +/** + * Generic Netlink will create a Netlink family with this name. Kernel will asign + * a numeric ID and afterwards we can talk to the family with its ID. To get + * the ID we use Generic Netlink in the userland and pass the family name. + * + * Short for: Generic Netlink VRPMDV Monitoring gnl_foobar_mcmd + */ +#define FAMILY_NAME "gnl-vrpmdv-mcmd" + +/** + * These are the attributes that we want to share in gnl_foobar_xmpl. + * You can understand an attribute as a semantic type. This is + * the payload of Netlink messages. + * GNl: Generic Netlink + */ +enum GNL_VRPMDV_XMPL_ATTRIBUTE { + /** + * 0 is never used (=> UNSPEC), you can also see this in other family definitions in Linux code. + * We do the same, although I'm not sure, if this is really enforced by code. + */ + GNL_VRPMDV_MCMD_A_UNSPEC, + /** We expect a MSG to be a null-terminated C-string. */ + GNL_VRPMDV_MCMD_A_MSG, + /** Unused marker field to get the length/count of enum entries. No real attribute. */ + __GNL_VRPMDV_MCMD_A_MAX, +}; +/** + * Number of elements in `enum GNL_VRPMDV_MCMD_COMMAND`. + */ +#define GNL_VRPMDV_MCMD_ATTRIBUTE_ENUM_LEN (__GNL_VRPMDV_MCMD_A_MAX) +/** + * The number of actual usable attributes in `enum GNL_VRPMDV_MCMD_ATTRIBUTE`. + * This is `GNL_VRPMDV_MCMD_ATTRIBUTE_ENUM_LEN` - 1 because "UNSPEC" is never used. + */ +#define GNL_VRPMDV_MCMD_ATTRIBUTE_COUNT (GNL_VRPMDV_MCMD_ATTRIBUTE_ENUM_LEN - 1) + +/** + * Enumeration of all commands (functions) that our custom protocol on top + * of generic netlink supports. This can be understood as the action that + * we want to trigger on the receiving side. + */ +enum GNL_VRPMDV_MCMD_COMMAND { + /** + * 0 is never used (=> UNSPEC), you can also see this in other family definitions in Linux code. + * We do the same, although I'm not sure, if this is really enforced by code. + */ + GNL_VRPMDV_MCMD_C_UNSPEC, + + // first real command is "1" (>0) + /** + * When this command is received, we expect the attribute `GNL_VRPMDV_MCMD_ATTRIBUTE::GNL_VRPMDV_MCMD_A_MSG` to + * be present in the Generic Netlink request message. The kernel reads the message from the packet and + * sent it to the copro. THe result will be return by creating a new Generic Netlink response message + * with an corresponding attribute/payload. + * + * This command/signaling mechanism is independent of the Netlink flag `NLM_F_ECHO (0x08)`. We use it as + * "echo specific data" instead of return a 1:1 copy of the package, which you could do with + * `NLM_F_ECHO (0x08)` for example. + */ + GNL_VRPMDV_MCMD_C_MSG, + + /** + * Provokes a NLMSG_ERR answer to this request as described in netlink manpage + * (https://man7.org/linux/man-pages/man7/netlink.7.html). + */ + GNL_VRPMDV_MCMD_C_REPLY_WITH_NLMSG_ERR, + + /** Unused marker field to get the length/count of enum entries. No real attribute. */ + __GNL_VRPMDV_MCMD_C_MAX, +}; +/** + * Number of elements in `enum GNL_VRPMDV_MCMD_COMMAND`. + */ +#define GNL_VRPMDV_MCMD_COMMAND_ENUM_LEN (__GNL_VRPMDV_MCMD_C_MAX) +/** + * The number of actual usable commands in `enum GNL_FOOBAR_XMPL_COMMAND`. + * This is `GNL_VRPMDV_MCMD_COMMAND_ENUM_LEN` - 1 because "UNSPEC" is never used. + */ +#define GNL_VRPMDV_MCMD_COMMAND_COUNT (GNL_VRPMDV_MCMD_COMMAND_ENUM_LEN - 1) + +#define NODATARECEIVED 0 +#define DATARECEIVED 1 + +/** + * Data structure required for our .doit callback handler to + * know about the progress of an ongoing cmd execution. + * See the cmd callback handler how it is used. + */ +// struct { +// // from +// /** +// * rpmsg wait for response from copro side. +// */ +// struct mutex sendMTX; +// /** +// * rpmsg wait for response from copro side. +// */ +// struct mutex receiveCV; +// /** +// * Wait Queue: if it is signaled we have received data from copro +// */ +// wait_queue_head_t receive_queue; +// /** +// * Waitflag: 0= no data received, 1 = data received +// */ +// int receive_queue_flag = NODATARECEIVED; +// /** +// * Condition vaiable signal we have received data from copro +// */ +// // std::condition_variable cv; +// // /** +// // * Number that describes how many packets we need to send until we are done +// // * during an ongoing dumpit process. 0 = done. +// // */ +// // int unsigned runs_to_go; +// // /** +// // * Number that describes how many packets per dump are sent in total. +// // * Constant per dump. +// // */ +// // int unsigned total_runs; + +// //the rpmsg device which sends the data to the copro +// struct rpmsg_device *rpdev; /* handle rpmsg device */ +// } cmd_cb_progress_data; + + +struct rpmsg_vrpmdv_mon_t{ + // from + /** + * rpmsg wait for response from copro side. + */ + struct mutex sendMTX; + /** + * rpmsg wait for response from copro side. + */ + struct mutex receiveCV; + /** + * Wait Queue: if it is signaled we have received data from copro + */ + wait_queue_head_t receive_queue; + /** + * Waitflag: 0= no data received, 1 = data received + */ + int receive_queue_flag; + //the rpmsg device which sends the data to the copro + struct rpmsg_device* rpdev; /* handle rpmsg device */ +}; + +struct rpmsg_vrpmdv_mon_t vrpmdv_mon; + + // struct mutex mutex; /* mutex to protect the ioctls */ + // struct miscdevice mdev; /* misc device ref */ + // struct rpmsg_device *rpdev; /* handle rpmsg device */ + // struct list_head buffer_list; /* buffer instances list */ + + + +// Documentation is on the implementation of this function. +int gnl_cb_vrpmdv_doit(struct sk_buff *sender_skb, struct genl_info *info); + +// Documentation is on the implementation of this function. +int gnl_cb_doit_reply_with_nlmsg_err(struct sk_buff *sender_skb, struct genl_info *info); + +/** + * The length of `struct genl_ops gnl_foobar_xmpl_ops[]`. Not necessarily + * the number of commands in `enum GNlFoobarXmplCommand`. It depends on your application logic. + * For example, you can use the same command multiple times and - dependent by flag - + * invoke a different callback handler. In our simple example we just use one .doit callback + * per operation/command. + */ +#define GNL_VRPMDV_OPS_LEN (GNL_VRPMDV_MCMD_COMMAND_COUNT) + +/** + * Array with all operations that our protocol on top of Generic Netlink + * supports. An operation is the glue between a command ("cmd" field in `struct genlmsghdr` of + * received Generic Netlink message) and the corresponding ".doit" callback function. + * See: https://elixir.bootlin.com/linux/v5.11/source/include/net/genetlink.h#L148 + */ +struct genl_ops gnl_vrpmdv_mcmd_ops[GNL_VRPMDV_OPS_LEN] = { + { + /* The "cmd" field in `struct genlmsghdr` of received Generic Netlink message */ + .cmd = GNL_VRPMDV_MCMD_C_MSG, + /* TODO Use case ? */ + .flags = 0, + /* TODO Use case ? */ + .internal_flags = 0, + /* Callback handler when a request with the specified ".cmd" above is received. + * Always validates the payload except one set NO_STRICT_VALIDATION flag in ".validate" + * See: https://elixir.bootlin.com/linux/v5.11/source/net/netlink/genetlink.c#L717 + * + * Quote from: https://lwn.net/Articles/208755 + * "The 'doit' handler should do whatever processing is necessary and return + * zero on success, or a negative value on failure. Negative return values + * will cause a NLMSG_ERROR message to be sent while a zero return value will + * only cause a NLMSG_ERROR message to be sent if the request is received with + * the NLM_F_ACK flag set." + * + * You can find this in Linux code here: + * https://elixir.bootlin.com/linux/v5.11/source/net/netlink/af_netlink.c#L2499 + * + * One can find more information about NLMSG_ERROR responses and how to handle them + * in userland in the manpage: https://man7.org/linux/man-pages/man7/netlink.7.html + * + */ + .doit = gnl_cb_vrpmdv_doit, + /* This callback is similar in use to the standard Netlink 'dumpit' callback. + * The 'dumpit' callback is invoked when a Generic Netlink message is received + * with the NLM_F_DUMP flag set. + * + * A dump can be understand as a "GET ALL DATA OF THE GIVEN ENTITY", i.e. + * the userland can receive as long as the .dumpit callback returns data. + * + * .dumpit is not mandatory, but either it or .doit must be provided, see + * https://elixir.bootlin.com/linux/v5.11/source/net/netlink/genetlink.c#L367 + * + * To be honest I don't know in what use case one should use .dumpit and why + * it is useful, because you can achieve the same also with .doit handlers. + * Anyway, this is just an example/tutorial. + * + * Quote from: https://lwn.net/Articles/208755 + * "The main difference between a 'dumpit' handler and a 'doit' handler is + * that a 'dumpit' handler does not allocate a message buffer for a response; + * a pre-allocated sk_buff is passed to the 'dumpit' handler as the first + * parameter. The 'dumpit' handler should fill the message buffer with the + * appropriate response message and return the size of the sk_buff, + * i.e. sk_buff->len, and the message buffer will automatically be sent to the + * Generic Netlink client that initiated the request. As long as the 'dumpit' + * handler returns a value greater than zero it will be called again with a + * newly allocated message buffer to fill, when the handler has no more data + * to send it should return zero; error conditions are indicated by returning + * a negative value. If necessary, state can be preserved in the + * netlink_callback parameter which is passed to the 'dumpit' handler; the + * netlink_callback parameter values will be preserved across handler calls + * for a single request." + * + * You can see the check for the NLM_F_DUMP-flag here: + * https://elixir.bootlin.com/linux/v5.11/source/net/netlink/genetlink.c#L780 + */ + .dumpit = NULL, //gnl_cb_echo_dumpit, + /* Start callback for dumps. Can be used to lock data structures. */ + .start = NULL, //gnl_cb_echo_dumpit_before, + /* Completion callback for dumps. Can be used for cleanup after a dump and releasing locks. */ + .done = NULL, //gnl_cb_echo_dumpit_before_after, + /* + 0 (= "validate strictly") or value `enum genl_validate_flags` + * see: https://elixir.bootlin.com/linux/v5.11/source/include/net/genetlink.h#L108 + */ + .validate = 0, + }, + { + .cmd = GNL_VRPMDV_MCMD_C_REPLY_WITH_NLMSG_ERR, + .flags = 0, + .internal_flags = 0, + .doit = gnl_cb_doit_reply_with_nlmsg_err, + // .dumpit is not required, only optional; application specific/dependent on your use case + // in a real application you probably have different .dumpit handlers per operation/command + .dumpit = NULL, + // in a real application you probably have different .start handlers per operation/command + .start = NULL, + // in a real application you probably have different .done handlers per operation/command + .done = NULL, + .validate = 0, + } +}; + + +/** + * Attribute policy: defines which attribute has which type (e.g int, char * etc). + * This get validated for each received Generic Netlink message, if not deactivated + * in `gnl_foobar_xmpl_ops[].validate`. + * See https://elixir.bootlin.com/linux/v5.11/source/net/netlink/genetlink.c#L717 + */ +static struct nla_policy gnl_vrpmdv_mcmd_policy[GNL_VRPMDV_MCMD_ATTRIBUTE_ENUM_LEN] = { + // In case you are seeing this syntax for the first time (I also learned this just after a few years of + // coding with C myself): The following static array initiations are equivalent: + // `int a[2] = {1, 2}` <==> `int a[2] = {[0] => 1, [1] => 2}`. + + [GNL_VRPMDV_MCMD_A_UNSPEC] = {.type = NLA_UNSPEC}, + + // You can set this to NLA_U32 for testing and send an ECHO message from the userland + // It will fail in this case and you see a entry in the kernel log. + + // `enum GNL_FOOBAR_XMPL_ATTRIBUTE::GNL_FOOBAR_XMPL_A_MSG` is a null-terminated C-String + [GNL_VRPMDV_MCMD_A_MSG] = {.type = NLA_NUL_STRING}, +}; + + + +/** + * Definition of the Netlink family we want to register using Generic Netlink functionality + */ +static struct genl_family gnl_vrpmdv_mcmd_family = { + // automatically assign an id + .id = 0, + // we don't use custom additional header info / user specific header + .hdrsize = 0, + // The name of this family, used by userspace application to get the numeric ID + .name = FAMILY_NAME, + // family specific version number; can be used to evolve application over time (multiple versions) + .version = 1, + // delegates all incoming requests to callback functions + .ops = gnl_vrpmdv_mcmd_ops, + // length of array `gnl_foobar_xmpl_ops` + .n_ops = GNL_VRPMDV_OPS_LEN, + // attribute policy (for validation of messages). Enforced automatically, except ".validate" in + // corresponding ".ops"-field is set accordingly. + .policy = gnl_vrpmdv_mcmd_policy, + // Number of attributes / bounds check for policy (array length) + .maxattr = GNL_VRPMDV_MCMD_ATTRIBUTE_ENUM_LEN, + // Owning Kernel module of the Netlink family we register. + .module = THIS_MODULE, + + // Actually not necessary because this memory region would be zeroed anyway during module load, + // but this way one sees all possible options. + + // if your application must handle multiple netlink calls in parallel (where one should not block the next + // from starting), set this to true! otherwise all netlink calls are mutually exclusive + .parallel_ops = 0, + // set to true if the family can handle network namespaces and should be presented in all of them + .netnsok = 0, + // called before an operation's doit callback, it may do additional, common, filtering and return an error + .pre_doit = NULL, + // called after an operation's doit callback, it may undo operations done by pre_doit, for example release locks + .post_doit = NULL, +}; + + + +/** + * Regular ".doit"-callback function if a Generic Netlink with command `GNL_VRPMDV_MCMD_C_MSG` is received. + * Please look into the comments where this is used as ".doit" callback above in + * `struct genl_ops gnl_vrpmdv_mcmd_ops[]` for more information about ".doit" callbacks. +*/ +int gnl_cb_vrpmdv_doit(struct sk_buff *sender_skb, struct genl_info *info) { + struct nlattr *na; + struct sk_buff *reply_skb; + int rc; + void *msg_head; + char *recv_msg; + + pr_info("%s() invoked\n", __func__); + + if (info == NULL) { + // should never happen + pr_err("An error occurred in %s():\n", __func__); + return -EINVAL; + } + + /* + * For each attribute there is an index in info->attrs which points to a nlattr structure + * in this structure the data is stored. + */ + na = info->attrs[GNL_VRPMDV_MCMD_A_MSG]; + + if (!na) { + pr_err("no info->attrs[%i]\n", GNL_VRPMDV_MCMD_A_MSG); + return -EINVAL; // we return here because we expect to recv a msg + } + + recv_msg = (char *) nla_data(na); + if (recv_msg == NULL) { + pr_err("error while receiving data\n"); + } else { + pr_info("received: '%s'\n", recv_msg); + } + + //aquire lock for cmd repmsg channel + // std::lock sendlk(cmd_cb_progress_data.sendmtx); + + //send the message to the copro over RPMSG + rc = rpmsg_send(vrpmdv_mon.rpdev->ept, recv_msg, strlen(recv_msg)); + if (rc) { + pr_err("rpmsg_send failed: %d\n", rc); + return rc; + } + + // struct rpmsg_vrpmdv_mon_t *drv = dev_get_drvdata(&rpdev->dev); + + { + pr_info("wait for response\n"); + // wait until receive_queue_flag=1 , that means we have received data from Copro + wait_event_interruptible(vrpmdv_mon.receive_queue, vrpmdv_mon.receive_queue_flag != 0 ); + pr_info("received data \n"); + //Copy data + vrpmdv_mon.receive_queue_flag = NODATARECEIVED; + + + + // std::unique_lock lk(cmd_cb_progress_data.receivemtx); + // if (myCondVar.wait_until(uLock, timePoint) == std::cv_status::timeout) + // { + // dev_err(&cmd_cb_progress_data.rpdev, "rpmsg_send failed, timeout: \n"); + // return -1: + // } + + pr_info("get response: '%s'\n", recv_msg); + } + + + + // Send a message back after we receive the reply from rpmsg channel + // --------------------- + + // Allocate some memory, since the size is not yet known use NLMSG_GOODSIZE + reply_skb = genlmsg_new(NLMSG_GOODSIZE, GFP_KERNEL); + if (reply_skb == NULL) { + pr_err("An error occurred in %s():\n", __func__); + return -ENOMEM; + } + + // Create the message headers + + // Add header to netlink message; + // afterwards the buffer looks like this: + // ---------------------------------- + // | netlink header | + // | generic netlink header | + // | | + // ---------------------------------- + // msg_head = genlmsg_put(reply_skb, // buffer for netlink message: struct sk_buff * + // // According to my findings: this is not used for routing + // // This can be used in an application specific way to target + // // different endpoints within the same user application + // // but general rule: just put sender port id here + // info->snd_portid, // sending port (not process) id: int + // info->snd_seq + 1, // sequence number: int (might be used by receiver, but not mandatory) + // &gnl_vrpmdv_mcmd_family, // struct genl_family * + // 0, // flags for Netlink header: int; application specific and not mandatory + // // The command/operation (u8) from `enum GNL_FOOBAR_XMPL_COMMAND` for Generic Netlink header + // GNL_VRPMDV_MCMD_C_MSG + // ); + + msg_head = genlmsg_put_reply(reply_skb, // buffer for netlink message: struct sk_buff * + info, // info + &gnl_vrpmdv_mcmd_family, // struct genl_family * + 0, // flags for Netlink header: int; application specific and not mandatory + // The command/operation (u8) from `enum GNL_FOOBAR_XMPL_COMMAND` for Generic Netlink header + info->genlhdr->cmd + ); + + if (msg_head == NULL) { + rc = ENOMEM; + pr_err("An error occurred in %s():\n", __func__); + return -rc; + } + + // Add a GNL_VRPMDV_MCMD_A_MSG attribute (actual value/payload to be sent) + // echo the value we just received + rc = nla_put_string(reply_skb, GNL_VRPMDV_MCMD_A_MSG, recv_msg); + if (rc != 0) { + pr_err("An error occurred in %s():\n", __func__); + return -rc; + } + + // Finalize the message: + // Corrects the netlink message header (length) to include the appended + // attributes. Only necessary if attributes have been added to the message. + genlmsg_end(reply_skb, msg_head); + + // Send the message back + rc = genlmsg_reply(reply_skb, info); + // same as genlmsg_unicast(genl_info_net(info), reply_skb, info->snd_portid) + // see https://elixir.bootlin.com/linux/v5.8.9/source/include/net/genetlink.h#L326 + + if (rc != 0) { + pr_err("An error occurred in %s():\n", __func__); + return -rc; + } + return 0; +} + +/** + * Regular ".doit"-callback function if a Generic Netlink with command `GNL_FOOBAR_XMPL_C_REPLY_WITH_NLMSG_ERR` is received. + * Please look into the comments where this is used as ".doit" callback above in + * `struct genl_ops gnl_foobar_xmpl_ops[]` for more information about ".doit" callbacks. +*/ +int gnl_cb_doit_reply_with_nlmsg_err(struct sk_buff *sender_skb, struct genl_info *info) { + pr_info("%s() invoked, a NLMSG_ERR response will be sent back\n", __func__); + + /* + * Generic Netlink is smart enough and sends a NLMSG_ERR reply automatically as reply + * Quote from https://lwn.net/Articles/208755/: + * "The 'doit' handler should do whatever processing is necessary and return + * zero on success, or a negative value on failure. Negative return values + * will cause a NLMSG_ERROR message to be sent while a zero return value will + * only cause a NLMSG_ERROR message to be sent if the request is received with + * the NLM_F_ACK flag set." + * + * You can find this in Linux code here: + * https://elixir.bootlin.com/linux/v5.11/source/net/netlink/af_netlink.c#L2499 + * + * One can find more information about NLMSG_ERROR responses and how to handle them + * in userland in the manpage: https://man7.org/linux/man-pages/man7/netlink.7.html + */ + return -EINVAL; +} + + + +/** ----- NETLINK Driver defintion ------------------*/ + + + + + +/** + * callback that is called after the copro send data + * we have to copy it in a buffer for the netlink and later send it back to the userland + * +*/ +static int vrpmdv_monitoring_cb(struct rpmsg_device *rpdev, void *data, int len, + void *priv, u32 src) +{ + int ret = 0; + struct instance_data *idata = dev_get_drvdata(&rpdev->dev); + + dev_info(&rpdev->dev, "incoming msg %d (src: 0x%x)\n", + ++idata->rx_count, src); + + print_hex_dump_debug(__func__, DUMP_PREFIX_NONE, 16, 1, data, len, + true); + + vrpmdv_mon.receive_queue_flag= DATARECEIVED; + wake_up_interruptible(&(vrpmdv_mon.receive_queue)); + + // /* samples should not live forever */ + // if (idata->rx_count >= count) { + // dev_info(&rpdev->dev, "goodbye!\n"); + // return 0; + // } + + /* send a new message now */ + // ret = rpmsg_send(rpdev->ept, MSG, strlen(MSG)); + // if (ret) + // dev_err(&rpdev->dev, "rpmsg_send failed: %d\n", ret); + + return ret; +} + +static int vrpmdv_monitoring_probe(struct rpmsg_device *rpdev) +{ + int rc; + + // int ret; + // struct instance_data *idata; + + dev_info(&rpdev->dev, "new channel: 0x%x -> 0x%x!\n", + rpdev->src, rpdev->dst); + + // idata = devm_kzalloc(&rpdev->dev, sizeof(*idata), GFP_KERNEL); + // if (!idata) + // return -ENOMEM; + + // dev_set_drvdata(&rpdev->dev, idata); + + // /* send a message to our remote processor to */ + // ret = rpmsg_send(rpdev->ept, MSG, strlen(MSG)); + // if (ret) { + // dev_err(&rpdev->dev, "vrpmdv_monitoring_controler_send failed: %d\n", ret); + // return ret; + // } + + // return 0; + + // struct device *dev; + // dev = &rpdev->dev; + // struct rpmsg_vrpmdv_mon_t *rpmsg_vrpmdv_mon; + + // rpmsg_vrpmdv_mon = devm_kzalloc(dev, sizeof(*rpmsg_vrpmdv_mon), GFP_KERNEL); + // if (!rpmsg_vrpmdv_mon) + // return -ENOMEM; + + mutex_init(&(vrpmdv_mon.sendMTX)); + init_waitqueue_head (&(vrpmdv_mon.receive_queue)); + vrpmdv_mon.rpdev = rpdev; + + // dev_set_drvdata(&rpdev->dev, rpmsg_vrpmdv_mon); + pr_info("RPMSG CMD Device set.\n"); + + + /** NEU **/ + // if (cmd_cb_progress_data.rpdev == NULL) { + // cmd_cb_progress_data.rpdev = rpdev; + // pr_info("RPMSG CMD Device set.\n"); + // } + // else { + // pr_info("Error: RPMSG CMD Device already set. Don't set it twice\n"); + // } + + pr_info("Generic Netlink VRPMDV-Monitroring_Controler Module started.\n"); + + // Register family with its operations and policies + rc = genl_register_family(&gnl_vrpmdv_mcmd_family); + if (rc != 0) { + pr_err("FAILED: genl_register_family(): %i\n", rc); + pr_err("An error occurred while inserting the generic netlink example module\n"); + return -1; + } else { + pr_info("successfully registered custom Netlink family '" FAMILY_NAME "' using Generic Netlink.\n"); + } + + return 0; + + + +} + +static void vrpmdv_monitoring_remove(struct rpmsg_device *rpdev) +{ + int ret; + pr_info("Generic Netlink Example Module unloaded.\n"); + + // Unregister the family + ret = genl_unregister_family(&gnl_vrpmdv_mcmd_family); + if (ret != 0) { + pr_err("genl_unregister_family() failed: %i\n", ret); + return; + } else { + pr_info("successfully unregistered custom Netlink family '" FAMILY_NAME "' using Generic Netlink.\n"); + } + + mutex_destroy(&(vrpmdv_mon.sendMTX)); + wake_up_interruptible(&(vrpmdv_mon.receive_queue)); + + dev_info(&rpdev->dev, "vrpmdv-monitoring controler driver is removed\n"); + +} + +static struct rpmsg_device_id vrpmdv_monitoring_controler_id_table[] = { + { .name = "vrpmdv-monitoring-controler" }, + { }, +}; +MODULE_DEVICE_TABLE(rpmsg, vrpmdv_monitoring_controler_id_table); + +static struct rpmsg_driver vrpmdv_monitoring_controler = { + .drv.name = KBUILD_MODNAME, + .id_table = vrpmdv_monitoring_controler_id_table, + .probe = vrpmdv_monitoring_probe, + .callback = vrpmdv_monitoring_cb, + .remove = vrpmdv_monitoring_remove, +}; +module_rpmsg_driver(vrpmdv_monitoring_controler); + + +// static struct rpmsg_driver vrpmdv_monitoring_data = { +// .drv.name = KBUILD_MODNAME, +// .id_table = vrpmdv_monitoring_controler_id_table, +// .probe = vrpmdv_monitoring_probe, +// .callback = vrpmdv_monitoring_cb, +// .remove = vrpmdv_monitoring_remove, +// }; + +// module_rpmsg_driver(vrpmdv_monitoring_data); + +MODULE_DESCRIPTION("Remote processor messaging vrpmdv monitoring controler"); +MODULE_LICENSE("GPL v2"); + + + +// /** +// * Module/driver initializer. Called on module load/insertion. +// * +// * @return success (0) or error code. +// */ +// static int __init gnl_foobar_xmpl_module_init(void) { +// int rc; +// pr_info("Generic Netlink Example Module inserted.\n"); + +// // Register family with its operations and policies +// rc = genl_register_family(&gnl_foobar_xmpl_family); +// if (rc != 0) { +// pr_err("FAILED: genl_register_family(): %i\n", rc); +// pr_err("An error occurred while inserting the generic netlink example module\n"); +// return -1; +// } else { +// pr_info("successfully registered custom Netlink family '" FAMILY_NAME "' using Generic Netlink.\n"); +// } + +// mutex_init(&dumpit_cb_progress_data.mtx); + +// return 0; +// } + +// /** +// * Module/driver uninitializer. Called on module unload/removal. +// * +// * @return success (0) or error code. +// */ +// static void __exit gnl_foobar_xmpl_module_exit(void) { +// int ret; +// pr_info("Generic Netlink Example Module unloaded.\n"); + +// // Unregister the family +// ret = genl_unregister_family(&gnl_foobar_xmpl_family); +// if (ret != 0) { +// pr_err("genl_unregister_family() failed: %i\n", ret); +// return; +// } else { +// pr_info("successfully unregistered custom Netlink family '" FAMILY_NAME "' using Generic Netlink.\n"); +// } + +// mutex_destroy(&dumpit_cb_progress_data.mtx); +// } + + +// ---- + +// static int __init rpmsg_sdb_drv_init(void) +// { +// int ret = 0; + +// /* Register rpmsg device */ +// ret = register_rpmsg_driver(&rpmsg_sdb_rmpsg_drv); + +// if (ret) { +// pr_err("rpmsg_sdb(ERROR): Failed to register device\n"); +// return ret; +// } + +// pr_info("rpmsg_sdb: Init done\n"); + +// return ret; +// } + +// static void __exit rpmsg_sdb_drv_exit(void) +// { +// unregister_rpmsg_driver(&rpmsg_sdb_rmpsg_drv); +// pr_info("rpmsg_sdb: Exit\n"); +// } + +// module_init(rpmsg_sdb_drv_init); +// module_exit(rpmsg_sdb_drv_exit); diff --git a/recipes-vrpmdv/recipes-base/vrpmdv-mon-tty/save/vrpmdv-monitoring-driver copy.bb.old b/recipes-vrpmdv/recipes-base/vrpmdv-mon-tty/save/vrpmdv-monitoring-driver copy.bb.old new file mode 100644 index 0000000..6aeebb9 --- /dev/null +++ b/recipes-vrpmdv/recipes-base/vrpmdv-mon-tty/save/vrpmdv-monitoring-driver copy.bb.old @@ -0,0 +1,24 @@ +SUMMARY = "VRPMDV Monitoring Driver" +LICENSE = "CLOSED" +# LICENSE = "GPL-2.0-only" +# LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/GPL-2.0-only;md5=801f80980d171dd6425610833a22dbe6" + +inherit module + +SRC_URI = "file://Makefile \ + file://stm32_rpmsg_sdb.c \ + " +# file://75-rpmsg-sdb.rules \ +S = "${WORKDIR}" + +# The inherit of module.bbclass will automatically name module packages with +# "kernel-module-" prefix as required by the oe-core build environment. + +# do_install:append() { + # udev rules for rpmsg-sdb + # install -d ${D}${sysconfdir}/udev/rules.d/ + # install -m 0644 ${WORKDIR}/75-rpmsg-sdb.rules ${D}${sysconfdir}/udev/rules.d/75-rpmsg-sdb.rules +# } +#FILES:${PN} += "${sysconfdir}/udev/rules.d/" + +RPROVIDES:${PN} += "kernel-module-vrpmdv-monitoring-driver" \ No newline at end of file diff --git a/recipes-vrpmdv/recipes-base/vrpmdv-mon-tty/save/vrpmdv-monitoring-driver copy1.bb.old b/recipes-vrpmdv/recipes-base/vrpmdv-mon-tty/save/vrpmdv-monitoring-driver copy1.bb.old new file mode 100644 index 0000000..2f245db --- /dev/null +++ b/recipes-vrpmdv/recipes-base/vrpmdv-mon-tty/save/vrpmdv-monitoring-driver copy1.bb.old @@ -0,0 +1,26 @@ +SUMMARY = "VRPMDV Monitoring Driver" +LICENSE = "GPL-2.0-only" +LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/GPL-2.0-only;md5=801f80980d171dd6425610833a22dbe6" + +inherit module + +SRC_URI = "file://Makefile \ + file://vrpmdv-monitoring.c \ + file://75-vrpmdv-monitoring.rules \ + " + +S = "${WORKDIR}" + +# The inherit of module.bbclass will automatically name module packages with +# "kernel-module-" prefix as required by the oe-core build environment. + +do_install:append() { + # udev rules for vrpmdv-monitoring + install -d ${D}${sysconfdir}/udev/rules.d/ + install -m 0644 ${WORKDIR}/75-vrpmdv-monitoring.rules ${D}${sysconfdir}/udev/rules.d/75-vrpmdv-monitoring.rules +} + +FILES:${PN} += "${sysconfdir}/udev/rules.d/" + + +RPROVIDES:${PN} += "kernel-module-vrpmdv-monitoring" \ No newline at end of file diff --git a/recipes-vrpmdv/recipes-base/vrpmdv-mon-tty/save/vrpmdv-monitoring-driverv2.bb.old b/recipes-vrpmdv/recipes-base/vrpmdv-mon-tty/save/vrpmdv-monitoring-driverv2.bb.old new file mode 100644 index 0000000..03bdb32 --- /dev/null +++ b/recipes-vrpmdv/recipes-base/vrpmdv-mon-tty/save/vrpmdv-monitoring-driverv2.bb.old @@ -0,0 +1,26 @@ +SUMMARY = "VRPMDV Monitoring Driver" +LICENSE = "GPL-2.0-only" +LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/GPL-2.0-only;md5=801f80980d171dd6425610833a22dbe6" + +inherit module + +SRC_URI = "file://Makefile \ + file://vrpmdv-monitoring.c \ + file://75-vrpmdv-monitoring.rules \ + " + +S = "${WORKDIR}" + +# The inherit of module.bbclass will automatically name module packages with +# "kernel-module-" prefix as required by the oe-core build environment. + +do_install:append() { + # udev rules for vrpmdv-monitoring + install -d ${D}${sysconfdir}/udev/rules.d/ + install -m 0644 ${WORKDIR}/75-vrpmdv-monitoring.rules ${D}${sysconfdir}/udev/rules.d/75-vrpmdv-monitoring.rules +} + +FILES:${PN} += "${sysconfdir}/udev/rules.d/" +FILES:${PN} += "${base_libdir}/modules/" + +RPROVIDES:${PN} += "vrpmdv-monitoring" diff --git a/recipes-vrpmdv/recipes-base/vrpmdv-mon-tty/vrpmdv-mon-tty.bb b/recipes-vrpmdv/recipes-base/vrpmdv-mon-tty/vrpmdv-mon-tty.bb new file mode 100644 index 0000000..8db283a --- /dev/null +++ b/recipes-vrpmdv/recipes-base/vrpmdv-mon-tty/vrpmdv-mon-tty.bb @@ -0,0 +1,24 @@ +SUMMARY = "VRPMDV Monitoring TTY" +LICENSE = "GPL-2.0-only" +LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/GPL-2.0-only;md5=801f80980d171dd6425610833a22dbe6" + +inherit module + +SRC_URI = "file://Makefile \ + file://vrpmdv-mon-tty.c \ + file://75-mon-tty.rules \ + " + +S = "${WORKDIR}" + +# The inherit of module.bbclass will automatically name module packages with +# "kernel-module-" prefix as required by the oe-core build environment. +do_install:append() { + # udev rules for tty + install -d ${D}${sysconfdir}/udev/rules.d/ + install -m 0644 ${WORKDIR}/75-mon-tty.rules ${D}${sysconfdir}/udev/rules.d/75-mon-tty.rules +} +FILES:${PN} += "${sysconfdir}/udev/rules.d/" + + +RPROVIDES:${PN} += "kernel-module-vrpmdv-mon-tty" diff --git a/recipes-vrpmdv/recipes-base/vrpmdv-monitoring-controler/.gitignore b/recipes-vrpmdv/recipes-base/vrpmdv-monitoring-controler/.gitignore new file mode 100644 index 0000000..610580e --- /dev/null +++ b/recipes-vrpmdv/recipes-base/vrpmdv-monitoring-controler/.gitignore @@ -0,0 +1 @@ +/.~lock.Create-Kernel-Driver.odt# diff --git a/recipes-vrpmdv/recipes-base/vrpmdv-monitoring-controler/.vscode/settings.json b/recipes-vrpmdv/recipes-base/vrpmdv-monitoring-controler/.vscode/settings.json new file mode 100644 index 0000000..a644266 --- /dev/null +++ b/recipes-vrpmdv/recipes-base/vrpmdv-monitoring-controler/.vscode/settings.json @@ -0,0 +1,8 @@ +{ + "files.associations": { + "rpmsg.h": "c", + "types.h": "c", + "ioctl.h": "c", + "wait.h": "c" + } +} \ No newline at end of file diff --git a/recipes-vrpmdv/recipes-base/vrpmdv-monitoring-controler/Create-Kernel-Driver.odt b/recipes-vrpmdv/recipes-base/vrpmdv-monitoring-controler/Create-Kernel-Driver.odt new file mode 100644 index 0000000000000000000000000000000000000000..cee5ccfb8a2a2416490d82af7db60d68015b3e7e GIT binary patch literal 314929 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 z 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

cxO1|lNk>&7v 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 literal 0 HcmV?d00001 diff --git a/recipes-vrpmdv/recipes-base/vrpmdv-monitoring-controler/LockingWaitQueues.pdf b/recipes-vrpmdv/recipes-base/vrpmdv-monitoring-controler/LockingWaitQueues.pdf new file mode 100644 index 0000000000000000000000000000000000000000..6d16b4bb99684256fd08e562d2080ea8ff544a06 GIT binary patch literal 235748 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⋙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 V9LAQ05(JWWaQ{6A8dMB4xW literal 0 HcmV?d00001 diff --git a/recipes-vrpmdv/recipes-base/vrpmdv-monitoring-controler/files/Makefile b/recipes-vrpmdv/recipes-base/vrpmdv-monitoring-controler/files/Makefile new file mode 100644 index 0000000..c7a64dd --- /dev/null +++ b/recipes-vrpmdv/recipes-base/vrpmdv-monitoring-controler/files/Makefile @@ -0,0 +1,26 @@ +# Makefile for VRPMDV Monitoring Controler +obj-m := vrpmdv-monitoring-controler.o + + +SRC := $(shell pwd) + +all: + $(MAKE) -C $(KERNEL_SRC) M=$(SRC) + +modules_install: + $(MAKE) -C $(KERNEL_SRC) M=$(SRC) modules_install + +clean: + rm -f *.o *~ core .depend .*.cmd *.ko *.mod.c + rm -f Module.markers Module.symvers modules.order + rm -rf .tmp_versions Modules.symvers + +# obj-m = vrpmdv-monitoring-controler.o + +# KVERSION = $(shell uname -r) + +# all: +# make -C /lib/modules/$(KVERSION)/build M=$(PWD) modules + +# clean: +# make -C /lib/modules/$(KVERSION)/build M=$(PWD) clean \ No newline at end of file diff --git a/recipes-vrpmdv/recipes-base/vrpmdv-monitoring-controler/files/lock.csave b/recipes-vrpmdv/recipes-base/vrpmdv-monitoring-controler/files/lock.csave new file mode 100644 index 0000000..0de60b3 --- /dev/null +++ b/recipes-vrpmdv/recipes-base/vrpmdv-monitoring-controler/files/lock.csave @@ -0,0 +1,116 @@ +include +#include +#include +#include +#include + +std::mutex m; +std::condition_variable cv; +std::string data; +bool ready = false; +bool processed = false; + +void worker_thread() +{ + // wait until main() sends data + std::unique_lock lk(m); + cv.wait(lk, []{ return ready; }); + + // after the wait, we own the lock + std::cout << "Worker thread is processing data\n"; + data += " after processing"; + + // send data back to main() + processed = true; + std::cout << "Worker thread signals data processing completed\n"; + + // manual unlocking is done before notifying, to avoid waking up + // the waiting thread only to block again (see notify_one for details) + lk.unlock(); + cv.notify_one(); +} + +int main() +{ + std::thread worker(worker_thread); + + data = "Example data"; + // send data to the worker thread + { + std::lock_guard lk(m); + ready = true; + std::cout << "main() signals data ready for processing\n"; + } + cv.notify_one(); + + // wait for the worker + { + std::unique_lock lk(m); + cv.wait(lk, []{ return processed; }); + } + std::cout << "Back in main(), data = " << data << '\n'; + + worker.join(); +} + +-------------------- + +// waiting for timeout after 5 seconds +std::chrono::seconds timeoutPeriod = 5; +auto timePoint = std::chrono::system_clock::now() + timeoutPeriod; +std::unique_lock uLock(myDataMutex); +while(!DataAreReadyForProcessing()) +{ + if (myCondVar.wait_until(uLock, timePoint) //<## + == std::cv_status::timeout) + { + // data conditions where not fulfilled within + // the time period; e.g. do some error handling + break; + } +} + +-- + +if (myCondVar.wait_for(uLock, timeoutPeriod, + DataAreReadyForProcessing)) +{ + // data conditions where fulfilled + // regular processing +} +else // timeout occured, conditions are not fulfilled +{ + // e.g. do some error handling +} + + + + + + +------------- + + +static int rpmsg_sample_probe(struct rpmsg_device *rpdev) +{ + + int ret; + struct instance_data *idata; + + dev_info(&rpdev->dev, "new channel: 0x%x -> 0x%x!\n", + rpdev->src, rpdev->dst); + + idata = devm_kzalloc(&rpdev->dev, sizeof(*idata), GFP_KERNEL); + if (!idata) + return -ENOMEM; + + dev_set_drvdata(&rpdev->dev, idata); + + /* send a message to our remote processor */ + ret = rpmsg_send(rpdev->ept, MSG, strlen(MSG)); + if (ret) { + dev_err(&rpdev->dev, "rpmsg_send failed: %d\n", ret); + return ret; + } + + return 0; diff --git a/recipes-vrpmdv/recipes-base/vrpmdv-monitoring-controler/files/vrpmdv-monitoring-cmd.c b/recipes-vrpmdv/recipes-base/vrpmdv-monitoring-controler/files/vrpmdv-monitoring-cmd.c new file mode 100644 index 0000000..0524f6b --- /dev/null +++ b/recipes-vrpmdv/recipes-base/vrpmdv-monitoring-controler/files/vrpmdv-monitoring-cmd.c @@ -0,0 +1,541 @@ +/* Copyright 2024 Markus Lehr + * + * + * This Software is owned by Markus Lehr. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, + * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A + * PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +// ################################################################################################## +/* + * This is a Linux kernel module/driver called "vrpmdv-monitoring-cmd " which holds the family ID + * and functions to handle the monitoring in a Generic Netlink in the kernel. + * "It registers a Netlink family called "vrpmdv-monitoring_cmd". + * + * + * You can find some more interesting documentation about Generic Netlink here: + * "Generic Netlink HOW-TO based on Jamal's original doc" https://lwn.net/Articles/208755/ + */ + +// basic definitions for kernel module development +#include +// definitions for generic netlink families, policies etc; +// transitive dependencies for basic netlink, sockets etc +#include +// required for locking inside the .dumpit callback demonstration +#include + +// data/vars/enums/properties that describes our protocol that we implement +// on top of generic netlink (like functions we want to trigger on the receiving side) +#include "gnl_vrpmdv_mcmd.h" + +// Module/Driver description. +// You can see this for example when executing `$ modinfo ./gnl_vromdv_cmd.ko` (after build). +MODULE_LICENSE("GPL"); +MODULE_AUTHOR("MArkus Lehr "); +MODULE_DESCRIPTION( + "Linux driver that registers the custom Netlink family " + "\"" FAMILY_NAME "\" via Generic Netlink and responds to echo messages " + "according to the properties specified in \"gnl_vrpmd_mcmd.h\"." +); + + +/* ######################## CONVENIENT LOGGING MACROS ######################## */ +// (Re)definition of some convenient logging macros from . You can see the logging +// messages when printing the kernel log, e.g. with `$ sudo dmesg`. +// See https://elixir.bootlin.com/linux/latest/source/include/linux/printk.h + +// with this redefinition we can easily prefix all log messages from pr_* logging macros +#ifdef pr_fmt +#undef pr_fmt +#endif +#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt +/* ########################################################################### */ + +/** + * Data structure required for our .dumpit callback handler to + * know about the progress of an ongoing dump. + * See the dumpit callback handler how it is used. + */ +struct { + // from + /** + * Only one process is allowed per dump process. We need a lock for that. + */ + struct mutex mtx; + /** + * Number that describes how many packets we need to send until we are done + * during an ongoing dumpit process. 0 = done. + */ + int unsigned runs_to_go; + /** + * Number that describes how many packets per dump are sent in total. + * Constant per dump. + */ + int unsigned total_runs; +} dumpit_cb_progress_data; + +// Documentation is on the implementation of this function. +int gnl_cb_echo_doit(struct sk_buff *sender_skb, struct genl_info *info); + +// Documentation is on the implementation of this function. +int gnl_cb_echo_dumpit(struct sk_buff *pre_allocated_skb, struct netlink_callback *cb); + +// Documentation is on the implementation of this function. +int gnl_cb_echo_dumpit_before(struct netlink_callback *cb); + +// Documentation is on the implementation of this function. +int gnl_cb_echo_dumpit_before_after(struct netlink_callback *cb); + +// Documentation is on the implementation of this function. +int gnl_cb_doit_reply_with_nlmsg_err(struct sk_buff *sender_skb, struct genl_info *info); + +/** + * The length of `struct genl_ops gnl_foobar_xmpl_ops[]`. Not necessarily + * the number of commands in `enum GNlFoobarXmplCommand`. It depends on your application logic. + * For example, you can use the same command multiple times and - dependent by flag - + * invoke a different callback handler. In our simple example we just use one .doit callback + * per operation/command. + */ +#define GNL_VRPMDV_OPS_LEN (GNL_VRPMDV_MCMD_COMMAND_COUNT) + +/** + * Array with all operations that our protocol on top of Generic Netlink + * supports. An operation is the glue between a command ("cmd" field in `struct genlmsghdr` of + * received Generic Netlink message) and the corresponding ".doit" callback function. + * See: https://elixir.bootlin.com/linux/v5.11/source/include/net/genetlink.h#L148 + */ +struct genl_ops gnl_vrpmdv_mcmd_ops[GNL_VRPMDV_OPS_LEN] = { + { + /* The "cmd" field in `struct genlmsghdr` of received Generic Netlink message */ + .cmd = GNL_VRPMDV_MCMD_C_MSG, + /* TODO Use case ? */ + .flags = 0, + /* TODO Use case ? */ + .internal_flags = 0, + /* Callback handler when a request with the specified ".cmd" above is received. + * Always validates the payload except one set NO_STRICT_VALIDATION flag in ".validate" + * See: https://elixir.bootlin.com/linux/v5.11/source/net/netlink/genetlink.c#L717 + * + * Quote from: https://lwn.net/Articles/208755 + * "The 'doit' handler should do whatever processing is necessary and return + * zero on success, or a negative value on failure. Negative return values + * will cause a NLMSG_ERROR message to be sent while a zero return value will + * only cause a NLMSG_ERROR message to be sent if the request is received with + * the NLM_F_ACK flag set." + * + * You can find this in Linux code here: + * https://elixir.bootlin.com/linux/v5.11/source/net/netlink/af_netlink.c#L2499 + * + * One can find more information about NLMSG_ERROR responses and how to handle them + * in userland in the manpage: https://man7.org/linux/man-pages/man7/netlink.7.html + * + */ + .doit = gnl_cb_vrpmdv_doit, + /* This callback is similar in use to the standard Netlink 'dumpit' callback. + * The 'dumpit' callback is invoked when a Generic Netlink message is received + * with the NLM_F_DUMP flag set. + * + * A dump can be understand as a "GET ALL DATA OF THE GIVEN ENTITY", i.e. + * the userland can receive as long as the .dumpit callback returns data. + * + * .dumpit is not mandatory, but either it or .doit must be provided, see + * https://elixir.bootlin.com/linux/v5.11/source/net/netlink/genetlink.c#L367 + * + * To be honest I don't know in what use case one should use .dumpit and why + * it is useful, because you can achieve the same also with .doit handlers. + * Anyway, this is just an example/tutorial. + * + * Quote from: https://lwn.net/Articles/208755 + * "The main difference between a 'dumpit' handler and a 'doit' handler is + * that a 'dumpit' handler does not allocate a message buffer for a response; + * a pre-allocated sk_buff is passed to the 'dumpit' handler as the first + * parameter. The 'dumpit' handler should fill the message buffer with the + * appropriate response message and return the size of the sk_buff, + * i.e. sk_buff->len, and the message buffer will automatically be sent to the + * Generic Netlink client that initiated the request. As long as the 'dumpit' + * handler returns a value greater than zero it will be called again with a + * newly allocated message buffer to fill, when the handler has no more data + * to send it should return zero; error conditions are indicated by returning + * a negative value. If necessary, state can be preserved in the + * netlink_callback parameter which is passed to the 'dumpit' handler; the + * netlink_callback parameter values will be preserved across handler calls + * for a single request." + * + * You can see the check for the NLM_F_DUMP-flag here: + * https://elixir.bootlin.com/linux/v5.11/source/net/netlink/genetlink.c#L780 + */ + .dumpit = gnl_cb_echo_dumpit, + /* Start callback for dumps. Can be used to lock data structures. */ + .start = gnl_cb_echo_dumpit_before, + /* Completion callback for dumps. Can be used for cleanup after a dump and releasing locks. */ + .done = gnl_cb_echo_dumpit_before_after, + /* + 0 (= "validate strictly") or value `enum genl_validate_flags` + * see: https://elixir.bootlin.com/linux/v5.11/source/include/net/genetlink.h#L108 + */ + .validate = 0, + }, + { + .cmd = GNL_VRPMDV_MCMD_C_REPLY_WITH_NLMSG_ERR, + .flags = 0, + .internal_flags = 0, + .doit = gnl_cb_doit_reply_with_nlmsg_err, + // .dumpit is not required, only optional; application specific/dependent on your use case + // in a real application you probably have different .dumpit handlers per operation/command + .dumpit = NULL, + // in a real application you probably have different .start handlers per operation/command + .start = NULL, + // in a real application you probably have different .done handlers per operation/command + .done = NULL, + .validate = 0, + } +}; + +/** + * Attribute policy: defines which attribute has which type (e.g int, char * etc). + * This get validated for each received Generic Netlink message, if not deactivated + * in `gnl_foobar_xmpl_ops[].validate`. + * See https://elixir.bootlin.com/linux/v5.11/source/net/netlink/genetlink.c#L717 + */ +static struct nla_policy gnl_vrpmdv_mcmd_policy[GNL_VRPMDV_MCMD_ATTRIBUTE_ENUM_LEN] = { + // In case you are seeing this syntax for the first time (I also learned this just after a few years of + // coding with C myself): The following static array initiations are equivalent: + // `int a[2] = {1, 2}` <==> `int a[2] = {[0] => 1, [1] => 2}`. + + [GNL_VRPMDV_MCMD_A_UNSPEC] = {.type = NLA_UNSPEC}, + + // You can set this to NLA_U32 for testing and send an ECHO message from the userland + // It will fail in this case and you see a entry in the kernel log. + + // `enum GNL_FOOBAR_XMPL_ATTRIBUTE::GNL_FOOBAR_XMPL_A_MSG` is a null-terminated C-String + [GNL_VRPMDV_MCMD_A_MSG] = {.type = NLA_NUL_STRING}, +}; + +/** + * Definition of the Netlink family we want to register using Generic Netlink functionality + */ +static struct genl_family gnl_vrpmdv_mcmd_family = { + // automatically assign an id + .id = 0, + // we don't use custom additional header info / user specific header + .hdrsize = 0, + // The name of this family, used by userspace application to get the numeric ID + .name = FAMILY_NAME, + // family specific version number; can be used to evolve application over time (multiple versions) + .version = 1, + // delegates all incoming requests to callback functions + .ops = gnl_vrpmdv_mcmd_ops, + // length of array `gnl_foobar_xmpl_ops` + .n_ops = GNL_VRPMDV_OPS_LEN, + // attribute policy (for validation of messages). Enforced automatically, except ".validate" in + // corresponding ".ops"-field is set accordingly. + .policy = gnl_vrpmdv_mcmd_policy, + // Number of attributes / bounds check for policy (array length) + .maxattr = GNL_VRPMDV_MCMD_ATTRIBUTE_ENUM_LEN, + // Owning Kernel module of the Netlink family we register. + .module = THIS_MODULE, + + // Actually not necessary because this memory region would be zeroed anyway during module load, + // but this way one sees all possible options. + + // if your application must handle multiple netlink calls in parallel (where one should not block the next + // from starting), set this to true! otherwise all netlink calls are mutually exclusive + .parallel_ops = 0, + // set to true if the family can handle network namespaces and should be presented in all of them + .netnsok = 0, + // called before an operation's doit callback, it may do additional, common, filtering and return an error + .pre_doit = NULL, + // called after an operation's doit callback, it may undo operations done by pre_doit, for example release locks + .post_doit = NULL, +}; + +/** + * Regular ".doit"-callback function if a Generic Netlink with command `GNL_FOOBAR_XMPL_C_ECHO` is received. + * Please look into the comments where this is used as ".doit" callback above in + * `struct genl_ops gnl_foobar_xmpl_ops[]` for more information about ".doit" callbacks. +*/ +int gnl_cb_echo_doit(struct sk_buff *sender_skb, struct genl_info *info) { + struct nlattr *na; + struct sk_buff *reply_skb; + int rc; + void *msg_head; + char *recv_msg; + + pr_info("%s() invoked\n", __func__); + + if (info == NULL) { + // should never happen + pr_err("An error occurred in %s():\n", __func__); + return -EINVAL; + } + + /* + * For each attribute there is an index in info->attrs which points to a nlattr structure + * in this structure the data is stored. + */ + na = info->attrs[GNL_FOOBAR_XMPL_A_MSG]; + + if (!na) { + pr_err("no info->attrs[%i]\n", GNL_FOOBAR_XMPL_A_MSG); + return -EINVAL; // we return here because we expect to recv a msg + } + + recv_msg = (char *) nla_data(na); + if (recv_msg == NULL) { + pr_err("error while receiving data\n"); + } else { + pr_info("received: '%s'\n", recv_msg); + } + + + // Send a message back + // --------------------- + + // Allocate some memory, since the size is not yet known use NLMSG_GOODSIZE + reply_skb = genlmsg_new(NLMSG_GOODSIZE, GFP_KERNEL); + if (reply_skb == NULL) { + pr_err("An error occurred in %s():\n", __func__); + return -ENOMEM; + } + + // Create the message headers + + // Add header to netlink message; + // afterwards the buffer looks like this: + // ---------------------------------- + // | netlink header | + // | generic netlink header | + // | | + // ---------------------------------- + msg_head = genlmsg_put(reply_skb, // buffer for netlink message: struct sk_buff * + // According to my findings: this is not used for routing + // This can be used in an application specific way to target + // different endpoints within the same user application + // but general rule: just put sender port id here + info->snd_portid, // sending port (not process) id: int + info->snd_seq + 1, // sequence number: int (might be used by receiver, but not mandatory) + &gnl_foobar_xmpl_family, // struct genl_family * + 0, // flags for Netlink header: int; application specific and not mandatory + // The command/operation (u8) from `enum GNL_FOOBAR_XMPL_COMMAND` for Generic Netlink header + GNL_FOOBAR_XMPL_C_ECHO_MSG + ); + if (msg_head == NULL) { + rc = ENOMEM; + pr_err("An error occurred in %s():\n", __func__); + return -rc; + } + + // Add a GNL_FOOBAR_XMPL_A_MSG attribute (actual value/payload to be sent) + // echo the value we just received + rc = nla_put_string(reply_skb, GNL_FOOBAR_XMPL_A_MSG, recv_msg); + if (rc != 0) { + pr_err("An error occurred in %s():\n", __func__); + return -rc; + } + + // Finalize the message: + // Corrects the netlink message header (length) to include the appended + // attributes. Only necessary if attributes have been added to the message. + genlmsg_end(reply_skb, msg_head); + + // Send the message back + rc = genlmsg_reply(reply_skb, info); + // same as genlmsg_unicast(genl_info_net(info), reply_skb, info->snd_portid) + // see https://elixir.bootlin.com/linux/v5.8.9/source/include/net/genetlink.h#L326 + + if (rc != 0) { + pr_err("An error occurred in %s():\n", __func__); + return -rc; + } + return 0; +} + +/** ---------------------- not needed ML */ + +/** + * ".dumpit"-callback function if a Generic Netlink with command ECHO_MSG and flag `NLM_F_DUMP` is received. + * Please look into the comments where this is used as ".dumpit" callback above in + * `struct genl_ops gnl_foobar_xmpl_ops[]` for more information about ".dumpit" callbacks. + * + * A dump must be understand of "give me all data of a given entity" + * rather than a "dump of the netlink message itself" for debugging etc! + * + * This handler requires `gnl_cb_echo_dumpit_before` to run before a dump and `gnl_cb_echo_dumpit_after` after a dump. + * + * For the sake of simplicity, we use the ECHO_MSG command for the dump. In fact, we don't expect a + * MSG-Attribute here, unlike the regular ECHO_MSG handler. We reply with a dump of + * "all messages that we got" (application specific, hard coded in this example). +*/ +int gnl_cb_echo_dumpit(struct sk_buff *pre_allocated_skb, struct netlink_callback *cb) { + void *msg_head; + int ret; + static const char HELLO_FROM_DUMPIT_MSG[] = "You set the flag NLM_F_DUMP; this message is " + "brought to you by .dumpit callback :)"; + pr_info("Called %s()\n", __func__); + + if (dumpit_cb_progress_data.runs_to_go == 0) { + pr_info("no more data to send in dumpit cb\n"); + // mark that dump is done; + return 0; + } else { + dumpit_cb_progress_data.runs_to_go--; + pr_info("%s: %d more runs to do\n", __func__, dumpit_cb_progress_data.runs_to_go); + } + + msg_head = genlmsg_put(pre_allocated_skb, // buffer for netlink message: struct sk_buff * + // According to my findings: this is not used for routing + // This can be used in an application specific way to target + // different endpoints within the same user application + // but general rule: just put sender port id here + cb->nlh->nlmsg_pid, // sending port (not process) id: int + // sequence number: int (might be used by receiver, but not mandatory) + // sequence 0, 1, 2... + dumpit_cb_progress_data.total_runs - dumpit_cb_progress_data.runs_to_go - 1, + &gnl_foobar_xmpl_family, // struct genl_family * + 0, // flags: int (for netlink header); we don't check them in the userland; application specific + // this way we can trigger a specific command/callback on the receiving side or imply + // on which type of command we are currently answering; this is application specific + GNL_FOOBAR_XMPL_C_ECHO_MSG // cmd: u8 (for generic netlink header); + ); + if (msg_head == NULL) { + pr_info("An error occurred in %s(): genlmsg_put() failed\n", __func__); + return -ENOMEM; + } + ret = nla_put_string( + pre_allocated_skb, + GNL_FOOBAR_XMPL_A_MSG, + HELLO_FROM_DUMPIT_MSG + ); + if (ret < 0) { + pr_info("An error occurred in %s():\n", __func__); + return ret; + } + genlmsg_end(pre_allocated_skb, msg_head); + + // return the length of data we wrote into the pre-allocated buffer + return pre_allocated_skb->len; +} + +/** + * Regular ".doit"-callback function if a Generic Netlink with command `GNL_FOOBAR_XMPL_C_REPLY_WITH_NLMSG_ERR` is received. + * Please look into the comments where this is used as ".doit" callback above in + * `struct genl_ops gnl_foobar_xmpl_ops[]` for more information about ".doit" callbacks. +*/ +int gnl_cb_doit_reply_with_nlmsg_err(struct sk_buff *sender_skb, struct genl_info *info) { + pr_info("%s() invoked, a NLMSG_ERR response will be sent back\n", __func__); + + /* + * Generic Netlink is smart enough and sends a NLMSG_ERR reply automatically as reply + * Quote from https://lwn.net/Articles/208755/: + * "The 'doit' handler should do whatever processing is necessary and return + * zero on success, or a negative value on failure. Negative return values + * will cause a NLMSG_ERROR message to be sent while a zero return value will + * only cause a NLMSG_ERROR message to be sent if the request is received with + * the NLM_F_ACK flag set." + * + * You can find this in Linux code here: + * https://elixir.bootlin.com/linux/v5.11/source/net/netlink/af_netlink.c#L2499 + * + * One can find more information about NLMSG_ERROR responses and how to handle them + * in userland in the manpage: https://man7.org/linux/man-pages/man7/netlink.7.html + */ + return -EINVAL; +} + +/** + * Called before a dump with `gnl_cb_echo_dumpit()` starts. + * See where this is assigned in `struct genl_ops gnl_foobar_xmpl_ops[]` as + * `.start` callback for more comments. + * + * @return success (0) or error. + */ +int gnl_cb_echo_dumpit_before(struct netlink_callback *cb) { + int ret; + static int unsigned const dump_runs = 3; + pr_info("%s: dump started. acquire lock. initialize dump runs_to_go (number of receives userland can make) to %d runs\n", __func__, dump_runs); + // Lock the mutex like mutex_lock(), and return 0 if the mutex has been acquired or sleep until the mutex becomes available + // If a signal arrives while waiting for the lock then this function returns -EINTR. + ret = mutex_lock_interruptible(&dumpit_cb_progress_data.mtx); + if (ret != 0) { + pr_err("Failed to get lock!\n"); + return ret; + } + dumpit_cb_progress_data.total_runs = dump_runs; + dumpit_cb_progress_data.runs_to_go = dump_runs; + return 0; + +} + +/** + * Called before a dump with `gnl_cb_echo_dumpit()` starts. + * See where this is assigned in `struct genl_ops gnl_foobar_xmpl_ops[]` as + * `.start` callback for more comments. + * + * @return success (0) or error. + */ +int gnl_cb_echo_dumpit_before_after(struct netlink_callback *cb) { + pr_info("%s: dump done. release lock\n", __func__); + mutex_unlock(&dumpit_cb_progress_data.mtx); + return 0; +} + + +/** ---------------------- not needed ML */ + + +/** ---------------------- chenge this in the probe of the rpmsg driver ML */ + +/** + * Module/driver initializer. Called on module load/insertion. + * + * @return success (0) or error code. + */ +static int __init gnl_foobar_xmpl_module_init(void) { + int rc; + pr_info("Generic Netlink Example Module inserted.\n"); + + // Register family with its operations and policies + rc = genl_register_family(&gnl_foobar_xmpl_family); + if (rc != 0) { + pr_err("FAILED: genl_register_family(): %i\n", rc); + pr_err("An error occurred while inserting the generic netlink example module\n"); + return -1; + } else { + pr_info("successfully registered custom Netlink family '" FAMILY_NAME "' using Generic Netlink.\n"); + } + + mutex_init(&dumpit_cb_progress_data.mtx); + + return 0; +} + +/** + * Module/driver uninitializer. Called on module unload/removal. + * + * @return success (0) or error code. + */ +static void __exit gnl_foobar_xmpl_module_exit(void) { + int ret; + pr_info("Generic Netlink Example Module unloaded.\n"); + + // Unregister the family + ret = genl_unregister_family(&gnl_foobar_xmpl_family); + if (ret != 0) { + pr_err("genl_unregister_family() failed: %i\n", ret); + return; + } else { + pr_info("successfully unregistered custom Netlink family '" FAMILY_NAME "' using Generic Netlink.\n"); + } + + mutex_destroy(&dumpit_cb_progress_data.mtx); +} + +module_init(gnl_foobar_xmpl_module_init); +module_exit(gnl_foobar_xmpl_module_exit); + +/** ---------------------- chenge this in the probe of the rpmsg driver ML */ diff --git a/recipes-vrpmdv/recipes-base/vrpmdv-monitoring-controler/files/vrpmdv-monitoring-cmd.h b/recipes-vrpmdv/recipes-base/vrpmdv-monitoring-controler/files/vrpmdv-monitoring-cmd.h new file mode 100644 index 0000000..bba93ff --- /dev/null +++ b/recipes-vrpmdv/recipes-base/vrpmdv-monitoring-controler/files/vrpmdv-monitoring-cmd.h @@ -0,0 +1,98 @@ +/* Copyright 2021 Philipp Schuster + * + * This Software is owned by Markus Lehr. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, + * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A + * PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#pragma once + +/* + * This file describes the common properties of our custom Netlink family on top of Generic Netlink. + * It is used by all C projects, i.e. the Kernel driver, and the userland components. + */ + +/** + * Generic Netlink will create a Netlink family with this name. Kernel will asign + * a numeric ID and afterwards we can talk to the family with its ID. To get + * the ID we use Generic Netlink in the userland and pass the family name. + * + * Short for: Generic Netlink VRPMDV Monitoring gnl_foobar_mcmd + */ +#define FAMILY_NAME "gnl-vrpmdv-mcmd" + +/** + * These are the attributes that we want to share in gnl_foobar_xmpl. + * You can understand an attribute as a semantic type. This is + * the payload of Netlink messages. + * GNl: Generic Netlink + */ +enum GNL_VRPMDV_XMPL_ATTRIBUTE { + /** + * 0 is never used (=> UNSPEC), you can also see this in other family definitions in Linux code. + * We do the same, although I'm not sure, if this is really enforced by code. + */ + GNL_VRPMDV_MCMD_A_UNSPEC, + /** We expect a MSG to be a null-terminated C-string. */ + GNL_VRPMDV_MCMD_A_MSG, + /** Unused marker field to get the length/count of enum entries. No real attribute. */ + __GNL_VRPMDV_MCMD_A_MAX, +}; +/** + * Number of elements in `enum GNL_VRPMDV_MCMD_COMMAND`. + */ +#define GNL_FOOBAR_XMPL_ATTRIBUTE_ENUM_LEN (__GNL_VRPMDV_MCMD_A_MAX) +/** + * The number of actual usable attributes in `enum GNL_VRPMDV_MCMD_ATTRIBUTE`. + * This is `GNL_VRPMDV_MCMD_ATTRIBUTE_ENUM_LEN` - 1 because "UNSPEC" is never used. + */ +#define GNL_VRPMDV_MCMD_ATTRIBUTE_COUNT (GNL_VRPMDV_MCMD_ATTRIBUTE_ENUM_LEN - 1) + +/** + * Enumeration of all commands (functions) that our custom protocol on top + * of generic netlink supports. This can be understood as the action that + * we want to trigger on the receiving side. + */ +enum GNL_VRPMDV_MCMD_COMMAND { + /** + * 0 is never used (=> UNSPEC), you can also see this in other family definitions in Linux code. + * We do the same, although I'm not sure, if this is really enforced by code. + */ + GNL_VRPMDV_MCMD_C_UNSPEC, + + // first real command is "1" (>0) + /** + * When this command is received, we expect the attribute `GNL_VRPMDV_MCMD_ATTRIBUTE::GNL_VRPMDV_MCMD_A_MSG` to + * be present in the Generic Netlink request message. The kernel reads the message from the packet and + * sent it to the copro. THe result will be return by creating a new Generic Netlink response message + * with an corresponding attribute/payload. + * + * This command/signaling mechanism is independent of the Netlink flag `NLM_F_ECHO (0x08)`. We use it as + * "echo specific data" instead of return a 1:1 copy of the package, which you could do with + * `NLM_F_ECHO (0x08)` for example. + */ + GNL_VRPMDV_MCMD_C_MSG, + + /** + * Provokes a NLMSG_ERR answer to this request as described in netlink manpage + * (https://man7.org/linux/man-pages/man7/netlink.7.html). + */ + GNL_VRPMDV_MCMD_C_REPLY_WITH_NLMSG_ERR, + + /** Unused marker field to get the length/count of enum entries. No real attribute. */ + __GNL_VRPMDV_MCMD_C_MAX, +}; +/** + * Number of elements in `enum GNL_VRPMDV_MCMD_COMMAND`. + */ +#define GNL_VRPMDV_MCMD_COMMAND_ENUM_LEN (__GNL_VRPMDV_MCMD_C_MAX) +/** + * The number of actual usable commands in `enum GNL_FOOBAR_XMPL_COMMAND`. + * This is `GNL_VRPMDV_MCMD_COMMAND_ENUM_LEN` - 1 because "UNSPEC" is never used. + */ +#define GNL_VRPMDV_MCMD_COMMAND_COUNT (GNL_VRPMDV_MCMD_COMMAND_ENUM_LEN - 1) \ No newline at end of file diff --git a/recipes-vrpmdv/recipes-base/vrpmdv-monitoring-controler/files/vrpmdv-monitoring-controler.c b/recipes-vrpmdv/recipes-base/vrpmdv-monitoring-controler/files/vrpmdv-monitoring-controler.c new file mode 100644 index 0000000..86d6e26 --- /dev/null +++ b/recipes-vrpmdv/recipes-base/vrpmdv-monitoring-controler/files/vrpmdv-monitoring-controler.c @@ -0,0 +1,865 @@ +/* Copyright 2024 Markus Lehr + * + * + * This Software is owned by Markus Lehr. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, + * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A + * PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +// ################################################################################################## +/* + * This is a Linux kernel module/driver called "vrpmdv-monitoring-cmd " which holds the family ID + * and functions to handle the monitoring in a Generic Netlink in the kernel. + * "It registers a Netlink family called "vrpmdv-monitoring_cmd". + * + * + * You can find some more interesting documentation about Generic Netlink here: + * "Generic Netlink HOW-TO based on Jamal's original doc" https://lwn.net/Articles/208755/ + */ + + +#include +#include + +// basic definitions for kernel module development +#include +// definitions for generic netlink families, policies etc; +// transitive dependencies for basic netlink, sockets etc +#include +// required for locking inside the .dumpit callback demonstration +#include +#include + + +// data/vars/enums/properties that describes our protocol that we implement +// on top of generic netlink (like functions we want to trigger on the receiving side) +//#include "vrpmdv-monitoring-cmd.h" + + +/* ######################## CONVENIENT LOGGING MACROS ######################## */ +// (Re)definition of some convenient logging macros from . You can see the logging +// messages when printing the kernel log, e.g. with `$ sudo dmesg`. +// See https://elixir.bootlin.com/linux/latest/source/include/linux/printk.h + +// with this redefinition we can easily prefix all log messages from pr_* logging macros +#ifdef pr_fmt +#undef pr_fmt +#endif +#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt +/* ########################################################################### */ + + +#define MSG "hello Monitoring!" + +static int count = 100; +module_param(count, int, 0644); + +struct instance_data { + int rx_count; +}; + + +// std::chrono::seconds timeoutPeriod = 5; +// auto timePoint = std::chrono::system_clock::now() + timeoutPeriod; + + +/** ----- NETLINK Driver defintion ------------------*/ + + +/** + * Generic Netlink will create a Netlink family with this name. Kernel will asign + * a numeric ID and afterwards we can talk to the family with its ID. To get + * the ID we use Generic Netlink in the userland and pass the family name. + * + * Short for: Generic Netlink VRPMDV Monitoring gnl_foobar_mcmd + */ +#define FAMILY_NAME "gnl-vrpmdv-mcmd" + +/** + * These are the attributes that we want to share in gnl_foobar_xmpl. + * You can understand an attribute as a semantic type. This is + * the payload of Netlink messages. + * GNl: Generic Netlink + */ +enum GNL_VRPMDV_XMPL_ATTRIBUTE { + /** + * 0 is never used (=> UNSPEC), you can also see this in other family definitions in Linux code. + * We do the same, although I'm not sure, if this is really enforced by code. + */ + GNL_VRPMDV_MCMD_A_UNSPEC, + /** We expect a MSG to be a null-terminated C-string. */ + GNL_VRPMDV_MCMD_A_MSG, + /** Unused marker field to get the length/count of enum entries. No real attribute. */ + __GNL_VRPMDV_MCMD_A_MAX, +}; +/** + * Number of elements in `enum GNL_VRPMDV_MCMD_COMMAND`. + */ +#define GNL_VRPMDV_MCMD_ATTRIBUTE_ENUM_LEN (__GNL_VRPMDV_MCMD_A_MAX) +/** + * The number of actual usable attributes in `enum GNL_VRPMDV_MCMD_ATTRIBUTE`. + * This is `GNL_VRPMDV_MCMD_ATTRIBUTE_ENUM_LEN` - 1 because "UNSPEC" is never used. + */ +#define GNL_VRPMDV_MCMD_ATTRIBUTE_COUNT (GNL_VRPMDV_MCMD_ATTRIBUTE_ENUM_LEN - 1) + +/** + * Enumeration of all commands (functions) that our custom protocol on top + * of generic netlink supports. This can be understood as the action that + * we want to trigger on the receiving side. + */ +enum GNL_VRPMDV_MCMD_COMMAND { + /** + * 0 is never used (=> UNSPEC), you can also see this in other family definitions in Linux code. + * We do the same, although I'm not sure, if this is really enforced by code. + */ + GNL_VRPMDV_MCMD_C_UNSPEC, + + // first real command is "1" (>0) + /** + * When this command is received, we expect the attribute `GNL_VRPMDV_MCMD_ATTRIBUTE::GNL_VRPMDV_MCMD_A_MSG` to + * be present in the Generic Netlink request message. The kernel reads the message from the packet and + * sent it to the copro. THe result will be return by creating a new Generic Netlink response message + * with an corresponding attribute/payload. + * + * This command/signaling mechanism is independent of the Netlink flag `NLM_F_ECHO (0x08)`. We use it as + * "echo specific data" instead of return a 1:1 copy of the package, which you could do with + * `NLM_F_ECHO (0x08)` for example. + */ + GNL_VRPMDV_MCMD_C_MSG, + + /** + * Provokes a NLMSG_ERR answer to this request as described in netlink manpage + * (https://man7.org/linux/man-pages/man7/netlink.7.html). + */ + GNL_VRPMDV_MCMD_C_REPLY_WITH_NLMSG_ERR, + + /** Unused marker field to get the length/count of enum entries. No real attribute. */ + __GNL_VRPMDV_MCMD_C_MAX, +}; +/** + * Number of elements in `enum GNL_VRPMDV_MCMD_COMMAND`. + */ +#define GNL_VRPMDV_MCMD_COMMAND_ENUM_LEN (__GNL_VRPMDV_MCMD_C_MAX) +/** + * The number of actual usable commands in `enum GNL_FOOBAR_XMPL_COMMAND`. + * This is `GNL_VRPMDV_MCMD_COMMAND_ENUM_LEN` - 1 because "UNSPEC" is never used. + */ +#define GNL_VRPMDV_MCMD_COMMAND_COUNT (GNL_VRPMDV_MCMD_COMMAND_ENUM_LEN - 1) + +#define NODATARECEIVED 0 +#define DATARECEIVED 1 + +/** + * Data structure required for our .doit callback handler to + * know about the progress of an ongoing cmd execution. + * See the cmd callback handler how it is used. + */ +// struct { +// // from +// /** +// * rpmsg wait for response from copro side. +// */ +// struct mutex sendMTX; +// /** +// * rpmsg wait for response from copro side. +// */ +// struct mutex receiveCV; +// /** +// * Wait Queue: if it is signaled we have received data from copro +// */ +// wait_queue_head_t receive_queue; +// /** +// * Waitflag: 0= no data received, 1 = data received +// */ +// int receive_queue_flag = NODATARECEIVED; +// /** +// * Condition vaiable signal we have received data from copro +// */ +// // std::condition_variable cv; +// // /** +// // * Number that describes how many packets we need to send until we are done +// // * during an ongoing dumpit process. 0 = done. +// // */ +// // int unsigned runs_to_go; +// // /** +// // * Number that describes how many packets per dump are sent in total. +// // * Constant per dump. +// // */ +// // int unsigned total_runs; + +// //the rpmsg device which sends the data to the copro +// struct rpmsg_device *rpdev; /* handle rpmsg device */ +// } cmd_cb_progress_data; + + +// struct rpmsg_vrpmdv_mon_t{ +// // from +// /** +// * rpmsg wait for response from copro side. +// */ +// struct mutex sendMTX; +// /** +// * rpmsg wait for response from copro side. +// */ +// struct mutex receiveCV; +// /** +// * Wait Queue: if it is signaled we have received data from copro +// */ +// wait_queue_head_t receive_queue; +// /** +// * Waitflag: 0= no data received, 1 = data received +// */ +// int receive_queue_flag; +// //the rpmsg device which sends the data to the copro +// struct rpmsg_device* rpdev; /* handle rpmsg device */ +// }; + +// struct rpmsg_vrpmdv_mon_t vrpmdv_mon; + + + /** + * rpmsg wait for response from copro side. + */ + struct mutex sendMTX; + /** + * rpmsg wait for response from copro side. + */ + struct mutex receiveCV; + /** + * Wait Queue: if it is signaled we have received data from copro + */ + wait_queue_head_t receive_queue; + /** + * Waitflag: 0= no data received, 1 = data received + */ + int receive_queue_flag = NODATARECEIVED; + + char* received_bytes = NULL; + int received_len = 0; + //the rpmsg device which sends the data to the copro + struct rpmsg_device* prpdev = NULL; /* handle rpmsg device */ + + + // struct mutex mutex; /* mutex to protect the ioctls */ + // struct miscdevice mdev; /* misc device ref */ + // struct rpmsg_device *rpdev; /* handle rpmsg device */ + // struct list_head buffer_list; /* buffer instances list */ + + + +// Documentation is on the implementation of this function. +int gnl_cb_vrpmdv_doit(struct sk_buff *sender_skb, struct genl_info *info); + +// Documentation is on the implementation of this function. +int gnl_cb_doit_reply_with_nlmsg_err(struct sk_buff *sender_skb, struct genl_info *info); + +/** + * The length of `struct genl_ops gnl_foobar_xmpl_ops[]`. Not necessarily + * the number of commands in `enum GNlFoobarXmplCommand`. It depends on your application logic. + * For example, you can use the same command multiple times and - dependent by flag - + * invoke a different callback handler. In our simple example we just use one .doit callback + * per operation/command. + */ +#define GNL_VRPMDV_OPS_LEN (GNL_VRPMDV_MCMD_COMMAND_COUNT) + +/** + * Array with all operations that our protocol on top of Generic Netlink + * supports. An operation is the glue between a command ("cmd" field in `struct genlmsghdr` of + * received Generic Netlink message) and the corresponding ".doit" callback function. + * See: https://elixir.bootlin.com/linux/v5.11/source/include/net/genetlink.h#L148 + */ +struct genl_ops gnl_vrpmdv_mcmd_ops[GNL_VRPMDV_OPS_LEN] = { + { + /* The "cmd" field in `struct genlmsghdr` of received Generic Netlink message */ + .cmd = GNL_VRPMDV_MCMD_C_MSG, + /* TODO Use case ? */ + .flags = 0, + /* TODO Use case ? */ + .internal_flags = 0, + /* Callback handler when a request with the specified ".cmd" above is received. + * Always validates the payload except one set NO_STRICT_VALIDATION flag in ".validate" + * See: https://elixir.bootlin.com/linux/v5.11/source/net/netlink/genetlink.c#L717 + * + * Quote from: https://lwn.net/Articles/208755 + * "The 'doit' handler should do whatever processing is necessary and return + * zero on success, or a negative value on failure. Negative return values + * will cause a NLMSG_ERROR message to be sent while a zero return value will + * only cause a NLMSG_ERROR message to be sent if the request is received with + * the NLM_F_ACK flag set." + * + * You can find this in Linux code here: + * https://elixir.bootlin.com/linux/v5.11/source/net/netlink/af_netlink.c#L2499 + * + * One can find more information about NLMSG_ERROR responses and how to handle them + * in userland in the manpage: https://man7.org/linux/man-pages/man7/netlink.7.html + * + */ + .doit = gnl_cb_vrpmdv_doit, + /* This callback is similar in use to the standard Netlink 'dumpit' callback. + * The 'dumpit' callback is invoked when a Generic Netlink message is received + * with the NLM_F_DUMP flag set. + * + * A dump can be understand as a "GET ALL DATA OF THE GIVEN ENTITY", i.e. + * the userland can receive as long as the .dumpit callback returns data. + * + * .dumpit is not mandatory, but either it or .doit must be provided, see + * https://elixir.bootlin.com/linux/v5.11/source/net/netlink/genetlink.c#L367 + * + * To be honest I don't know in what use case one should use .dumpit and why + * it is useful, because you can achieve the same also with .doit handlers. + * Anyway, this is just an example/tutorial. + * + * Quote from: https://lwn.net/Articles/208755 + * "The main difference between a 'dumpit' handler and a 'doit' handler is + * that a 'dumpit' handler does not allocate a message buffer for a response; + * a pre-allocated sk_buff is passed to the 'dumpit' handler as the first + * parameter. The 'dumpit' handler should fill the message buffer with the + * appropriate response message and return the size of the sk_buff, + * i.e. sk_buff->len, and the message buffer will automatically be sent to the + * Generic Netlink client that initiated the request. As long as the 'dumpit' + * handler returns a value greater than zero it will be called again with a + * newly allocated message buffer to fill, when the handler has no more data + * to send it should return zero; error conditions are indicated by returning + * a negative value. If necessary, state can be preserved in the + * netlink_callback parameter which is passed to the 'dumpit' handler; the + * netlink_callback parameter values will be preserved across handler calls + * for a single request." + * + * You can see the check for the NLM_F_DUMP-flag here: + * https://elixir.bootlin.com/linux/v5.11/source/net/netlink/genetlink.c#L780 + */ + .dumpit = NULL, //gnl_cb_echo_dumpit, + /* Start callback for dumps. Can be used to lock data structures. */ + .start = NULL, //gnl_cb_echo_dumpit_before, + /* Completion callback for dumps. Can be used for cleanup after a dump and releasing locks. */ + .done = NULL, //gnl_cb_echo_dumpit_before_after, + /* + 0 (= "validate strictly") or value `enum genl_validate_flags` + * see: https://elixir.bootlin.com/linux/v5.11/source/include/net/genetlink.h#L108 + */ + .validate = 0, + }, + { + .cmd = GNL_VRPMDV_MCMD_C_REPLY_WITH_NLMSG_ERR, + .flags = 0, + .internal_flags = 0, + .doit = gnl_cb_doit_reply_with_nlmsg_err, + // .dumpit is not required, only optional; application specific/dependent on your use case + // in a real application you probably have different .dumpit handlers per operation/command + .dumpit = NULL, + // in a real application you probably have different .start handlers per operation/command + .start = NULL, + // in a real application you probably have different .done handlers per operation/command + .done = NULL, + .validate = 0, + } +}; + + +/** + * Attribute policy: defines which attribute has which type (e.g int, char * etc). + * This get validated for each received Generic Netlink message, if not deactivated + * in `gnl_foobar_xmpl_ops[].validate`. + * See https://elixir.bootlin.com/linux/v5.11/source/net/netlink/genetlink.c#L717 + */ +static struct nla_policy gnl_vrpmdv_mcmd_policy[GNL_VRPMDV_MCMD_ATTRIBUTE_ENUM_LEN] = { + // In case you are seeing this syntax for the first time (I also learned this just after a few years of + // coding with C myself): The following static array initiations are equivalent: + // `int a[2] = {1, 2}` <==> `int a[2] = {[0] => 1, [1] => 2}`. + + [GNL_VRPMDV_MCMD_A_UNSPEC] = {.type = NLA_UNSPEC}, + + // You can set this to NLA_U32 for testing and send an ECHO message from the userland + // It will fail in this case and you see a entry in the kernel log. + + // `enum GNL_FOOBAR_XMPL_ATTRIBUTE::GNL_FOOBAR_XMPL_A_MSG` is a null-terminated C-String + [GNL_VRPMDV_MCMD_A_MSG] = {.type = NLA_NUL_STRING}, +}; + + + +/** + * Definition of the Netlink family we want to register using Generic Netlink functionality + */ +static struct genl_family gnl_vrpmdv_mcmd_family = { + // automatically assign an id + .id = 0, + // we don't use custom additional header info / user specific header + .hdrsize = 0, + // The name of this family, used by userspace application to get the numeric ID + .name = FAMILY_NAME, + // family specific version number; can be used to evolve application over time (multiple versions) + .version = 1, + // delegates all incoming requests to callback functions + .ops = gnl_vrpmdv_mcmd_ops, + // length of array `gnl_foobar_xmpl_ops` + .n_ops = GNL_VRPMDV_OPS_LEN, + // attribute policy (for validation of messages). Enforced automatically, except ".validate" in + // corresponding ".ops"-field is set accordingly. + .policy = gnl_vrpmdv_mcmd_policy, + // Number of attributes / bounds check for policy (array length) + .maxattr = GNL_VRPMDV_MCMD_ATTRIBUTE_ENUM_LEN, + // Owning Kernel module of the Netlink family we register. + .module = THIS_MODULE, + + // Actually not necessary because this memory region would be zeroed anyway during module load, + // but this way one sees all possible options. + + // if your application must handle multiple netlink calls in parallel (where one should not block the next + // from starting), set this to true! otherwise all netlink calls are mutually exclusive + .parallel_ops = 0, + // set to true if the family can handle network namespaces and should be presented in all of them + .netnsok = 0, + // called before an operation's doit callback, it may do additional, common, filtering and return an error + .pre_doit = NULL, + // called after an operation's doit callback, it may undo operations done by pre_doit, for example release locks + .post_doit = NULL, +}; + + + +/** + * Regular ".doit"-callback function if a Generic Netlink with command `GNL_VRPMDV_MCMD_C_MSG` is received. + * Please look into the comments where this is used as ".doit" callback above in + * `struct genl_ops gnl_vrpmdv_mcmd_ops[]` for more information about ".doit" callbacks. +*/ +int gnl_cb_vrpmdv_doit(struct sk_buff *sender_skb, struct genl_info *info) { + struct nlattr *na; + struct sk_buff *reply_skb; + int rc; + void *msg_head; + char *recv_msg; + + pr_info("%s() invoked\n", __func__); + + if (info == NULL) { + // should never happen + pr_err("An error occurred in %s():\n", __func__); + return -EINVAL; + } + + /* + * For each attribute there is an index in info->attrs which points to a nlattr structure + * in this structure the data is stored. + */ + na = info->attrs[GNL_VRPMDV_MCMD_A_MSG]; + + if (!na) { + pr_err("no info->attrs[%i]\n", GNL_VRPMDV_MCMD_A_MSG); + return -EINVAL; // we return here because we expect to recv a msg + } + + recv_msg = (char *) nla_data(na); + if (recv_msg == NULL) { + pr_err("error while receiving data\n"); + } else { + pr_info("received: '%s'\n", recv_msg); + } + + //aquire lock for cmd repmsg channel + // std::lock sendlk(cmd_cb_progress_data.sendmtx); + + //send the message to the copro over RPMSG + if (prpdev) { + rc = rpmsg_send(prpdev->ept, recv_msg, strlen(recv_msg)); + if (rc) { + pr_err("rpmsg_send failed: %d\n", rc); + return rc; + } + + // struct rpmsg_vrpmdv_mon_t *drv = dev_get_drvdata(&rpdev->dev); + + // Send a message back after we receive the reply from rpmsg channel + // --------------------- + + // Allocate some memory, since the size is not yet known use NLMSG_GOODSIZE + reply_skb = genlmsg_new(NLMSG_GOODSIZE, GFP_KERNEL); + if (reply_skb == NULL) { + pr_err("An error occurred in %s():\n", __func__); + return -ENOMEM; + } + + // Create the message headersprpdev + + // Add header to netlink message; + // afterwards the buffer looks like this: + // ---------------------------------- + // | netlink header | + // | generic netlink header | + // | | + // ---------------------------------- + // msg_head = genlmsg_put(reply_skb, // buffer for netlink message: struct sk_buff * + // // According to my findings: this is not used for routing + // // This can be used in an application specific way to target + // // different endpoints within the same user application + // // but general rule: just put sender port id here + // info->snd_portid, // sending port (not process) id: int + // info->snd_seq + 1, // sequence number: int (might be used by receiver, but not mandatory) + // &gnl_vrpmdv_mcmd_family, // struct genl_family * + // 0, // flags for Netlink header: int; application specific and not mandatory + // // The command/operation (u8) from `enum GNL_FOOBAR_XMPL_COMMAND` for Generic Netlink header + // GNL_VRPMDV_MCMD_C_MSG + // ); + + msg_head = genlmsg_put_reply(reply_skb, // buffer for netlink message: struct sk_buff * + info, // info + &gnl_vrpmdv_mcmd_family, // struct genl_family * + 0, // flags for Netlink header: int; application specific and not mandatory + // The command/operation (u8) from `enum GNL_FOOBAR_XMPL_COMMAND` for Generic Netlink header + info->genlhdr->cmd + ); + + if (msg_head == NULL) { + rc = ENOMEM; + pr_err("An error occurred in %s():\n", __func__); + return -rc; + } + + { + pr_info("wait for response\n"); + // wait until receive_queue_flag=1 , that means we have received data from Copro + wait_event_interruptible(receive_queue, receive_queue_flag != 0 ); + + //Copy data + receive_queue_flag = NODATARECEIVED; + + + + // std::unique_lock lk(cmd_cb_progress_data.receivemtx); + // if (myCondVar.wait_until(uLock, timePoint) == std::cv_status::timeout) + // { + // dev_err(&cmd_cb_progress_data.rpdev, "rpmsg_send failed, timeout: \n"); + // return -1: + // } + + //pr_info("get response: '%s'\n", recv_msg); + if (received_len > 0) { + pr_info("received data from copro %s\n", received_bytes); + } + else { + pr_err("don't received data from Copro \n"); + } + + } + + // Add a GNL_VRPMDV_MCMD_A_MSG attribute (actual value/payload to be sent) + // echo the value we just received + rc = nla_put_string(reply_skb, GNL_VRPMDV_MCMD_A_MSG, received_bytes); + + if (rc != 0) { + pr_err("An error occurred in %s():\n", __func__); + //free the buffer + kfree(received_bytes); + received_bytes = NULL; + return -rc; + } + + // Finalize the message: + // Corrects the netlink message header (length) to include the appended + // attributes. Only necessary if attributes have been added to the message. + genlmsg_end(reply_skb, msg_head); + + // Send the message back + rc = genlmsg_reply(reply_skb, info); + // same as genlmsg_unicast(genl_info_net(info), reply_skb, info->snd_portid) + // see https://elixir.bootlin.com/linux/v5.8.9/source/include/net/genetlink.h#L326 + + kfree(received_bytes); + received_bytes = NULL; + + if (rc != 0) { + pr_err("An error occurred in %s():\n", __func__); + return -rc; + } + return 0; + + } + pr_info("Device not set in Probe. Should not happen"); + return -1; +} + +/** + * Regular ".doit"-callback function if a Generic Netlink with command `GNL_FOOBAR_XMPL_C_REPLY_WITH_NLMSG_ERR` is received. + * Please look into the comments where this is used as ".doit" callback above in + * `struct genl_ops gnl_foobar_xmpl_ops[]` for more information about ".doit" callbacks. +*/ +int gnl_cb_doit_reply_with_nlmsg_err(struct sk_buff *sender_skb, struct genl_info *info) { + pr_info("%s() invoked, a NLMSG_ERR response will be sent back\n", __func__); + + /* + * Generic Netlink is smart enough and sends a NLMSG_ERR reply automatically as reply + * Quote from https://lwn.net/Articles/208755/: + * "The 'doit' handler should do whatever processing is necessary and return + * zero on success, or a negative value on failure. Negative return values + * will cause a NLMSG_ERROR message to be sent while a zero return value will + * only cause a NLMSG_ERROR message to be sent if the request is received with + * the NLM_F_ACK flag set." + * + * You can find this in Linux code here: + * https://elixir.bootlin.com/linux/v5.11/source/net/netlink/af_netlink.c#L2499 + * + * One can find more information about NLMSG_ERROR responses and how to handle them + * in userland in the manpage: https://man7.org/linux/man-pages/man7/netlink.7.html + */ + return -EINVAL; +} + + + +/** ----- NETLINK Driver defintion ------------------*/ + + + + + +/** + * callback that is called after the copro send data + * we have to copy it in a buffer for the netlink and later send it back to the userland + * +*/ +static int vrpmdv_monitoring_cb(struct rpmsg_device *rpdev, void *data, int len, + void *priv, u32 src) +{ + int ret = 0; + // struct instance_data *idata = dev_get_drvdata(&rpdev->dev); + + // dev_info(&rpdev->dev, "incoming msg %d (src: 0x%x)\n", + // ++idata->rx_count, src); + + print_hex_dump_debug(__func__, DUMP_PREFIX_NONE, 16, 1, data, len, + true); + if (len == 0) { + pr_err("(%s) Empty lenght requested\n", __func__); + return -EINVAL; + } + else { + pr_info("received data from copro %s\n", (char*) data); + } + + // received_bytes = (char *)kmalloc(len+1, GFP_KERNEL); + // memcpy(received_bytes, data, len); + + // rpmsg_RxBuf[len] = 0; + + + + received_bytes = (char *)kmalloc(len, GFP_KERNEL); + memcpy(received_bytes, data, len); + received_len = len; + receive_queue_flag= DATARECEIVED; + wake_up_interruptible(&receive_queue); + + // /* samples should not live forever */ + // if (idata->rx_count >= count) { + // dev_info(&rpdev->dev, "goodbye!\n"); + // return 0; + // } + + /* send a new message now */ + // ret = rpmsg_send(rpdev->ept, MSG, strlen(MSG)); + // if (ret) + // dev_err(&rpdev->dev, "rpmsg_send failed: %d\n", ret); + + return ret; +} + +static int vrpmdv_monitoring_probe(struct rpmsg_device *rpdev) +{ + int rc; + + // int ret; + // struct instance_data *idata; + + // dev_info(&rpdev->dev, "new channel: 0x%x -> 0x%x!\n", + // rpdev->src, rpdev->dst); + + pr_info("RPMSG monitroing control device driver started.\n"); + + // idata = devm_kzalloc(&rpdev->dev, sizeof(*idata), GFP_KERNEL); + // if (!idata) + // return -ENOMEM; + + // dev_set_drvdata(&rpdev->dev, idata); + + // /* send a message to our remote processor to */ + // ret = rpmsg_send(rpdev->ept, MSG, strlen(MSG)); + // if (ret) { + // dev_err(&rpdev->dev, "vrpmdv_monitoring_controler_send failed: %d\n", ret); + // return ret; + // } + + // return 0; + + // struct device *dev; + // dev = &rpdev->dev; + // struct rpmsg_vrpmdv_mon_t *rpmsg_vrpmdv_mon; + + // rpmsg_vrpmdv_mon = devm_kzalloc(dev, sizeof(*rpmsg_vrpmdv_mon), GFP_KERNEL); + // if (!rpmsg_vrpmdv_mon) + // return -ENOMEM; + + mutex_init(&sendMTX); + init_waitqueue_head (&receive_queue); + prpdev = rpdev; + + // dev_set_drvdata(&rpdev->dev, rpmsg_vrpmdv_mon); + pr_info("RPMSG CMD Device set.\n"); + + + /** NEU **/ + // if (cmd_cb_progress_data.rpdev == NULL) { + // cmd_cb_progress_data.rpdev = rpdev; + // pr_info("RPMSG CMD Device set.\n"); + // } + // else { + // pr_info("Error: RPMSG CMD Device already set. Don't set it twice\n"); + // } + + pr_info("Generic Netlink VRPMDV-Monitroring_Controler Module started.\n"); + + // Register family with its operations and policies + rc = genl_register_family(&gnl_vrpmdv_mcmd_family); + if (rc != 0) { + pr_err("FAILED: genl_register_family(): %i\n", rc); + pr_err("An error occurred while inserting the generic netlink example module\n"); + return -1; + } else { + pr_info("successfully registered custom Netlink family '" FAMILY_NAME "' using Generic Netlink.\n"); + } + + return 0; + + + +} + +static void vrpmdv_monitoring_remove(struct rpmsg_device *rpdev) +{ + int ret; + pr_info("Generic Netlink Example Module unloaded.\n"); + + // Unregister the family + ret = genl_unregister_family(&gnl_vrpmdv_mcmd_family); + if (ret != 0) { + pr_err("genl_unregister_family() failed: %i\n", ret); + return; + } else { + pr_info("successfully unregistered custom Netlink family '" FAMILY_NAME "' using Generic Netlink.\n"); + } + + mutex_destroy(&sendMTX); + wake_up_interruptible(&receive_queue); + + pr_info("vrpmdv-monitoring controler driver is removed\n"); + // dev_info(&rpdev->dev, "vrpmdv-monitoring controler driver is removed\n"); + +} + +static struct rpmsg_device_id vrpmdv_monitoring_controler_id_table[] = { + { .name = "vrpmdv-monitoring-controler" }, + { }, +}; +MODULE_DEVICE_TABLE(rpmsg, vrpmdv_monitoring_controler_id_table); + +static struct rpmsg_driver vrpmdv_monitoring_controler = { + .drv.name = KBUILD_MODNAME, + .id_table = vrpmdv_monitoring_controler_id_table, + .probe = vrpmdv_monitoring_probe, + .callback = vrpmdv_monitoring_cb, + .remove = vrpmdv_monitoring_remove, +}; +module_rpmsg_driver(vrpmdv_monitoring_controler); + + +// static struct rpmsg_driver vrpmdv_monitoring_data = { +// .drv.name = KBUILD_MODNAME, +// .id_table = vrpmdv_monitoring_controler_id_table, +// .probe = vrpmdv_monitoring_probe, +// .callback = vrpmdv_monitoring_cb, +// .remove = vrpmdv_monitoring_remove, +// }; + +// module_rpmsg_driver(vrpmdv_monitoring_data); + +MODULE_DESCRIPTION("Remote processor messaging vrpmdv monitoring controler"); +MODULE_LICENSE("GPL v2"); + + + +// /** +// * Module/driver initializer. Called on module load/insertion. +// * +// * @return success (0) or error code. +// */ +// static int __init gnl_foobar_xmpl_module_init(void) { +// int rc; +// pr_info("Generic Netlink Example Module inserted.\n"); + +// // Register family with its operations and policies +// rc = genl_register_family(&gnl_foobar_xmpl_family); +// if (rc != 0) { +// pr_err("FAILED: genl_register_family(): %i\n", rc); +// pr_err("An error occurred while inserting the generic netlink example module\n"); +// return -1; +// } else { +// pr_info("successfully registered custom Netlink family '" FAMILY_NAME "' using Generic Netlink.\n"); +// } + +// mutex_init(&dumpit_cb_progress_data.mtx); + +// return 0; +// } + +// /** +// * Module/driver uninitializer. Called on module unload/removal. +// * +// * @return success (0) or error code. +// */ +// static void __exit gnl_foobar_xmpl_module_exit(void) { +// int ret; +// pr_info("Generic Netlink Example Module unloaded.\n"); + +// // Unregister the family +// ret = genl_unregister_family(&gnl_foobar_xmpl_family); +// if (ret != 0) { +// pr_err("genl_unregister_family() failed: %i\n", ret); +// return; +// } else { +// pr_info("successfully unregistered custom Netlink family '" FAMILY_NAME "' using Generic Netlink.\n"); +// } + +// mutex_destroy(&dumpit_cb_progress_data.mtx); +// } + + +// ---- + +// static int __init rpmsg_sdb_drv_init(void) +// { +// int ret = 0; + +// /* Register rpmsg device */ +// ret = register_rpmsg_driver(&rpmsg_sdb_rmpsg_drv); + +// if (ret) { +// pr_err("rpmsg_sdb(ERROR): Failed to register device\n"); +// return ret; +// } + +// pr_info("rpmsg_sdb: Init done\n"); + +// return ret; +// } + +// static void __exit rpmsg_sdb_drv_exit(void) +// { +// unregister_rpmsg_driver(&rpmsg_sdb_rmpsg_drv); +// pr_info("rpmsg_sdb: Exit\n"); +// } + +// module_init(rpmsg_sdb_drv_init); +// module_exit(rpmsg_sdb_drv_exit); diff --git a/recipes-vrpmdv/recipes-base/vrpmdv-monitoring-controler/save/kernel-module-vrpmdv-monitoring-driver.bb b/recipes-vrpmdv/recipes-base/vrpmdv-monitoring-controler/save/kernel-module-vrpmdv-monitoring-driver.bb new file mode 100644 index 0000000..9bd4cda --- /dev/null +++ b/recipes-vrpmdv/recipes-base/vrpmdv-monitoring-controler/save/kernel-module-vrpmdv-monitoring-driver.bb @@ -0,0 +1,16 @@ +SUMMARY = "VRPMDV Monitoring Driver" +LICENSE = "GPL-2.0-only" +LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/GPL-2.0-only;md5=801f80980d171dd6425610833a22dbe6" + +inherit module + +SRC_URI = "file://Makefile \ + file://vrpmdv-monitoring.c \ + " + +S = "${WORKDIR}" + +# The inherit of module.bbclass will automatically name module packages with +# "kernel-module-" prefix as required by the oe-core build environment. + +RPROVIDES:${PN} += "kernel-module-vrpmdv-monitoring" diff --git a/recipes-vrpmdv/recipes-base/vrpmdv-monitoring-controler/save/netlink-save.c.save b/recipes-vrpmdv/recipes-base/vrpmdv-monitoring-controler/save/netlink-save.c.save new file mode 100644 index 0000000..8a32ba8 --- /dev/null +++ b/recipes-vrpmdv/recipes-base/vrpmdv-monitoring-controler/save/netlink-save.c.save @@ -0,0 +1,541 @@ +/* Copyright 2021 Philipp Schuster + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in the + * Software without restriction, including without limitation the rights to use, copy, + * modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, subject to the + * following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies + * or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, + * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A + * PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +// ################################################################################################## +/* + * This is a Linux kernel module/driver called "gnl_foobar_xmpl" which shows you the basics of using + * Generic Netlink in the kernel. It registers a Netlink family called "gnl_foobar_xmpl". See + * "gnl_foobar_xmpl_prop.h" for common properties of the family. "Generic Netlink" offers us a lot of + * convenient functions to register new/custom Netlink families on the fly during runtime. We use this + * functionality here. It implements simple IPC between Userland and Kernel (Kernel responds to userland). + * + * Check "gnl_foobar_xmpl_prop.h" for common properties of the family first, afterwards follow the code here. + * + * You can find some more interesting documentation about Generic Netlink here: + * "Generic Netlink HOW-TO based on Jamal's original doc" https://lwn.net/Articles/208755/ + */ + +// basic definitions for kernel module development +#include +// definitions for generic netlink families, policies etc; +// transitive dependencies for basic netlink, sockets etc +#include +// required for locking inside the .dumpit callback demonstration +#include + +// data/vars/enums/properties that describes our protocol that we implement +// on top of generic netlink (like functions we want to trigger on the receiving side) +#include "gnl_foobar_xmpl_prop.h" + +// Module/Driver description. +// You can see this for example when executing `$ modinfo ./gnl_foobar_xmpl.ko` (after build). +MODULE_LICENSE("GPL"); +MODULE_AUTHOR("Philipp Schuster "); +MODULE_DESCRIPTION( + "Linux driver that registers the custom Netlink family " + "\"" FAMILY_NAME "\" via Generic Netlink and responds to echo messages " + "according to the properties specified in \"gnl_foobar_xmpl_prop.h\"." +); + + +/* ######################## CONVENIENT LOGGING MACROS ######################## */ +// (Re)definition of some convenient logging macros from . You can see the logging +// messages when printing the kernel log, e.g. with `$ sudo dmesg`. +// See https://elixir.bootlin.com/linux/latest/source/include/linux/printk.h + +// with this redefinition we can easily prefix all log messages from pr_* logging macros +#ifdef pr_fmt +#undef pr_fmt +#endif +#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt +/* ########################################################################### */ + +/** + * Data structure required for our .dumpit callback handler to + * know about the progress of an ongoing dump. + * See the dumpit callback handler how it is used. + */ +struct { + // from + /** + * Only one process is allowed per dump process. We need a lock for that. + */ + struct mutex mtx; + /** + * Number that describes how many packets we need to send until we are done + * during an ongoing dumpit process. 0 = done. + */ + int unsigned runs_to_go; + /** + * Number that describes how many packets per dump are sent in total. + * Constant per dump. + */ + int unsigned total_runs; +} dumpit_cb_progress_data; + +// Documentation is on the implementation of this function. +int gnl_cb_echo_doit(struct sk_buff *sender_skb, struct genl_info *info); + +// Documentation is on the implementation of this function. +int gnl_cb_echo_dumpit(struct sk_buff *pre_allocated_skb, struct netlink_callback *cb); + +// Documentation is on the implementation of this function. +int gnl_cb_echo_dumpit_before(struct netlink_callback *cb); + +// Documentation is on the implementation of this function. +int gnl_cb_echo_dumpit_before_after(struct netlink_callback *cb); + +// Documentation is on the implementation of this function. +int gnl_cb_doit_reply_with_nlmsg_err(struct sk_buff *sender_skb, struct genl_info *info); + +/** + * The length of `struct genl_ops gnl_foobar_xmpl_ops[]`. Not necessarily + * the number of commands in `enum GNlFoobarXmplCommand`. It depends on your application logic. + * For example, you can use the same command multiple times and - dependent by flag - + * invoke a different callback handler. In our simple example we just use one .doit callback + * per operation/command. + */ +#define GNL_FOOBAR_OPS_LEN (GNL_FOOBAR_XMPL_COMMAND_COUNT) + +/** + * Array with all operations that our protocol on top of Generic Netlink + * supports. An operation is the glue between a command ("cmd" field in `struct genlmsghdr` of + * received Generic Netlink message) and the corresponding ".doit" callback function. + * See: https://elixir.bootlin.com/linux/v5.11/source/include/net/genetlink.h#L148 + */ +struct genl_ops gnl_foobar_xmpl_ops[GNL_FOOBAR_OPS_LEN] = { + { + /* The "cmd" field in `struct genlmsghdr` of received Generic Netlink message */ + .cmd = GNL_FOOBAR_XMPL_C_ECHO_MSG, + /* TODO Use case ? */ + .flags = 0, + /* TODO Use case ? */ + .internal_flags = 0, + /* Callback handler when a request with the specified ".cmd" above is received. + * Always validates the payload except one set NO_STRICT_VALIDATION flag in ".validate" + * See: https://elixir.bootlin.com/linux/v5.11/source/net/netlink/genetlink.c#L717 + * + * Quote from: https://lwn.net/Articles/208755 + * "The 'doit' handler should do whatever processing is necessary and return + * zero on success, or a negative value on failure. Negative return values + * will cause a NLMSG_ERROR message to be sent while a zero return value will + * only cause a NLMSG_ERROR message to be sent if the request is received with + * the NLM_F_ACK flag set." + * + * You can find this in Linux code here: + * https://elixir.bootlin.com/linux/v5.11/source/net/netlink/af_netlink.c#L2499 + * + * One can find more information about NLMSG_ERROR responses and how to handle them + * in userland in the manpage: https://man7.org/linux/man-pages/man7/netlink.7.html + * + */ + .doit = gnl_cb_echo_doit, + /* This callback is similar in use to the standard Netlink 'dumpit' callback. + * The 'dumpit' callback is invoked when a Generic Netlink message is received + * with the NLM_F_DUMP flag set. + * + * A dump can be understand as a "GET ALL DATA OF THE GIVEN ENTITY", i.e. + * the userland can receive as long as the .dumpit callback returns data. + * + * .dumpit is not mandatory, but either it or .doit must be provided, see + * https://elixir.bootlin.com/linux/v5.11/source/net/netlink/genetlink.c#L367 + * + * To be honest I don't know in what use case one should use .dumpit and why + * it is useful, because you can achieve the same also with .doit handlers. + * Anyway, this is just an example/tutorial. + * + * Quote from: https://lwn.net/Articles/208755 + * "The main difference between a 'dumpit' handler and a 'doit' handler is + * that a 'dumpit' handler does not allocate a message buffer for a response; + * a pre-allocated sk_buff is passed to the 'dumpit' handler as the first + * parameter. The 'dumpit' handler should fill the message buffer with the + * appropriate response message and return the size of the sk_buff, + * i.e. sk_buff->len, and the message buffer will automatically be sent to the + * Generic Netlink client that initiated the request. As long as the 'dumpit' + * handler returns a value greater than zero it will be called again with a + * newly allocated message buffer to fill, when the handler has no more data + * to send it should return zero; error conditions are indicated by returning + * a negative value. If necessary, state can be preserved in the + * netlink_callback parameter which is passed to the 'dumpit' handler; the + * netlink_callback parameter values will be preserved across handler calls + * for a single request." + * + * You can see the check for the NLM_F_DUMP-flag here: + * https://elixir.bootlin.com/linux/v5.11/source/net/netlink/genetlink.c#L780 + */ + .dumpit = gnl_cb_echo_dumpit, + /* Start callback for dumps. Can be used to lock data structures. */ + .start = gnl_cb_echo_dumpit_before, + /* Completion callback for dumps. Can be used for cleanup after a dump and releasing locks. */ + .done = gnl_cb_echo_dumpit_before_after, + /* + 0 (= "validate strictly") or value `enum genl_validate_flags` + * see: https://elixir.bootlin.com/linux/v5.11/source/include/net/genetlink.h#L108 + */ + .validate = 0, + }, + { + .cmd = GNL_FOOBAR_XMPL_C_REPLY_WITH_NLMSG_ERR, + .flags = 0, + .internal_flags = 0, + .doit = gnl_cb_doit_reply_with_nlmsg_err, + // .dumpit is not required, only optional; application specific/dependent on your use case + // in a real application you probably have different .dumpit handlers per operation/command + .dumpit = NULL, + // in a real application you probably have different .start handlers per operation/command + .start = NULL, + // in a real application you probably have different .done handlers per operation/command + .done = NULL, + .validate = 0, + } +}; + +/** + * Attribute policy: defines which attribute has which type (e.g int, char * etc). + * This get validated for each received Generic Netlink message, if not deactivated + * in `gnl_foobar_xmpl_ops[].validate`. + * See https://elixir.bootlin.com/linux/v5.11/source/net/netlink/genetlink.c#L717 + */ +static struct nla_policy gnl_foobar_xmpl_policy[GNL_FOOBAR_XMPL_ATTRIBUTE_ENUM_LEN] = { + // In case you are seeing this syntax for the first time (I also learned this just after a few years of + // coding with C myself): The following static array initiations are equivalent: + // `int a[2] = {1, 2}` <==> `int a[2] = {[0] => 1, [1] => 2}`. + + [GNL_FOOBAR_XMPL_A_UNSPEC] = {.type = NLA_UNSPEC}, + + // You can set this to NLA_U32 for testing and send an ECHO message from the userland + // It will fail in this case and you see a entry in the kernel log. + + // `enum GNL_FOOBAR_XMPL_ATTRIBUTE::GNL_FOOBAR_XMPL_A_MSG` is a null-terminated C-String + [GNL_FOOBAR_XMPL_A_MSG] = {.type = NLA_NUL_STRING}, +}; + +/** + * Definition of the Netlink family we want to register using Generic Netlink functionality + */ +static struct genl_family gnl_foobar_xmpl_family = { + // automatically assign an id + .id = 0, + // we don't use custom additional header info / user specific header + .hdrsize = 0, + // The name of this family, used by userspace application to get the numeric ID + .name = FAMILY_NAME, + // family specific version number; can be used to evolve application over time (multiple versions) + .version = 1, + // delegates all incoming requests to callback functions + .ops = gnl_foobar_xmpl_ops, + // length of array `gnl_foobar_xmpl_ops` + .n_ops = GNL_FOOBAR_OPS_LEN, + // attribute policy (for validation of messages). Enforced automatically, except ".validate" in + // corresponding ".ops"-field is set accordingly. + .policy = gnl_foobar_xmpl_policy, + // Number of attributes / bounds check for policy (array length) + .maxattr = GNL_FOOBAR_XMPL_ATTRIBUTE_ENUM_LEN, + // Owning Kernel module of the Netlink family we register. + .module = THIS_MODULE, + + // Actually not necessary because this memory region would be zeroed anyway during module load, + // but this way one sees all possible options. + + // if your application must handle multiple netlink calls in parallel (where one should not block the next + // from starting), set this to true! otherwise all netlink calls are mutually exclusive + .parallel_ops = 0, + // set to true if the family can handle network namespaces and should be presented in all of them + .netnsok = 0, + // called before an operation's doit callback, it may do additional, common, filtering and return an error + .pre_doit = NULL, + // called after an operation's doit callback, it may undo operations done by pre_doit, for example release locks + .post_doit = NULL, +}; + +/** + * Regular ".doit"-callback function if a Generic Netlink with command `GNL_FOOBAR_XMPL_C_ECHO` is received. + * Please look into the comments where this is used as ".doit" callback above in + * `struct genl_ops gnl_foobar_xmpl_ops[]` for more information about ".doit" callbacks. +*/ +int gnl_cb_echo_doit(struct sk_buff *sender_skb, struct genl_info *info) { + struct nlattr *na; + struct sk_buff *reply_skb; + int rc; + void *msg_head; + char *recv_msg; + + pr_info("%s() invoked\n", __func__); + + if (info == NULL) { + // should never happen + pr_err("An error occurred in %s():\n", __func__); + return -EINVAL; + } + + /* + * For each attribute there is an index in info->attrs which points to a nlattr structure + * in this structure the data is stored. + */ + na = info->attrs[GNL_FOOBAR_XMPL_A_MSG]; + + if (!na) { + pr_err("no info->attrs[%i]\n", GNL_FOOBAR_XMPL_A_MSG); + return -EINVAL; // we return here because we expect to recv a msg + } + + recv_msg = (char *) nla_data(na); + if (recv_msg == NULL) { + pr_err("error while receiving data\n"); + } else { + pr_info("received: '%s'\n", recv_msg); + } + + + // Send a message back + // --------------------- + + // Allocate some memory, since the size is not yet known use NLMSG_GOODSIZE + reply_skb = genlmsg_new(NLMSG_GOODSIZE, GFP_KERNEL); + if (reply_skb == NULL) { + pr_err("An error occurred in %s():\n", __func__); + return -ENOMEM; + } + + // Create the message headers + + // Add header to netlink message; + // afterwards the buffer looks like this: + // ---------------------------------- + // | netlink header | + // | generic netlink header | + // | | + // ---------------------------------- + msg_head = genlmsg_put(reply_skb, // buffer for netlink message: struct sk_buff * + // According to my findings: this is not used for routing + // This can be used in an application specific way to target + // different endpoints within the same user application + // but general rule: just put sender port id here + info->snd_portid, // sending port (not process) id: int + info->snd_seq + 1, // sequence number: int (might be used by receiver, but not mandatory) + &gnl_foobar_xmpl_family, // struct genl_family * + 0, // flags for Netlink header: int; application specific and not mandatory + // The command/operation (u8) from `enum GNL_FOOBAR_XMPL_COMMAND` for Generic Netlink header + GNL_FOOBAR_XMPL_C_ECHO_MSG + ); + if (msg_head == NULL) { + rc = ENOMEM; + pr_err("An error occurred in %s():\n", __func__); + return -rc; + } + + // Add a GNL_FOOBAR_XMPL_A_MSG attribute (actual value/payload to be sent) + // echo the value we just received + rc = nla_put_string(reply_skb, GNL_FOOBAR_XMPL_A_MSG, recv_msg); + if (rc != 0) { + pr_err("An error occurred in %s():\n", __func__); + return -rc; + } + + // Finalize the message: + // Corrects the netlink message header (length) to include the appended + // attributes. Only necessary if attributes have been added to the message. + genlmsg_end(reply_skb, msg_head); + + // Send the message back + rc = genlmsg_reply(reply_skb, info); + // same as genlmsg_unicast(genl_info_net(info), reply_skb, info->snd_portid) + // see https://elixir.bootlin.com/linux/v5.8.9/source/include/net/genetlink.h#L326 + + if (rc != 0) { + pr_err("An error occurred in %s():\n", __func__); + return -rc; + } + return 0; +} + +/** + * ".dumpit"-callback function if a Generic Netlink with command ECHO_MSG and flag `NLM_F_DUMP` is received. + * Please look into the comments where this is used as ".dumpit" callback above in + * `struct genl_ops gnl_foobar_xmpl_ops[]` for more information about ".dumpit" callbacks. + * + * A dump must be understand of "give me all data of a given entity" + * rather than a "dump of the netlink message itself" for debugging etc! + * + * This handler requires `gnl_cb_echo_dumpit_before` to run before a dump and `gnl_cb_echo_dumpit_after` after a dump. + * + * For the sake of simplicity, we use the ECHO_MSG command for the dump. In fact, we don't expect a + * MSG-Attribute here, unlike the regular ECHO_MSG handler. We reply with a dump of + * "all messages that we got" (application specific, hard coded in this example). +*/ +int gnl_cb_echo_dumpit(struct sk_buff *pre_allocated_skb, struct netlink_callback *cb) { + void *msg_head; + int ret; + static const char HELLO_FROM_DUMPIT_MSG[] = "You set the flag NLM_F_DUMP; this message is " + "brought to you by .dumpit callback :)"; + pr_info("Called %s()\n", __func__); + + if (dumpit_cb_progress_data.runs_to_go == 0) { + pr_info("no more data to send in dumpit cb\n"); + // mark that dump is done; + return 0; + } else { + dumpit_cb_progress_data.runs_to_go--; + pr_info("%s: %d more runs to do\n", __func__, dumpit_cb_progress_data.runs_to_go); + } + + msg_head = genlmsg_put(pre_allocated_skb, // buffer for netlink message: struct sk_buff * + // According to my findings: this is not used for routing + // This can be used in an application specific way to target + // different endpoints within the same user application + // but general rule: just put sender port id here + cb->nlh->nlmsg_pid, // sending port (not process) id: int + // sequence number: int (might be used by receiver, but not mandatory) + // sequence 0, 1, 2... + dumpit_cb_progress_data.total_runs - dumpit_cb_progress_data.runs_to_go - 1, + &gnl_foobar_xmpl_family, // struct genl_family * + 0, // flags: int (for netlink header); we don't check them in the userland; application specific + // this way we can trigger a specific command/callback on the receiving side or imply + // on which type of command we are currently answering; this is application specific + GNL_FOOBAR_XMPL_C_ECHO_MSG // cmd: u8 (for generic netlink header); + ); + if (msg_head == NULL) { + pr_info("An error occurred in %s(): genlmsg_put() failed\n", __func__); + return -ENOMEM; + } + ret = nla_put_string( + pre_allocated_skb, + GNL_FOOBAR_XMPL_A_MSG, + HELLO_FROM_DUMPIT_MSG + ); + if (ret < 0) { + pr_info("An error occurred in %s():\n", __func__); + return ret; + } + genlmsg_end(pre_allocated_skb, msg_head); + + // return the length of data we wrote into the pre-allocated buffer + return pre_allocated_skb->len; +} + +/** + * Regular ".doit"-callback function if a Generic Netlink with command `GNL_FOOBAR_XMPL_C_REPLY_WITH_NLMSG_ERR` is received. + * Please look into the comments where this is used as ".doit" callback above in + * `struct genl_ops gnl_foobar_xmpl_ops[]` for more information about ".doit" callbacks. +*/ +int gnl_cb_doit_reply_with_nlmsg_err(struct sk_buff *sender_skb, struct genl_info *info) { + pr_info("%s() invoked, a NLMSG_ERR response will be sent back\n", __func__); + + /* + * Generic Netlink is smart enough and sends a NLMSG_ERR reply automatically as reply + * Quote from https://lwn.net/Articles/208755/: + * "The 'doit' handler should do whatever processing is necessary and return + * zero on success, or a negative value on failure. Negative return values + * will cause a NLMSG_ERROR message to be sent while a zero return value will + * only cause a NLMSG_ERROR message to be sent if the request is received with + * the NLM_F_ACK flag set." + * + * You can find this in Linux code here: + * https://elixir.bootlin.com/linux/v5.11/source/net/netlink/af_netlink.c#L2499 + * + * One can find more information about NLMSG_ERROR responses and how to handle them + * in userland in the manpage: https://man7.org/linux/man-pages/man7/netlink.7.html + */ + return -EINVAL; +} + +/** + * Called before a dump with `gnl_cb_echo_dumpit()` starts. + * See where this is assigned in `struct genl_ops gnl_foobar_xmpl_ops[]` as + * `.start` callback for more comments. + * + * @return success (0) or error. + */ +int gnl_cb_echo_dumpit_before(struct netlink_callback *cb) { + int ret; + static int unsigned const dump_runs = 3; + pr_info("%s: dump started. acquire lock. initialize dump runs_to_go (number of receives userland can make) to %d runs\n", __func__, dump_runs); + // Lock the mutex like mutex_lock(), and return 0 if the mutex has been acquired or sleep until the mutex becomes available + // If a signal arrives while waiting for the lock then this function returns -EINTR. + ret = mutex_lock_interruptible(&dumpit_cb_progress_data.mtx); + if (ret != 0) { + pr_err("Failed to get lock!\n"); + return ret; + } + dumpit_cb_progress_data.total_runs = dump_runs; + dumpit_cb_progress_data.runs_to_go = dump_runs; + return 0; + +} + +/** + * Called before a dump with `gnl_cb_echo_dumpit()` starts. + * See where this is assigned in `struct genl_ops gnl_foobar_xmpl_ops[]` as + * `.start` callback for more comments. + * + * @return success (0) or error. + */ +int gnl_cb_echo_dumpit_before_after(struct netlink_callback *cb) { + pr_info("%s: dump done. release lock\n", __func__); + mutex_unlock(&dumpit_cb_progress_data.mtx); + return 0; +} + +/** + * Module/driver initializer. Called on module load/insertion. + * + * @return success (0) or error code. + */ +static int __init gnl_foobar_xmpl_module_init(void) { + int rc; + pr_info("Generic Netlink Example Module inserted.\n"); + + // Register family with its operations and policies + rc = genl_register_family(&gnl_foobar_xmpl_family); + if (rc != 0) { + pr_err("FAILED: genl_register_family(): %i\n", rc); + pr_err("An error occurred while inserting the generic netlink example module\n"); + return -1; + } else { + pr_info("successfully registered custom Netlink family '" FAMILY_NAME "' using Generic Netlink.\n"); + } + + mutex_init(&dumpit_cb_progress_data.mtx); + + return 0; +} + +/** + * Module/driver uninitializer. Called on module unload/removal. + * + * @return success (0) or error code. + */ +static void __exit gnl_foobar_xmpl_module_exit(void) { + int ret; + pr_info("Generic Netlink Example Module unloaded.\n"); + + // Unregister the family + ret = genl_unregister_family(&gnl_foobar_xmpl_family); + if (ret != 0) { + pr_err("genl_unregister_family() failed: %i\n", ret); + return; + } else { + pr_info("successfully unregistered custom Netlink family '" FAMILY_NAME "' using Generic Netlink.\n"); + } + + mutex_destroy(&dumpit_cb_progress_data.mtx); +} + +module_init(gnl_foobar_xmpl_module_init); +module_exit(gnl_foobar_xmpl_module_exit); \ No newline at end of file diff --git a/recipes-vrpmdv/recipes-base/vrpmdv-monitoring-controler/save/rpmsg_sdb.csva b/recipes-vrpmdv/recipes-base/vrpmdv-monitoring-controler/save/rpmsg_sdb.csva new file mode 100644 index 0000000..857a42c --- /dev/null +++ b/recipes-vrpmdv/recipes-base/vrpmdv-monitoring-controler/save/rpmsg_sdb.csva @@ -0,0 +1,536 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (C) STMicroelectronics 2019 - All Rights Reserved + * Author: Jean-Philippe Romain + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define RPMSG_SDB_DRIVER_VERSION "1.0" + +/* + * Static global variables + */ +static const char rpmsg_sdb_driver_name[] = "stm32-rpmsg-sdb"; + +static int LastBufferId; + +struct rpmsg_sdb_ioctl_set_efd { + int bufferId, eventfd; +}; + +struct rpmsg_sdb_ioctl_get_data_size { + int bufferId; + uint32_t size; +}; + +/* ioctl numbers */ +/* _IOW means userland is writing and kernel is reading */ +/* _IOR means userland is reading and kernel is writing */ +/* _IOWR means userland and kernel can both read and write */ +#define RPMSG_SDB_IOCTL_SET_EFD _IOW('R', 0x00, struct rpmsg_sdb_ioctl_set_efd *) +#define RPMSG_SDB_IOCTL_GET_DATA_SIZE _IOWR('R', 0x01, struct rpmsg_sdb_ioctl_get_data_size *) + +struct sdb_buf_t { + int index; /* index of buffer */ + size_t size; /* buffer size */ + size_t writing_size; /* size of data written by copro */ + dma_addr_t paddr; /* physical address*/ + void *vaddr; /* virtual address */ + void *uaddr; /* mapped address for userland */ + struct eventfd_ctx *efd_ctx; /* eventfd context */ + struct list_head buflist; /* reference in the buffers list */ +}; + +struct rpmsg_sdb_t { + struct mutex mutex; /* mutex to protect the ioctls */ + struct miscdevice mdev; /* misc device ref */ + struct rpmsg_device *rpdev; /* handle rpmsg device */ + struct list_head buffer_list; /* buffer instances list */ +}; + +struct device *rpmsg_sdb_dev; + +static int rpmsg_sdb_format_txbuf_string(struct sdb_buf_t *buffer, char *bufinfo_str, size_t bufinfo_str_size) +{ + pr_debug("rpmsg_sdb(%s): Buffer index:%d, addr:%08x, size:%08x\n", + __func__, + buffer->index, + buffer->paddr, + buffer->size); + return snprintf(bufinfo_str, bufinfo_str_size, "B%dA%08xL%08x", buffer->index, buffer->paddr, buffer->size); +} + +static long rpmsg_sdb_decode_rxbuf_string(char *rxbuf_str, int *buffer_id, size_t *size) +{ + int ret = 0; + char *sub_str; + long bsize; + long bufid; + const char delimiter[2] = {'L','\0'}; + + pr_debug("rpmsg_sdb(%s): rxbuf_str:%s\n", __func__, rxbuf_str); + + /* Get first part containing the buffer id */ + sub_str = strsep(&rxbuf_str, delimiter); + + pr_debug("rpmsg_sdb(%s): sub_str:%s\n", __func__, sub_str); + + /* Save Buffer id and size: template BxLyyyyyyyy*/ + ret = kstrtol(&sub_str[1], 10, &bufid); + if (ret < 0) { + pr_err("rpmsg_sdb(ERROR): Extract of buffer id failed(%d)", ret); + goto out; + } + + ret = kstrtol(&rxbuf_str[2], 16, &bsize); + if (ret < 0) { + pr_err("rpmsg_sdb(ERROR): Extract of buffer size failed(%d)", ret); + goto out; + } + + *size = (size_t)bsize; + *buffer_id = (int)bufid; + +out: + return ret; +} + +static int rpmsg_sdb_send_buf_info(struct rpmsg_sdb_t *rpmsg_sdb, struct sdb_buf_t *buffer) +{ + int count = 0, ret = 0; + const unsigned char *tbuf; + char mybuf[32]; + int msg_size; + struct rpmsg_device *_rpdev; + + _rpdev = rpmsg_sdb->rpdev; + msg_size = rpmsg_get_buffer_size(_rpdev->ept); + + if (msg_size < 0) + return msg_size; + + count = rpmsg_sdb_format_txbuf_string(buffer, mybuf, 32); + tbuf = &mybuf[0]; + + do { + /* send a message to our remote processor */ + ret = rpmsg_send(_rpdev->ept, (void *)tbuf, + count > msg_size ? msg_size : count); + if (ret) { + dev_err(&_rpdev->dev, "rpmsg_send failed: %d\n", ret); + return ret; + } + + if (count > msg_size) { + count -= msg_size; + tbuf += msg_size; + } else { + count = 0; + } + } while (count > 0); + + return count; +} + +static int rpmsg_sdb_mmap(struct file *file, struct vm_area_struct *vma) +{ + unsigned long vsize = vma->vm_end - vma->vm_start; + unsigned long size = PAGE_ALIGN(vsize); + unsigned long NumPages = size >> PAGE_SHIFT; + unsigned long align = get_order(size); + pgprot_t prot = pgprot_noncached(vma->vm_page_prot); + struct rpmsg_sdb_t *_rpmsg_sdb; + struct sdb_buf_t *_buffer; + + if (align > CONFIG_CMA_ALIGNMENT) + align = CONFIG_CMA_ALIGNMENT; + + if (rpmsg_sdb_dev == NULL) + return -ENOMEM; + + rpmsg_sdb_dev->coherent_dma_mask = DMA_BIT_MASK(32); + rpmsg_sdb_dev->dma_mask = &rpmsg_sdb_dev->coherent_dma_mask; + + _rpmsg_sdb = container_of(file->private_data, struct rpmsg_sdb_t, + mdev); + + /* Field the last buffer entry which is the last one created */ + if (!list_empty(&_rpmsg_sdb->buffer_list)) { + _buffer = list_last_entry(&_rpmsg_sdb->buffer_list, + struct sdb_buf_t, buflist); + + _buffer->uaddr = NULL; + _buffer->size = NumPages * PAGE_SIZE; + _buffer->writing_size = -1; + _buffer->vaddr = dma_alloc_coherent(rpmsg_sdb_dev, + _buffer->size, + &_buffer->paddr, + GFP_KERNEL); + + if (!_buffer->vaddr) { + pr_err("rpmsg_sdb(ERROR): Memory allocation issue\n"); + return -ENOMEM; + } + + pr_debug("rpmsg_sdb(%s): dma_alloc_coherent done - paddr[%d]:%x - vaddr[%d]:%p\n", + __func__, + _buffer->index, + _buffer->paddr, + _buffer->index, + _buffer->vaddr); + + /* Get address for userland */ + if (remap_pfn_range(vma, vma->vm_start, + (_buffer->paddr >> PAGE_SHIFT) + vma->vm_pgoff, + size, prot)) + return -EAGAIN; + + _buffer->uaddr = (void *)vma->vm_start; + + /* Send information to remote proc */ + rpmsg_sdb_send_buf_info(_rpmsg_sdb, _buffer); + } else { + dev_err(rpmsg_sdb_dev, "No existing buffer entry exist in the list !!!"); + return -EINVAL; + } + + /* Increment for number of requested buffer */ + LastBufferId++; + + return 0; +} + +/** + * rpmsg_sdb_open - Open Session + * + * @inode: inode struct + * @file: file struct + * + * Return: + * 0 - Success + * Non-zero - Failure + */ +static int rpmsg_sdb_open(struct inode *inode, struct file *file) +{ + struct rpmsg_sdb_t *_rpmsg_sdb; + + _rpmsg_sdb = container_of(file->private_data, struct rpmsg_sdb_t, + mdev); + + /* Initialize the buffer list*/ + INIT_LIST_HEAD(&_rpmsg_sdb->buffer_list); + + mutex_init(&_rpmsg_sdb->mutex); + + return 0; +} + +/** + * rpmsg_sdb_close - Close Session + * + * @inode: inode struct + * @file: file struct + * + * Return: + * 0 - Success + * Non-zero - Failure + */ +static int rpmsg_sdb_close(struct inode *inode, struct file *file) +{ + struct rpmsg_sdb_t *_rpmsg_sdb; + struct sdb_buf_t *pos, *next; + + _rpmsg_sdb = container_of(file->private_data, struct rpmsg_sdb_t, + mdev); + + list_for_each_entry_safe(pos, next, &_rpmsg_sdb->buffer_list, buflist) { + /* Free the CMA allocation */ + pr_debug("rpmsg_sdb(%s): Free the CMA allocation: pos->size:%08x, pos->vaddr:%08x, pos->paddr:%08x\n", + __func__, + pos->size, + pos->vaddr, + pos->paddr); + + dma_free_coherent(rpmsg_sdb_dev, pos->size, pos->vaddr, + pos->paddr); + /* Remove the buffer from the list */ + list_del(&pos->buflist); + /* Free the buffer */ + kfree(pos); + } + + /* Reset LastBufferId */ + LastBufferId = 0; + + return 0; +} + +/** + * rpmsg_sdb_ioctl - IOCTL + * + * @session: ibmvmc_file_session struct + * @cmd: cmd field + * @arg: Argument field + * + * Return: + * 0 - Success + * Non-zero - Failure + */ +static long rpmsg_sdb_ioctl(struct file *file, unsigned int cmd, unsigned long arg) +{ + int idx = 0; + + struct rpmsg_sdb_t *_rpmsg_sdb; + struct sdb_buf_t *buffer, *lastbuffer; + + struct list_head *pos; + struct sdb_buf_t *datastructureptr = NULL; + + struct rpmsg_sdb_ioctl_set_efd q_set_efd; + struct rpmsg_sdb_ioctl_get_data_size q_get_dat_size; + + void __user *argp = (void __user *)arg; + + _rpmsg_sdb = container_of(file->private_data, struct rpmsg_sdb_t, + mdev); + + switch (cmd) { + case RPMSG_SDB_IOCTL_SET_EFD: + mutex_lock(&_rpmsg_sdb->mutex); + + /* Get index from the last buffer in the list */ + if (!list_empty(&_rpmsg_sdb->buffer_list)) { + lastbuffer = list_last_entry(&_rpmsg_sdb->buffer_list, struct sdb_buf_t, buflist); + idx = lastbuffer->index; + + /* Check last index was properly initiated*/ + if (lastbuffer->vaddr == NULL) { + pr_err("rpmsg_sdb(ERROR): RPMSG_SDB_IOCTL_SET_EFD - previous buffer was not allocated\n"); + mutex_unlock(&_rpmsg_sdb->mutex); + return -EBADE; + } + + /* increment this index for the next buffer creation*/ + idx++; + } + + if (copy_from_user(&q_set_efd, (struct rpmsg_sdb_ioctl_set_efd *)argp, + sizeof(struct rpmsg_sdb_ioctl_set_efd))) { + pr_err("rpmsg_sdb(ERROR): RPMSG_SDB_IOCTL_SET_EFD - copy from user failed\n"); + mutex_unlock(&_rpmsg_sdb->mutex); + return -EFAULT; + } + + /* create a new buffer which will be added in the buffer list */ + buffer = kmalloc(sizeof(struct sdb_buf_t), GFP_KERNEL); + + buffer->index = idx; + buffer->vaddr = NULL; + buffer->efd_ctx = eventfd_ctx_fdget(q_set_efd.eventfd); + list_add_tail(&buffer->buflist, &_rpmsg_sdb->buffer_list); + + mutex_unlock(&_rpmsg_sdb->mutex); + break; + + case RPMSG_SDB_IOCTL_GET_DATA_SIZE: + if (copy_from_user(&q_get_dat_size, (struct rpmsg_sdb_ioctl_get_data_size *)argp, + sizeof(struct rpmsg_sdb_ioctl_get_data_size))) { + pr_err("rpmsg_sdb(ERROR): RPMSG_SDB_IOCTL_GET_DATA_SIZE - copy from user failed\n"); + return -EFAULT; + } + + /* Get the index of the requested buffer and then look-up in the buffer list*/ + idx = q_get_dat_size.bufferId; + + list_for_each(pos, &_rpmsg_sdb->buffer_list) + { + datastructureptr = list_entry(pos, struct sdb_buf_t, buflist); + if (datastructureptr->index == idx) { + /* Get the writing size*/ + q_get_dat_size.size = datastructureptr->writing_size; + break; + } + } + + if (copy_to_user((struct rpmsg_sdb_ioctl_get_data_size *)argp, &q_get_dat_size, + sizeof(struct rpmsg_sdb_ioctl_get_data_size))) { + pr_err("rpmsg_sdb(ERROR): RPMSG_SDB_IOCTL_GET_DATA_SIZE - copy to user failed\n"); + return -EFAULT; + } + + /* Reset the writing size*/ + datastructureptr->writing_size = -1; + + break; + default: + return -EINVAL; + } + + return 0; +} + +static const struct file_operations rpmsg_sdb_fops = { + .owner = THIS_MODULE, + .unlocked_ioctl = rpmsg_sdb_ioctl, + .mmap = rpmsg_sdb_mmap, + .open = rpmsg_sdb_open, + .release = rpmsg_sdb_close, +}; + +static int rpmsg_sdb_drv_cb(struct rpmsg_device *rpdev, void *data, int len, + void *priv, u32 src) +{ + int ret = 0; + int buffer_id = 0; + size_t buffer_size; + char *rpmsg_RxBuf; + struct list_head *pos; + struct sdb_buf_t *datastructureptr = NULL; + + struct rpmsg_sdb_t *drv = dev_get_drvdata(&rpdev->dev); + + if (len == 0) { + dev_err(rpmsg_sdb_dev, "(%s) Empty lenght requested\n", __func__); + return -EINVAL; + } + + //dev_err(rpmsg_sdb_dev, "(%s) lenght: %d\n", __func__,len); + + rpmsg_RxBuf = (char *)kmalloc(len+1, GFP_KERNEL); + memcpy(rpmsg_RxBuf, data, len); + + rpmsg_RxBuf[len] = 0; + + ret = rpmsg_sdb_decode_rxbuf_string(rpmsg_RxBuf, &buffer_id, &buffer_size); + kfree(rpmsg_RxBuf); + if (ret < 0) + goto out; + + if (buffer_id > LastBufferId) { + ret = -EINVAL; + goto out; + } + + /* Signal to User space application */ + list_for_each(pos, &drv->buffer_list) + { + datastructureptr = list_entry(pos, struct sdb_buf_t, buflist); + if (datastructureptr->index == buffer_id) { + datastructureptr->writing_size = buffer_size; + + if (datastructureptr->writing_size > datastructureptr->size) { + dev_err(rpmsg_sdb_dev, "(%s) Writing size is bigger than buffer size\n", __func__); + ret = -EINVAL; + goto out; + } + + eventfd_signal(datastructureptr->efd_ctx, 1); + break; + } + /* TODO: quid if nothing find during the loop ? */ + } + +out: + return ret; +} + +static int rpmsg_sdb_drv_probe(struct rpmsg_device *rpdev) +{ + int ret = 0; + struct device *dev = &rpdev->dev; + struct rpmsg_sdb_t *rpmsg_sdb; + + rpmsg_sdb = devm_kzalloc(dev, sizeof(*rpmsg_sdb), GFP_KERNEL); + if (!rpmsg_sdb) + return -ENOMEM; + + mutex_init(&rpmsg_sdb->mutex); + + rpmsg_sdb->rpdev = rpdev; + + rpmsg_sdb->mdev.name = "rpmsg-sdb"; + rpmsg_sdb->mdev.minor = MISC_DYNAMIC_MINOR; + rpmsg_sdb->mdev.fops = &rpmsg_sdb_fops; + + dev_set_drvdata(&rpdev->dev, rpmsg_sdb); + + /* Register misc device */ + ret = misc_register(&rpmsg_sdb->mdev); + + if (ret) { + dev_err(dev, "Failed to register device\n"); + goto err_out; + } + + rpmsg_sdb_dev = rpmsg_sdb->mdev.this_device; + + dev_info(dev, "%s probed\n", rpmsg_sdb_driver_name); + +err_out: + return ret; +} + +static void rpmsg_sdb_drv_remove(struct rpmsg_device *rpmsgdev) +{ + struct rpmsg_sdb_t *drv = dev_get_drvdata(&rpmsgdev->dev); + + misc_deregister(&drv->mdev); +} + +static struct rpmsg_device_id rpmsg_driver_sdb_id_table[] = { + { .name = "rpmsg-sdb-channel" }, + { }, +}; +MODULE_DEVICE_TABLE(rpmsg, rpmsg_driver_sdb_id_table); + +static struct rpmsg_driver rpmsg_sdb_rmpsg_drv = { + .drv.name = KBUILD_MODNAME, + .drv.owner = THIS_MODULE, + .id_table = rpmsg_driver_sdb_id_table, + .probe = rpmsg_sdb_drv_probe, + .callback = rpmsg_sdb_drv_cb, + .remove = rpmsg_sdb_drv_remove, +}; + +static int __init rpmsg_sdb_drv_init(void) +{ + int ret = 0; + + /* Register rpmsg device */ + ret = register_rpmsg_driver(&rpmsg_sdb_rmpsg_drv); + + if (ret) { + pr_err("rpmsg_sdb(ERROR): Failed to register device\n"); + return ret; + } + + pr_info("rpmsg_sdb: Init done\n"); + + return ret; +} + +static void __exit rpmsg_sdb_drv_exit(void) +{ + unregister_rpmsg_driver(&rpmsg_sdb_rmpsg_drv); + pr_info("rpmsg_sdb: Exit\n"); +} + +module_init(rpmsg_sdb_drv_init); +module_exit(rpmsg_sdb_drv_exit); + + +MODULE_AUTHOR("Jean-Philippe Romain "); +MODULE_DESCRIPTION("shared data buffer over RPMSG"); +MODULE_VERSION(RPMSG_SDB_DRIVER_VERSION); +MODULE_LICENSE("GPL v2"); \ No newline at end of file diff --git a/recipes-vrpmdv/recipes-base/vrpmdv-monitoring-controler/save/ttyrpmsg.csave b/recipes-vrpmdv/recipes-base/vrpmdv-monitoring-controler/save/ttyrpmsg.csave new file mode 100644 index 0000000..ec89035 --- /dev/null +++ b/recipes-vrpmdv/recipes-base/vrpmdv-monitoring-controler/save/ttyrpmsg.csave @@ -0,0 +1,287 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2021 STMicroelectronics - All Rights Reserved + * + * The rpmsg tty driver implements serial communication on the RPMsg bus to makes + * possible for user-space programs to send and receive rpmsg messages as a standard + * tty protocol. + * + * The remote processor can instantiate a new tty by requesting a "rpmsg-tty" RPMsg service. + * The "rpmsg-tty" service is directly used for data exchange. No flow control is implemented yet. + */ + +#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt + +#include +#include +#include +#include +#include + +#define RPMSG_TTY_NAME "ttyRPMSG" +#define MAX_TTY_RPMSG 32 + +static DEFINE_IDR(tty_idr); /* tty instance id */ +static DEFINE_MUTEX(idr_lock); /* protects tty_idr */ + +static struct tty_driver *rpmsg_tty_driver; + +struct rpmsg_tty_port { + struct tty_port port; /* TTY port data */ + int id; /* TTY rpmsg index */ + struct rpmsg_device *rpdev; /* rpmsg device */ +}; + +static int rpmsg_tty_cb(struct rpmsg_device *rpdev, void *data, int len, void *priv, u32 src) +{ + struct rpmsg_tty_port *cport = dev_get_drvdata(&rpdev->dev); + int copied; + + if (!len) + return -EINVAL; + copied = tty_insert_flip_string(&cport->port, data, len); + if (copied != len) + dev_err_ratelimited(&rpdev->dev, "Trunc buffer: available space is %d\n", copied); + tty_flip_buffer_push(&cport->port); + + return 0; +} + +static int rpmsg_tty_install(struct tty_driver *driver, struct tty_struct *tty) +{ + struct rpmsg_tty_port *cport = idr_find(&tty_idr, tty->index); + struct tty_port *port; + + tty->driver_data = cport; + + port = tty_port_get(&cport->port); + return tty_port_install(port, driver, tty); +} + +static void rpmsg_tty_cleanup(struct tty_struct *tty) +{ + tty_port_put(tty->port); +} + +static int rpmsg_tty_open(struct tty_struct *tty, struct file *filp) +{ + return tty_port_open(tty->port, tty, filp); +} + +static void rpmsg_tty_close(struct tty_struct *tty, struct file *filp) +{ + return tty_port_close(tty->port, tty, filp); +} + +static int rpmsg_tty_write(struct tty_struct *tty, const u8 *buf, int len) +{ + struct rpmsg_tty_port *cport = tty->driver_data; + struct rpmsg_device *rpdev; + int msg_max_size, msg_size; + int ret; + + rpdev = cport->rpdev; + + msg_max_size = rpmsg_get_mtu(rpdev->ept); + if (msg_max_size < 0) + return msg_max_size; + + msg_size = min(len, msg_max_size); + + /* + * Use rpmsg_trysend instead of rpmsg_send to send the message so the caller is not + * hung until a rpmsg buffer is available. In such case rpmsg_trysend returns -ENOMEM. + */ + ret = rpmsg_trysend(rpdev->ept, (void *)buf, msg_size); + if (ret) { + dev_dbg_ratelimited(&rpdev->dev, "rpmsg_send failed: %d\n", ret); + return ret; + } + + return msg_size; +} + +static unsigned int rpmsg_tty_write_room(struct tty_struct *tty) +{ + struct rpmsg_tty_port *cport = tty->driver_data; + int size; + + size = rpmsg_get_mtu(cport->rpdev->ept); + if (size < 0) + return 0; + + return size; +} + +static void rpmsg_tty_hangup(struct tty_struct *tty) +{ + tty_port_hangup(tty->port); +} + +static const struct tty_operations rpmsg_tty_ops = { + .install = rpmsg_tty_install, + .open = rpmsg_tty_open, + .close = rpmsg_tty_close, + .write = rpmsg_tty_write, + .write_room = rpmsg_tty_write_room, + .hangup = rpmsg_tty_hangup, + .cleanup = rpmsg_tty_cleanup, +}; + +static struct rpmsg_tty_port *rpmsg_tty_alloc_cport(void) +{ + struct rpmsg_tty_port *cport; + int ret; + + cport = kzalloc(sizeof(*cport), GFP_KERNEL); + if (!cport) + return ERR_PTR(-ENOMEM); + + mutex_lock(&idr_lock); + ret = idr_alloc(&tty_idr, cport, 0, MAX_TTY_RPMSG, GFP_KERNEL); + mutex_unlock(&idr_lock); + + if (ret < 0) { + kfree(cport); + return ERR_PTR(ret); + } + + cport->id = ret; + + return cport; +} + +static void rpmsg_tty_destruct_port(struct tty_port *port) +{ + struct rpmsg_tty_port *cport = container_of(port, struct rpmsg_tty_port, port); + + mutex_lock(&idr_lock); + idr_remove(&tty_idr, cport->id); + mutex_unlock(&idr_lock); + + kfree(cport); +} + +static const struct tty_port_operations rpmsg_tty_port_ops = { + .destruct = rpmsg_tty_destruct_port, +}; + + +static int rpmsg_tty_probe(struct rpmsg_device *rpdev) +{ + struct rpmsg_tty_port *cport; + struct device *dev = &rpdev->dev; + struct device *tty_dev; + int ret; + + cport = rpmsg_tty_alloc_cport(); + if (IS_ERR(cport)) + return dev_err_probe(dev, PTR_ERR(cport), "Failed to alloc tty port\n"); + + tty_port_init(&cport->port); + cport->port.ops = &rpmsg_tty_port_ops; + + tty_dev = tty_port_register_device(&cport->port, rpmsg_tty_driver, + cport->id, dev); + if (IS_ERR(tty_dev)) { + ret = dev_err_probe(dev, PTR_ERR(tty_dev), "Failed to register tty port\n"); + tty_port_put(&cport->port); + return ret; + } + + cport->rpdev = rpdev; + + dev_set_drvdata(dev, cport); + + dev_dbg(dev, "New channel: 0x%x -> 0x%x: " RPMSG_TTY_NAME "%d\n", + rpdev->src, rpdev->dst, cport->id); + + return 0; +} + +static void rpmsg_tty_remove(struct rpmsg_device *rpdev) +{ + struct rpmsg_tty_port *cport = dev_get_drvdata(&rpdev->dev); + + dev_dbg(&rpdev->dev, "Removing rpmsg tty device %d\n", cport->id); + + /* User hang up to release the tty */ + tty_port_tty_hangup(&cport->port, false); + + tty_unregister_device(rpmsg_tty_driver, cport->id); + + tty_port_put(&cport->port); +} + +static struct rpmsg_device_id rpmsg_driver_tty_id_table[] = { + { .name = "rpmsg-tty" }, + { }, +}; +MODULE_DEVICE_TABLE(rpmsg, rpmsg_driver_tty_id_table); + +static struct rpmsg_driver rpmsg_tty_rpmsg_drv = { + .drv.name = KBUILD_MODNAME, + .id_table = rpmsg_driver_tty_id_table, + .probe = rpmsg_tty_probe, + .callback = rpmsg_tty_cb, + .remove = rpmsg_tty_remove, +}; + +static int __init rpmsg_tty_init(void) +{ + int ret; + + rpmsg_tty_driver = tty_alloc_driver(MAX_TTY_RPMSG, TTY_DRIVER_REAL_RAW | + TTY_DRIVER_DYNAMIC_DEV); + if (IS_ERR(rpmsg_tty_driver)) + return PTR_ERR(rpmsg_tty_driver); + + rpmsg_tty_driver->driver_name = "rpmsg_tty"; + rpmsg_tty_driver->name = RPMSG_TTY_NAME; + rpmsg_tty_driver->major = 0; + rpmsg_tty_driver->type = TTY_DRIVER_TYPE_CONSOLE; + + /* Disable unused mode by default */ + rpmsg_tty_driver->init_termios = tty_std_termios; + rpmsg_tty_driver->init_termios.c_lflag &= ~(ECHO | ICANON); + rpmsg_tty_driver->init_termios.c_oflag &= ~(OPOST | ONLCR); + + tty_set_operations(rpmsg_tty_driver, &rpmsg_tty_ops); + + ret = tty_register_driver(rpmsg_tty_driver); + if (ret < 0) { + pr_err("Couldn't install driver: %d\n", ret); + goto error_put; + } + + ret = register_rpmsg_driver(&rpmsg_tty_rpmsg_drv); + if (ret < 0) { + pr_err("Couldn't register driver: %d\n", ret); + goto error_unregister; + } + + return 0; + +error_unregister: + tty_unregister_driver(rpmsg_tty_driver); + +error_put: + tty_driver_kref_put(rpmsg_tty_driver); + + return ret; +} + +static void __exit rpmsg_tty_exit(void) +{ + unregister_rpmsg_driver(&rpmsg_tty_rpmsg_drv); + tty_unregister_driver(rpmsg_tty_driver); + tty_driver_kref_put(rpmsg_tty_driver); + idr_destroy(&tty_idr); +} + +module_init(rpmsg_tty_init); +module_exit(rpmsg_tty_exit); + +MODULE_AUTHOR("Arnaud Pouliquen "); +MODULE_DESCRIPTION("remote processor messaging tty driver"); +MODULE_LICENSE("GPL v2"); \ No newline at end of file diff --git a/recipes-vrpmdv/recipes-base/vrpmdv-monitoring-controler/save/vrpmdv-monitoring-controler.cold b/recipes-vrpmdv/recipes-base/vrpmdv-monitoring-controler/save/vrpmdv-monitoring-controler.cold new file mode 100644 index 0000000..12438fe --- /dev/null +++ b/recipes-vrpmdv/recipes-base/vrpmdv-monitoring-controler/save/vrpmdv-monitoring-controler.cold @@ -0,0 +1,804 @@ +/* Copyright 2024 Markus Lehr + * + * + * This Software is owned by Markus Lehr. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, + * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A + * PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +// ################################################################################################## +/* + * This is a Linux kernel module/driver called "vrpmdv-monitoring-cmd " which holds the family ID + * and functions to handle the monitoring in a Generic Netlink in the kernel. + * "It registers a Netlink family called "vrpmdv-monitoring_cmd". + * + * + * You can find some more interesting documentation about Generic Netlink here: + * "Generic Netlink HOW-TO based on Jamal's original doc" https://lwn.net/Articles/208755/ + */ + + +#include +#include + +// basic definitions for kernel module development +#include +// definitions for generic netlink families, policies etc; +// transitive dependencies for basic netlink, sockets etc +#include +// required for locking inside the .dumpit callback demonstration +#include +#include + + +// data/vars/enums/properties that describes our protocol that we implement +// on top of generic netlink (like functions we want to trigger on the receiving side) +//#include "vrpmdv-monitoring-cmd.h" + + +/* ######################## CONVENIENT LOGGING MACROS ######################## */ +// (Re)definition of some convenient logging macros from . You can see the logging +// messages when printing the kernel log, e.g. with `$ sudo dmesg`. +// See https://elixir.bootlin.com/linux/latest/source/include/linux/printk.h + +// with this redefinition we can easily prefix all log messages from pr_* logging macros +#ifdef pr_fmt +#undef pr_fmt +#endif +#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt +/* ########################################################################### */ + + +#define MSG "hello Monitoring!" + +static int count = 100; +module_param(count, int, 0644); + +struct instance_data { + int rx_count; +}; + + +// std::chrono::seconds timeoutPeriod = 5; +// auto timePoint = std::chrono::system_clock::now() + timeoutPeriod; + + +/** ----- NETLINK Driver defintion ------------------*/ + + +/** + * Generic Netlink will create a Netlink family with this name. Kernel will asign + * a numeric ID and afterwards we can talk to the family with its ID. To get + * the ID we use Generic Netlink in the userland and pass the family name. + * + * Short for: Generic Netlink VRPMDV Monitoring gnl_foobar_mcmd + */ +#define FAMILY_NAME "gnl-vrpmdv-mcmd" + +/** + * These are the attributes that we want to share in gnl_foobar_xmpl. + * You can understand an attribute as a semantic type. This is + * the payload of Netlink messages. + * GNl: Generic Netlink + */ +enum GNL_VRPMDV_XMPL_ATTRIBUTE { + /** + * 0 is never used (=> UNSPEC), you can also see this in other family definitions in Linux code. + * We do the same, although I'm not sure, if this is really enforced by code. + */ + GNL_VRPMDV_MCMD_A_UNSPEC, + /** We expect a MSG to be a null-terminated C-string. */ + GNL_VRPMDV_MCMD_A_MSG, + /** Unused marker field to get the length/count of enum entries. No real attribute. */ + __GNL_VRPMDV_MCMD_A_MAX, +}; +/** + * Number of elements in `enum GNL_VRPMDV_MCMD_COMMAND`. + */ +#define GNL_VRPMDV_MCMD_ATTRIBUTE_ENUM_LEN (__GNL_VRPMDV_MCMD_A_MAX) +/** + * The number of actual usable attributes in `enum GNL_VRPMDV_MCMD_ATTRIBUTE`. + * This is `GNL_VRPMDV_MCMD_ATTRIBUTE_ENUM_LEN` - 1 because "UNSPEC" is never used. + */ +#define GNL_VRPMDV_MCMD_ATTRIBUTE_COUNT (GNL_VRPMDV_MCMD_ATTRIBUTE_ENUM_LEN - 1) + +/** + * Enumeration of all commands (functions) that our custom protocol on top + * of generic netlink supports. This can be understood as the action that + * we want to trigger on the receiving side. + */ +enum GNL_VRPMDV_MCMD_COMMAND { + /** + * 0 is never used (=> UNSPEC), you can also see this in other family definitions in Linux code. + * We do the same, although I'm not sure, if this is really enforced by code. + */ + GNL_VRPMDV_MCMD_C_UNSPEC, + + // first real command is "1" (>0) + /** + * When this command is received, we expect the attribute `GNL_VRPMDV_MCMD_ATTRIBUTE::GNL_VRPMDV_MCMD_A_MSG` to + * be present in the Generic Netlink request message. The kernel reads the message from the packet and + * sent it to the copro. THe result will be return by creating a new Generic Netlink response message + * with an corresponding attribute/payload. + * + * This command/signaling mechanism is independent of the Netlink flag `NLM_F_ECHO (0x08)`. We use it as + * "echo specific data" instead of return a 1:1 copy of the package, which you could do with + * `NLM_F_ECHO (0x08)` for example. + */ + GNL_VRPMDV_MCMD_C_MSG, + + /** + * Provokes a NLMSG_ERR answer to this request as described in netlink manpage + * (https://man7.org/linux/man-pages/man7/netlink.7.html). + */ + GNL_VRPMDV_MCMD_C_REPLY_WITH_NLMSG_ERR, + + /** Unused marker field to get the length/count of enum entries. No real attribute. */ + __GNL_VRPMDV_MCMD_C_MAX, +}; +/** + * Number of elements in `enum GNL_VRPMDV_MCMD_COMMAND`. + */ +#define GNL_VRPMDV_MCMD_COMMAND_ENUM_LEN (__GNL_VRPMDV_MCMD_C_MAX) +/** + * The number of actual usable commands in `enum GNL_FOOBAR_XMPL_COMMAND`. + * This is `GNL_VRPMDV_MCMD_COMMAND_ENUM_LEN` - 1 because "UNSPEC" is never used. + */ +#define GNL_VRPMDV_MCMD_COMMAND_COUNT (GNL_VRPMDV_MCMD_COMMAND_ENUM_LEN - 1) + +#define NODATARECEIVED 0 +#define DATARECEIVED 1 + +/** + * Data structure required for our .doit callback handler to + * know about the progress of an ongoing cmd execution. + * See the cmd callback handler how it is used. + */ +// struct { +// // from +// /** +// * rpmsg wait for response from copro side. +// */ +// struct mutex sendMTX; +// /** +// * rpmsg wait for response from copro side. +// */ +// struct mutex receiveCV; +// /** +// * Wait Queue: if it is signaled we have received data from copro +// */ +// wait_queue_head_t receive_queue; +// /** +// * Waitflag: 0= no data received, 1 = data received +// */ +// int receive_queue_flag = NODATARECEIVED; +// /** +// * Condition vaiable signal we have received data from copro +// */ +// // std::condition_variable cv; +// // /** +// // * Number that describes how many packets we need to send until we are done +// // * during an ongoing dumpit process. 0 = done. +// // */ +// // int unsigned runs_to_go; +// // /** +// // * Number that describes how many packets per dump are sent in total. +// // * Constant per dump. +// // */ +// // int unsigned total_runs; + +// //the rpmsg device which sends the data to the copro +// struct rpmsg_device *rpdev; /* handle rpmsg device */ +// } cmd_cb_progress_data; + + +struct rpmsg_vrpmdv_mon_t{ + // from + /** + * rpmsg wait for response from copro side. + */ + struct mutex sendMTX; + /** + * rpmsg wait for response from copro side. + */ + struct mutex receiveCV; + /** + * Wait Queue: if it is signaled we have received data from copro + */ + wait_queue_head_t receive_queue; + /** + * Waitflag: 0= no data received, 1 = data received + */ + int receive_queue_flag; + //the rpmsg device which sends the data to the copro + struct rpmsg_device* rpdev; /* handle rpmsg device */ +}; + +struct rpmsg_vrpmdv_mon_t vrpmdv_mon; + + // struct mutex mutex; /* mutex to protect the ioctls */ + // struct miscdevice mdev; /* misc device ref */ + // struct rpmsg_device *rpdev; /* handle rpmsg device */ + // struct list_head buffer_list; /* buffer instances list */ + + + +// Documentation is on the implementation of this function. +int gnl_cb_vrpmdv_doit(struct sk_buff *sender_skb, struct genl_info *info); + +// Documentation is on the implementation of this function. +int gnl_cb_doit_reply_with_nlmsg_err(struct sk_buff *sender_skb, struct genl_info *info); + +/** + * The length of `struct genl_ops gnl_foobar_xmpl_ops[]`. Not necessarily + * the number of commands in `enum GNlFoobarXmplCommand`. It depends on your application logic. + * For example, you can use the same command multiple times and - dependent by flag - + * invoke a different callback handler. In our simple example we just use one .doit callback + * per operation/command. + */ +#define GNL_VRPMDV_OPS_LEN (GNL_VRPMDV_MCMD_COMMAND_COUNT) + +/** + * Array with all operations that our protocol on top of Generic Netlink + * supports. An operation is the glue between a command ("cmd" field in `struct genlmsghdr` of + * received Generic Netlink message) and the corresponding ".doit" callback function. + * See: https://elixir.bootlin.com/linux/v5.11/source/include/net/genetlink.h#L148 + */ +struct genl_ops gnl_vrpmdv_mcmd_ops[GNL_VRPMDV_OPS_LEN] = { + { + /* The "cmd" field in `struct genlmsghdr` of received Generic Netlink message */ + .cmd = GNL_VRPMDV_MCMD_C_MSG, + /* TODO Use case ? */ + .flags = 0, + /* TODO Use case ? */ + .internal_flags = 0, + /* Callback handler when a request with the specified ".cmd" above is received. + * Always validates the payload except one set NO_STRICT_VALIDATION flag in ".validate" + * See: https://elixir.bootlin.com/linux/v5.11/source/net/netlink/genetlink.c#L717 + * + * Quote from: https://lwn.net/Articles/208755 + * "The 'doit' handler should do whatever processing is necessary and return + * zero on success, or a negative value on failure. Negative return values + * will cause a NLMSG_ERROR message to be sent while a zero return value will + * only cause a NLMSG_ERROR message to be sent if the request is received with + * the NLM_F_ACK flag set." + * + * You can find this in Linux code here: + * https://elixir.bootlin.com/linux/v5.11/source/net/netlink/af_netlink.c#L2499 + * + * One can find more information about NLMSG_ERROR responses and how to handle them + * in userland in the manpage: https://man7.org/linux/man-pages/man7/netlink.7.html + * + */ + .doit = gnl_cb_vrpmdv_doit, + /* This callback is similar in use to the standard Netlink 'dumpit' callback. + * The 'dumpit' callback is invoked when a Generic Netlink message is received + * with the NLM_F_DUMP flag set. + * + * A dump can be understand as a "GET ALL DATA OF THE GIVEN ENTITY", i.e. + * the userland can receive as long as the .dumpit callback returns data. + * + * .dumpit is not mandatory, but either it or .doit must be provided, see + * https://elixir.bootlin.com/linux/v5.11/source/net/netlink/genetlink.c#L367 + * + * To be honest I don't know in what use case one should use .dumpit and why + * it is useful, because you can achieve the same also with .doit handlers. + * Anyway, this is just an example/tutorial. + * + * Quote from: https://lwn.net/Articles/208755 + * "The main difference between a 'dumpit' handler and a 'doit' handler is + * that a 'dumpit' handler does not allocate a message buffer for a response; + * a pre-allocated sk_buff is passed to the 'dumpit' handler as the first + * parameter. The 'dumpit' handler should fill the message buffer with the + * appropriate response message and return the size of the sk_buff, + * i.e. sk_buff->len, and the message buffer will automatically be sent to the + * Generic Netlink client that initiated the request. As long as the 'dumpit' + * handler returns a value greater than zero it will be called again with a + * newly allocated message buffer to fill, when the handler has no more data + * to send it should return zero; error conditions are indicated by returning + * a negative value. If necessary, state can be preserved in the + * netlink_callback parameter which is passed to the 'dumpit' handler; the + * netlink_callback parameter values will be preserved across handler calls + * for a single request." + * + * You can see the check for the NLM_F_DUMP-flag here: + * https://elixir.bootlin.com/linux/v5.11/source/net/netlink/genetlink.c#L780 + */ + .dumpit = NULL, //gnl_cb_echo_dumpit, + /* Start callback for dumps. Can be used to lock data structures. */ + .start = NULL, //gnl_cb_echo_dumpit_before, + /* Completion callback for dumps. Can be used for cleanup after a dump and releasing locks. */ + .done = NULL, //gnl_cb_echo_dumpit_before_after, + /* + 0 (= "validate strictly") or value `enum genl_validate_flags` + * see: https://elixir.bootlin.com/linux/v5.11/source/include/net/genetlink.h#L108 + */ + .validate = 0, + }, + { + .cmd = GNL_VRPMDV_MCMD_C_REPLY_WITH_NLMSG_ERR, + .flags = 0, + .internal_flags = 0, + .doit = gnl_cb_doit_reply_with_nlmsg_err, + // .dumpit is not required, only optional; application specific/dependent on your use case + // in a real application you probably have different .dumpit handlers per operation/command + .dumpit = NULL, + // in a real application you probably have different .start handlers per operation/command + .start = NULL, + // in a real application you probably have different .done handlers per operation/command + .done = NULL, + .validate = 0, + } +}; + + +/** + * Attribute policy: defines which attribute has which type (e.g int, char * etc). + * This get validated for each received Generic Netlink message, if not deactivated + * in `gnl_foobar_xmpl_ops[].validate`. + * See https://elixir.bootlin.com/linux/v5.11/source/net/netlink/genetlink.c#L717 + */ +static struct nla_policy gnl_vrpmdv_mcmd_policy[GNL_VRPMDV_MCMD_ATTRIBUTE_ENUM_LEN] = { + // In case you are seeing this syntax for the first time (I also learned this just after a few years of + // coding with C myself): The following static array initiations are equivalent: + // `int a[2] = {1, 2}` <==> `int a[2] = {[0] => 1, [1] => 2}`. + + [GNL_VRPMDV_MCMD_A_UNSPEC] = {.type = NLA_UNSPEC}, + + // You can set this to NLA_U32 for testing and send an ECHO message from the userland + // It will fail in this case and you see a entry in the kernel log. + + // `enum GNL_FOOBAR_XMPL_ATTRIBUTE::GNL_FOOBAR_XMPL_A_MSG` is a null-terminated C-String + [GNL_VRPMDV_MCMD_A_MSG] = {.type = NLA_NUL_STRING}, +}; + + + +/** + * Definition of the Netlink family we want to register using Generic Netlink functionality + */ +static struct genl_family gnl_vrpmdv_mcmd_family = { + // automatically assign an id + .id = 0, + // we don't use custom additional header info / user specific header + .hdrsize = 0, + // The name of this family, used by userspace application to get the numeric ID + .name = FAMILY_NAME, + // family specific version number; can be used to evolve application over time (multiple versions) + .version = 1, + // delegates all incoming requests to callback functions + .ops = gnl_vrpmdv_mcmd_ops, + // length of array `gnl_foobar_xmpl_ops` + .n_ops = GNL_VRPMDV_OPS_LEN, + // attribute policy (for validation of messages). Enforced automatically, except ".validate" in + // corresponding ".ops"-field is set accordingly. + .policy = gnl_vrpmdv_mcmd_policy, + // Number of attributes / bounds check for policy (array length) + .maxattr = GNL_VRPMDV_MCMD_ATTRIBUTE_ENUM_LEN, + // Owning Kernel module of the Netlink family we register. + .module = THIS_MODULE, + + // Actually not necessary because this memory region would be zeroed anyway during module load, + // but this way one sees all possible options. + + // if your application must handle multiple netlink calls in parallel (where one should not block the next + // from starting), set this to true! otherwise all netlink calls are mutually exclusive + .parallel_ops = 0, + // set to true if the family can handle network namespaces and should be presented in all of them + .netnsok = 0, + // called before an operation's doit callback, it may do additional, common, filtering and return an error + .pre_doit = NULL, + // called after an operation's doit callback, it may undo operations done by pre_doit, for example release locks + .post_doit = NULL, +}; + + + +/** + * Regular ".doit"-callback function if a Generic Netlink with command `GNL_VRPMDV_MCMD_C_MSG` is received. + * Please look into the comments where this is used as ".doit" callback above in + * `struct genl_ops gnl_vrpmdv_mcmd_ops[]` for more information about ".doit" callbacks. +*/ +int gnl_cb_vrpmdv_doit(struct sk_buff *sender_skb, struct genl_info *info) { + struct nlattr *na; + struct sk_buff *reply_skb; + int rc; + void *msg_head; + char *recv_msg; + + pr_info("%s() invoked\n", __func__); + + if (info == NULL) { + // should never happen + pr_err("An error occurred in %s():\n", __func__); + return -EINVAL; + } + + /* + * For each attribute there is an index in info->attrs which points to a nlattr structure + * in this structure the data is stored. + */ + na = info->attrs[GNL_VRPMDV_MCMD_A_MSG]; + + if (!na) { + pr_err("no info->attrs[%i]\n", GNL_VRPMDV_MCMD_A_MSG); + return -EINVAL; // we return here because we expect to recv a msg + } + + recv_msg = (char *) nla_data(na); + if (recv_msg == NULL) { + pr_err("error while receiving data\n"); + } else { + pr_info("received: '%s'\n", recv_msg); + } + + //aquire lock for cmd repmsg channel + // std::lock sendlk(cmd_cb_progress_data.sendmtx); + + //send the message to the copro over RPMSG + rc = rpmsg_send(vrpmdv_mon.rpdev->ept, recv_msg, strlen(recv_msg)); + if (rc) { + pr_err("rpmsg_send failed: %d\n", rc); + return rc; + } + + // struct rpmsg_vrpmdv_mon_t *drv = dev_get_drvdata(&rpdev->dev); + + { + pr_info("wait for response\n"); + // wait until receive_queue_flag=1 , that means we have received data from Copro + wait_event_interruptible(vrpmdv_mon.receive_queue, vrpmdv_mon.receive_queue_flag != 0 ); + pr_info("received data \n"); + //Copy data + vrpmdv_mon.receive_queue_flag = NODATARECEIVED; + + + + // std::unique_lock lk(cmd_cb_progress_data.receivemtx); + // if (myCondVar.wait_until(uLock, timePoint) == std::cv_status::timeout) + // { + // dev_err(&cmd_cb_progress_data.rpdev, "rpmsg_send failed, timeout: \n"); + // return -1: + // } + + pr_info("get response: '%s'\n", recv_msg); + } + + + + // Send a message back after we receive the reply from rpmsg channel + // --------------------- + + // Allocate some memory, since the size is not yet known use NLMSG_GOODSIZE + reply_skb = genlmsg_new(NLMSG_GOODSIZE, GFP_KERNEL); + if (reply_skb == NULL) { + pr_err("An error occurred in %s():\n", __func__); + return -ENOMEM; + } + + // Create the message headers + + // Add header to netlink message; + // afterwards the buffer looks like this: + // ---------------------------------- + // | netlink header | + // | generic netlink header | + // | | + // ---------------------------------- + // msg_head = genlmsg_put(reply_skb, // buffer for netlink message: struct sk_buff * + // // According to my findings: this is not used for routing + // // This can be used in an application specific way to target + // // different endpoints within the same user application + // // but general rule: just put sender port id here + // info->snd_portid, // sending port (not process) id: int + // info->snd_seq + 1, // sequence number: int (might be used by receiver, but not mandatory) + // &gnl_vrpmdv_mcmd_family, // struct genl_family * + // 0, // flags for Netlink header: int; application specific and not mandatory + // // The command/operation (u8) from `enum GNL_FOOBAR_XMPL_COMMAND` for Generic Netlink header + // GNL_VRPMDV_MCMD_C_MSG + // ); + + msg_head = genlmsg_put_reply(reply_skb, // buffer for netlink message: struct sk_buff * + info, // info + &gnl_vrpmdv_mcmd_family, // struct genl_family * + 0, // flags for Netlink header: int; application specific and not mandatory + // The command/operation (u8) from `enum GNL_FOOBAR_XMPL_COMMAND` for Generic Netlink header + info->genlhdr->cmd + ); + + if (msg_head == NULL) { + rc = ENOMEM; + pr_err("An error occurred in %s():\n", __func__); + return -rc; + } + + // Add a GNL_VRPMDV_MCMD_A_MSG attribute (actual value/payload to be sent) + // echo the value we just received + rc = nla_put_string(reply_skb, GNL_VRPMDV_MCMD_A_MSG, recv_msg); + if (rc != 0) { + pr_err("An error occurred in %s():\n", __func__); + return -rc; + } + + // Finalize the message: + // Corrects the netlink message header (length) to include the appended + // attributes. Only necessary if attributes have been added to the message. + genlmsg_end(reply_skb, msg_head); + + // Send the message back + rc = genlmsg_reply(reply_skb, info); + // same as genlmsg_unicast(genl_info_net(info), reply_skb, info->snd_portid) + // see https://elixir.bootlin.com/linux/v5.8.9/source/include/net/genetlink.h#L326 + + if (rc != 0) { + pr_err("An error occurred in %s():\n", __func__); + return -rc; + } + return 0; +} + +/** + * Regular ".doit"-callback function if a Generic Netlink with command `GNL_FOOBAR_XMPL_C_REPLY_WITH_NLMSG_ERR` is received. + * Please look into the comments where this is used as ".doit" callback above in + * `struct genl_ops gnl_foobar_xmpl_ops[]` for more information about ".doit" callbacks. +*/ +int gnl_cb_doit_reply_with_nlmsg_err(struct sk_buff *sender_skb, struct genl_info *info) { + pr_info("%s() invoked, a NLMSG_ERR response will be sent back\n", __func__); + + /* + * Generic Netlink is smart enough and sends a NLMSG_ERR reply automatically as reply + * Quote from https://lwn.net/Articles/208755/: + * "The 'doit' handler should do whatever processing is necessary and return + * zero on success, or a negative value on failure. Negative return values + * will cause a NLMSG_ERROR message to be sent while a zero return value will + * only cause a NLMSG_ERROR message to be sent if the request is received with + * the NLM_F_ACK flag set." + * + * You can find this in Linux code here: + * https://elixir.bootlin.com/linux/v5.11/source/net/netlink/af_netlink.c#L2499 + * + * One can find more information about NLMSG_ERROR responses and how to handle them + * in userland in the manpage: https://man7.org/linux/man-pages/man7/netlink.7.html + */ + return -EINVAL; +} + + + +/** ----- NETLINK Driver defintion ------------------*/ + + + + + +/** + * callback that is called after the copro send data + * we have to copy it in a buffer for the netlink and later send it back to the userland + * +*/ +static int vrpmdv_monitoring_cb(struct rpmsg_device *rpdev, void *data, int len, + void *priv, u32 src) +{ + int ret = 0; + struct instance_data *idata = dev_get_drvdata(&rpdev->dev); + + dev_info(&rpdev->dev, "incoming msg %d (src: 0x%x)\n", + ++idata->rx_count, src); + + print_hex_dump_debug(__func__, DUMP_PREFIX_NONE, 16, 1, data, len, + true); + + vrpmdv_mon.receive_queue_flag= DATARECEIVED; + wake_up_interruptible(&(vrpmdv_mon.receive_queue)); + + // /* samples should not live forever */ + // if (idata->rx_count >= count) { + // dev_info(&rpdev->dev, "goodbye!\n"); + // return 0; + // } + + /* send a new message now */ + // ret = rpmsg_send(rpdev->ept, MSG, strlen(MSG)); + // if (ret) + // dev_err(&rpdev->dev, "rpmsg_send failed: %d\n", ret); + + return ret; +} + +static int vrpmdv_monitoring_probe(struct rpmsg_device *rpdev) +{ + int rc; + + // int ret; + // struct instance_data *idata; + + dev_info(&rpdev->dev, "new channel: 0x%x -> 0x%x!\n", + rpdev->src, rpdev->dst); + + // idata = devm_kzalloc(&rpdev->dev, sizeof(*idata), GFP_KERNEL); + // if (!idata) + // return -ENOMEM; + + // dev_set_drvdata(&rpdev->dev, idata); + + // /* send a message to our remote processor to */ + // ret = rpmsg_send(rpdev->ept, MSG, strlen(MSG)); + // if (ret) { + // dev_err(&rpdev->dev, "vrpmdv_monitoring_controler_send failed: %d\n", ret); + // return ret; + // } + + // return 0; + + // struct device *dev; + // dev = &rpdev->dev; + // struct rpmsg_vrpmdv_mon_t *rpmsg_vrpmdv_mon; + + // rpmsg_vrpmdv_mon = devm_kzalloc(dev, sizeof(*rpmsg_vrpmdv_mon), GFP_KERNEL); + // if (!rpmsg_vrpmdv_mon) + // return -ENOMEM; + + mutex_init(&(vrpmdv_mon.sendMTX)); + init_waitqueue_head (&(vrpmdv_mon.receive_queue)); + vrpmdv_mon.rpdev = rpdev; + + // dev_set_drvdata(&rpdev->dev, rpmsg_vrpmdv_mon); + pr_info("RPMSG CMD Device set.\n"); + + + /** NEU **/ + // if (cmd_cb_progress_data.rpdev == NULL) { + // cmd_cb_progress_data.rpdev = rpdev; + // pr_info("RPMSG CMD Device set.\n"); + // } + // else { + // pr_info("Error: RPMSG CMD Device already set. Don't set it twice\n"); + // } + + pr_info("Generic Netlink VRPMDV-Monitroring_Controler Module started.\n"); + + // Register family with its operations and policies + rc = genl_register_family(&gnl_vrpmdv_mcmd_family); + if (rc != 0) { + pr_err("FAILED: genl_register_family(): %i\n", rc); + pr_err("An error occurred while inserting the generic netlink example module\n"); + return -1; + } else { + pr_info("successfully registered custom Netlink family '" FAMILY_NAME "' using Generic Netlink.\n"); + } + + return 0; + + + +} + +static void vrpmdv_monitoring_remove(struct rpmsg_device *rpdev) +{ + int ret; + pr_info("Generic Netlink Example Module unloaded.\n"); + + // Unregister the family + ret = genl_unregister_family(&gnl_vrpmdv_mcmd_family); + if (ret != 0) { + pr_err("genl_unregister_family() failed: %i\n", ret); + return; + } else { + pr_info("successfully unregistered custom Netlink family '" FAMILY_NAME "' using Generic Netlink.\n"); + } + + mutex_destroy(&(vrpmdv_mon.sendMTX)); + wake_up_interruptible(&(vrpmdv_mon.receive_queue)); + + dev_info(&rpdev->dev, "vrpmdv-monitoring controler driver is removed\n"); + +} + +static struct rpmsg_device_id vrpmdv_monitoring_controler_id_table[] = { + { .name = "vrpmdv-monitoring-controler" }, + { }, +}; +MODULE_DEVICE_TABLE(rpmsg, vrpmdv_monitoring_controler_id_table); + +static struct rpmsg_driver vrpmdv_monitoring_controler = { + .drv.name = KBUILD_MODNAME, + .id_table = vrpmdv_monitoring_controler_id_table, + .probe = vrpmdv_monitoring_probe, + .callback = vrpmdv_monitoring_cb, + .remove = vrpmdv_monitoring_remove, +}; +module_rpmsg_driver(vrpmdv_monitoring_controler); + + +// static struct rpmsg_driver vrpmdv_monitoring_data = { +// .drv.name = KBUILD_MODNAME, +// .id_table = vrpmdv_monitoring_controler_id_table, +// .probe = vrpmdv_monitoring_probe, +// .callback = vrpmdv_monitoring_cb, +// .remove = vrpmdv_monitoring_remove, +// }; + +// module_rpmsg_driver(vrpmdv_monitoring_data); + +MODULE_DESCRIPTION("Remote processor messaging vrpmdv monitoring controler"); +MODULE_LICENSE("GPL v2"); + + + +// /** +// * Module/driver initializer. Called on module load/insertion. +// * +// * @return success (0) or error code. +// */ +// static int __init gnl_foobar_xmpl_module_init(void) { +// int rc; +// pr_info("Generic Netlink Example Module inserted.\n"); + +// // Register family with its operations and policies +// rc = genl_register_family(&gnl_foobar_xmpl_family); +// if (rc != 0) { +// pr_err("FAILED: genl_register_family(): %i\n", rc); +// pr_err("An error occurred while inserting the generic netlink example module\n"); +// return -1; +// } else { +// pr_info("successfully registered custom Netlink family '" FAMILY_NAME "' using Generic Netlink.\n"); +// } + +// mutex_init(&dumpit_cb_progress_data.mtx); + +// return 0; +// } + +// /** +// * Module/driver uninitializer. Called on module unload/removal. +// * +// * @return success (0) or error code. +// */ +// static void __exit gnl_foobar_xmpl_module_exit(void) { +// int ret; +// pr_info("Generic Netlink Example Module unloaded.\n"); + +// // Unregister the family +// ret = genl_unregister_family(&gnl_foobar_xmpl_family); +// if (ret != 0) { +// pr_err("genl_unregister_family() failed: %i\n", ret); +// return; +// } else { +// pr_info("successfully unregistered custom Netlink family '" FAMILY_NAME "' using Generic Netlink.\n"); +// } + +// mutex_destroy(&dumpit_cb_progress_data.mtx); +// } + + +// ---- + +// static int __init rpmsg_sdb_drv_init(void) +// { +// int ret = 0; + +// /* Register rpmsg device */ +// ret = register_rpmsg_driver(&rpmsg_sdb_rmpsg_drv); + +// if (ret) { +// pr_err("rpmsg_sdb(ERROR): Failed to register device\n"); +// return ret; +// } + +// pr_info("rpmsg_sdb: Init done\n"); + +// return ret; +// } + +// static void __exit rpmsg_sdb_drv_exit(void) +// { +// unregister_rpmsg_driver(&rpmsg_sdb_rmpsg_drv); +// pr_info("rpmsg_sdb: Exit\n"); +// } + +// module_init(rpmsg_sdb_drv_init); +// module_exit(rpmsg_sdb_drv_exit); diff --git a/recipes-vrpmdv/recipes-base/vrpmdv-monitoring-controler/save/vrpmdv-monitoring-driver copy.bb.old b/recipes-vrpmdv/recipes-base/vrpmdv-monitoring-controler/save/vrpmdv-monitoring-driver copy.bb.old new file mode 100644 index 0000000..6aeebb9 --- /dev/null +++ b/recipes-vrpmdv/recipes-base/vrpmdv-monitoring-controler/save/vrpmdv-monitoring-driver copy.bb.old @@ -0,0 +1,24 @@ +SUMMARY = "VRPMDV Monitoring Driver" +LICENSE = "CLOSED" +# LICENSE = "GPL-2.0-only" +# LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/GPL-2.0-only;md5=801f80980d171dd6425610833a22dbe6" + +inherit module + +SRC_URI = "file://Makefile \ + file://stm32_rpmsg_sdb.c \ + " +# file://75-rpmsg-sdb.rules \ +S = "${WORKDIR}" + +# The inherit of module.bbclass will automatically name module packages with +# "kernel-module-" prefix as required by the oe-core build environment. + +# do_install:append() { + # udev rules for rpmsg-sdb + # install -d ${D}${sysconfdir}/udev/rules.d/ + # install -m 0644 ${WORKDIR}/75-rpmsg-sdb.rules ${D}${sysconfdir}/udev/rules.d/75-rpmsg-sdb.rules +# } +#FILES:${PN} += "${sysconfdir}/udev/rules.d/" + +RPROVIDES:${PN} += "kernel-module-vrpmdv-monitoring-driver" \ No newline at end of file diff --git a/recipes-vrpmdv/recipes-base/vrpmdv-monitoring-controler/save/vrpmdv-monitoring-driver copy1.bb.old b/recipes-vrpmdv/recipes-base/vrpmdv-monitoring-controler/save/vrpmdv-monitoring-driver copy1.bb.old new file mode 100644 index 0000000..2f245db --- /dev/null +++ b/recipes-vrpmdv/recipes-base/vrpmdv-monitoring-controler/save/vrpmdv-monitoring-driver copy1.bb.old @@ -0,0 +1,26 @@ +SUMMARY = "VRPMDV Monitoring Driver" +LICENSE = "GPL-2.0-only" +LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/GPL-2.0-only;md5=801f80980d171dd6425610833a22dbe6" + +inherit module + +SRC_URI = "file://Makefile \ + file://vrpmdv-monitoring.c \ + file://75-vrpmdv-monitoring.rules \ + " + +S = "${WORKDIR}" + +# The inherit of module.bbclass will automatically name module packages with +# "kernel-module-" prefix as required by the oe-core build environment. + +do_install:append() { + # udev rules for vrpmdv-monitoring + install -d ${D}${sysconfdir}/udev/rules.d/ + install -m 0644 ${WORKDIR}/75-vrpmdv-monitoring.rules ${D}${sysconfdir}/udev/rules.d/75-vrpmdv-monitoring.rules +} + +FILES:${PN} += "${sysconfdir}/udev/rules.d/" + + +RPROVIDES:${PN} += "kernel-module-vrpmdv-monitoring" \ No newline at end of file diff --git a/recipes-vrpmdv/recipes-base/vrpmdv-monitoring-controler/save/vrpmdv-monitoring-driverv2.bb.old b/recipes-vrpmdv/recipes-base/vrpmdv-monitoring-controler/save/vrpmdv-monitoring-driverv2.bb.old new file mode 100644 index 0000000..03bdb32 --- /dev/null +++ b/recipes-vrpmdv/recipes-base/vrpmdv-monitoring-controler/save/vrpmdv-monitoring-driverv2.bb.old @@ -0,0 +1,26 @@ +SUMMARY = "VRPMDV Monitoring Driver" +LICENSE = "GPL-2.0-only" +LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/GPL-2.0-only;md5=801f80980d171dd6425610833a22dbe6" + +inherit module + +SRC_URI = "file://Makefile \ + file://vrpmdv-monitoring.c \ + file://75-vrpmdv-monitoring.rules \ + " + +S = "${WORKDIR}" + +# The inherit of module.bbclass will automatically name module packages with +# "kernel-module-" prefix as required by the oe-core build environment. + +do_install:append() { + # udev rules for vrpmdv-monitoring + install -d ${D}${sysconfdir}/udev/rules.d/ + install -m 0644 ${WORKDIR}/75-vrpmdv-monitoring.rules ${D}${sysconfdir}/udev/rules.d/75-vrpmdv-monitoring.rules +} + +FILES:${PN} += "${sysconfdir}/udev/rules.d/" +FILES:${PN} += "${base_libdir}/modules/" + +RPROVIDES:${PN} += "vrpmdv-monitoring" diff --git a/recipes-vrpmdv/recipes-base/vrpmdv-monitoring-controler/vrpmdv-monitoring-controler.bb b/recipes-vrpmdv/recipes-base/vrpmdv-monitoring-controler/vrpmdv-monitoring-controler.bb new file mode 100644 index 0000000..adcf05e --- /dev/null +++ b/recipes-vrpmdv/recipes-base/vrpmdv-monitoring-controler/vrpmdv-monitoring-controler.bb @@ -0,0 +1,17 @@ +SUMMARY = "VRPMDV Monitoring Controler" +LICENSE = "GPL-2.0-only" +LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/GPL-2.0-only;md5=801f80980d171dd6425610833a22dbe6" + +inherit module + +SRC_URI = "file://Makefile \ + file://vrpmdv-monitoring-controler.c \ + " + +S = "${WORKDIR}" + +# The inherit of module.bbclass will automatically name module packages with +# "kernel-module-" prefix as required by the oe-core build environment. + + +RPROVIDES:${PN} += "kernel-module-vrpmdv-monitoring-controler" diff --git a/recipes-vrpmdv/recipes-base/vrpmdv-rtservice/files/CMakeLists.txt b/recipes-vrpmdv/recipes-base/vrpmdv-rtservice/files/CMakeLists.txt new file mode 100644 index 0000000..f471735 --- /dev/null +++ b/recipes-vrpmdv/recipes-base/vrpmdv-rtservice/files/CMakeLists.txt @@ -0,0 +1,59 @@ + +cmake_minimum_required(VERSION 3.5) +#set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY) +#SET(CMAKE_SYSTEM_PROCESSOR arm) +#SET(CMAKE_CROSSCOMPILING 1) + +project(RTService) + +# set(CMAKE_TRY_COMPILE_TARGET_TYPE "STATIC_LIBRARY") +# set(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS "") +# set(CMAKE_SHARED_LIBRARY_LINK_CXX_FLAGS "") +# set(CMAKE_C_COMPILER_WORKS 1) + + +# set(CMAKE_FIND_PACKAGE_PREFER_CONFIG ON) + set(CMAKE_CXX_STANDARD 17) + set(CMAKE_CXX_STANDARD_REQUIRED ON) + set(CMAKE_CXX_EXTENSIONS OFF) + +# SET(CMAKE_SYSTEM_PROCESSOR arm) +# SET(CMAKE_CROSSCOMPILING 1) + + +# set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) +# set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) +# set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) +# set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) + + + + set(GCC_COMPILE_FLAGS "-Wall -Wextra -Werror -Wsuggest-override -Wno-register -Wno-missing-braces -Wno-unknown-pragmas -fdiagnostics-show-option") + + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${GCC_COMPILE_FLAGS}") + +# Find python and Boost - both are required dependencies +find_package(Boost) + +set(source_files + + ${CMAKE_CURRENT_SOURCE_DIR}/src/RTService.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/src/monitoringTask/RTSMonitoringTask.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/src/utilities/RTSCoproHelper.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/include/RTSMonFrame.h + +) + +add_executable(${PROJECT_NAME} ${source_files}) + + +#file( GLOB LIB_SOURCES .src/*.cpp ) +#file( GLOB LIB_HEADERS lib/*.h ) + +# target_link_libraries(RTService +# PRIVATE +# Boost +#)cd +#target_include_directories(${PROJECT_NAME} PRIVATE ${RTSERVICEINCLUDE}) + +install(TARGETS RTService DESTINATION bin) \ No newline at end of file diff --git a/recipes-vrpmdv/recipes-base/vrpmdv-rtservice/files/_build/.gitignore b/recipes-vrpmdv/recipes-base/vrpmdv-rtservice/files/_build/.gitignore new file mode 100644 index 0000000..9595c5e --- /dev/null +++ b/recipes-vrpmdv/recipes-base/vrpmdv-rtservice/files/_build/.gitignore @@ -0,0 +1,4 @@ +/CMakeCache.txt +/Makefile +/RTService +/cmake_install.cmake diff --git a/recipes-vrpmdv/recipes-base/vrpmdv-rtservice/files/_build/CMakeFiles/.gitignore b/recipes-vrpmdv/recipes-base/vrpmdv-rtservice/files/_build/CMakeFiles/.gitignore new file mode 100644 index 0000000..2f794c2 --- /dev/null +++ b/recipes-vrpmdv/recipes-base/vrpmdv-rtservice/files/_build/CMakeFiles/.gitignore @@ -0,0 +1,7 @@ +/CMakeDirectoryInformation.cmake +/CMakeOutput.log +/Makefile.cmake +/Makefile2 +/TargetDirectories.txt +/cmake.check_cache +/progress.marks diff --git a/recipes-vrpmdv/recipes-base/vrpmdv-rtservice/files/_build/CMakeFiles/3.25.2/.gitignore b/recipes-vrpmdv/recipes-base/vrpmdv-rtservice/files/_build/CMakeFiles/3.25.2/.gitignore new file mode 100644 index 0000000..1675f1a --- /dev/null +++ b/recipes-vrpmdv/recipes-base/vrpmdv-rtservice/files/_build/CMakeFiles/3.25.2/.gitignore @@ -0,0 +1,5 @@ +/CMakeCCompiler.cmake +/CMakeCXXCompiler.cmake +/CMakeDetermineCompilerABI_C.bin +/CMakeDetermineCompilerABI_CXX.bin +/CMakeSystem.cmake diff --git a/recipes-vrpmdv/recipes-base/vrpmdv-rtservice/files/_build/CMakeFiles/3.25.2/CompilerIdC/.gitignore b/recipes-vrpmdv/recipes-base/vrpmdv-rtservice/files/_build/CMakeFiles/3.25.2/CompilerIdC/.gitignore new file mode 100644 index 0000000..4377608 --- /dev/null +++ b/recipes-vrpmdv/recipes-base/vrpmdv-rtservice/files/_build/CMakeFiles/3.25.2/CompilerIdC/.gitignore @@ -0,0 +1,2 @@ +/CMakeCCompilerId.c +/a.out diff --git a/recipes-vrpmdv/recipes-base/vrpmdv-rtservice/files/_build/CMakeFiles/3.25.2/CompilerIdCXX/.gitignore b/recipes-vrpmdv/recipes-base/vrpmdv-rtservice/files/_build/CMakeFiles/3.25.2/CompilerIdCXX/.gitignore new file mode 100644 index 0000000..44b2e04 --- /dev/null +++ b/recipes-vrpmdv/recipes-base/vrpmdv-rtservice/files/_build/CMakeFiles/3.25.2/CompilerIdCXX/.gitignore @@ -0,0 +1,2 @@ +/CMakeCXXCompilerId.cpp +/a.out diff --git a/recipes-vrpmdv/recipes-base/vrpmdv-rtservice/files/_build/CMakeFiles/RTService.dir/.gitignore b/recipes-vrpmdv/recipes-base/vrpmdv-rtservice/files/_build/CMakeFiles/RTService.dir/.gitignore new file mode 100644 index 0000000..9db10cb --- /dev/null +++ b/recipes-vrpmdv/recipes-base/vrpmdv-rtservice/files/_build/CMakeFiles/RTService.dir/.gitignore @@ -0,0 +1,10 @@ +/DependInfo.cmake +/build.make +/cmake_clean.cmake +/compiler_depend.internal +/compiler_depend.make +/compiler_depend.ts +/depend.make +/flags.make +/link.txt +/progress.make diff --git a/recipes-vrpmdv/recipes-base/vrpmdv-rtservice/files/_build/CMakeFiles/RTService.dir/src/.gitignore b/recipes-vrpmdv/recipes-base/vrpmdv-rtservice/files/_build/CMakeFiles/RTService.dir/src/.gitignore new file mode 100644 index 0000000..b1cb1c6 --- /dev/null +++ b/recipes-vrpmdv/recipes-base/vrpmdv-rtservice/files/_build/CMakeFiles/RTService.dir/src/.gitignore @@ -0,0 +1,2 @@ +/RTService.cpp.o +/RTService.cpp.o.d diff --git a/recipes-vrpmdv/recipes-base/vrpmdv-rtservice/files/_build/CMakeFiles/RTService.dir/src/monitoringTask/.gitignore b/recipes-vrpmdv/recipes-base/vrpmdv-rtservice/files/_build/CMakeFiles/RTService.dir/src/monitoringTask/.gitignore new file mode 100644 index 0000000..70f3e6c --- /dev/null +++ b/recipes-vrpmdv/recipes-base/vrpmdv-rtservice/files/_build/CMakeFiles/RTService.dir/src/monitoringTask/.gitignore @@ -0,0 +1,2 @@ +/RTSMonitoringTask.cpp.o +/RTSMonitoringTask.cpp.o.d diff --git a/recipes-vrpmdv/recipes-base/vrpmdv-rtservice/files/_build/CMakeFiles/RTService.dir/src/utilities/.gitignore b/recipes-vrpmdv/recipes-base/vrpmdv-rtservice/files/_build/CMakeFiles/RTService.dir/src/utilities/.gitignore new file mode 100644 index 0000000..236a537 --- /dev/null +++ b/recipes-vrpmdv/recipes-base/vrpmdv-rtservice/files/_build/CMakeFiles/RTService.dir/src/utilities/.gitignore @@ -0,0 +1,2 @@ +/RTSCoproHelper.cpp.o +/RTSCoproHelper.cpp.o.d diff --git a/recipes-vrpmdv/recipes-base/vrpmdv-rtservice/files/include/RTSCoproHelper.h b/recipes-vrpmdv/recipes-base/vrpmdv-rtservice/files/include/RTSCoproHelper.h new file mode 100644 index 0000000..4b1de71 --- /dev/null +++ b/recipes-vrpmdv/recipes-base/vrpmdv-rtservice/files/include/RTSCoproHelper.h @@ -0,0 +1,37 @@ +/* +*/ + +#include + + +class RTSCoproHelper +{ +private: + /* data */ + //lock Element + int mFdRpmsg[2] = {-1, -1}; + +public: + + RTSCoproHelper(/* args */); + ~RTSCoproHelper(); + + int Init(std::string fwPath, std::string fwName); + + int Copro_isFwRunning(void); + + int Copro_openTtyRpmsg(int ttyNb, int modeRaw); + int Copro_closeTtyRpmsg(int ttyNb); + int Copro_writeTtyRpmsg(int ttyNb, int len, char* pData); + int Copro_readTtyRpmsg(int ttyNb, int len, char* pData); + int Copro_stopFw(void); + int Copro_startFw(void); + +private: + + int Copro_getFwPath(char* pathStr); + int Copro_setFwPath(const char* pathStr); + int Copro_getFwName(char* pathStr); + int Copro_setFwName(const char* nameStr); + +}; diff --git a/recipes-vrpmdv/recipes-base/vrpmdv-rtservice/files/include/RTSMonFrame.h b/recipes-vrpmdv/recipes-base/vrpmdv-rtservice/files/include/RTSMonFrame.h new file mode 100644 index 0000000..6862920 --- /dev/null +++ b/recipes-vrpmdv/recipes-base/vrpmdv-rtservice/files/include/RTSMonFrame.h @@ -0,0 +1,72 @@ +/* +*/ + +#include +#include + + +class RTSMonFrame +{ +private: + /* data */ + int id; + std::string name; + int samplerate; + int sampleperiod; + int downtime; + std::string status; + std::list items; + +public: + + RTSMonFrame(int id, std::string name, int samplerate, int sampleperiod, int downtime, std::string status) { + this->id = id; + this->name = name; + this->samplerate = samplerate; + this->sampleperiod = sampleperiod; + this->downtime = downtime; + this->status = status; + } + + RTSMonFrame(int id) { + this->id = id; + } + + RTSMonFrame(RTSMonFrame& rtsMonFrameCopy) { + this->id = rtsMonFrameCopy.GetId(); + } + + ~RTSMonFrame(); + + void Add(std::string item){ + this->items.push_back(item); + } + int GetId() { + return this->id; + } + + std::string GetName() { + return this->name; + } + + int GetSampleRate() { + return this->samplerate; + } + + int GetSamplePeriod(){ + return this->sampleperiod; + } + + int GetDownTime(){ + return this->downtime; + } + + std::string Gettatus() { + return this->status; + } + + std::list& GetItems() { + return this->items; + } + +}; diff --git a/recipes-vrpmdv/recipes-base/vrpmdv-rtservice/files/include/RTSMonitoringTask.h b/recipes-vrpmdv/recipes-base/vrpmdv-rtservice/files/include/RTSMonitoringTask.h new file mode 100644 index 0000000..0eb8a67 --- /dev/null +++ b/recipes-vrpmdv/recipes-base/vrpmdv-rtservice/files/include/RTSMonitoringTask.h @@ -0,0 +1,42 @@ +/* +*/ +#include "RTSCoproHelper.h" +#include "RTSMonFrame.h" +#include +#include +#include + + + + +class RTSMonitoringTask +{ +private: + /* data */ + //lock Element + + /* The file descriptor used to manage our TTY over RPMSG */ + int mFdRpmsg[2] = {-1, -1}; + RTSCoproHelper coproHelper; + + std::map rtsMonFrames; + + pthread_t monThread; + +public: + + RTSMonitoringTask(/* args */); + ~RTSMonitoringTask(); + + //static RTSMonitoringTask& Instance(); + bool Init(); + bool CreateMonitoring(int id, std::string name, int samplerate, int sampleperiod, int downtime, std::string status); + bool LoadFW(); + bool Start(); + bool Stop(); + +private: + static void* Run(void *obj); + bool Load(); + +}; diff --git a/recipes-vrpmdv/recipes-base/vrpmdv-rtservice/files/include/json.hpp b/recipes-vrpmdv/recipes-base/vrpmdv-rtservice/files/include/json.hpp new file mode 100644 index 0000000..a858728 --- /dev/null +++ b/recipes-vrpmdv/recipes-base/vrpmdv-rtservice/files/include/json.hpp @@ -0,0 +1,24766 @@ +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.3 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2023 Niels Lohmann +// SPDX-License-Identifier: MIT + +/****************************************************************************\ + * Note on documentation: The source files contain links to the online * + * documentation of the public API at https://json.nlohmann.me. This URL * + * contains the most recent documentation and should also be applicable to * + * previous versions; documentation for deprecated functions is not * + * removed, but marked deprecated. See "Generate documentation" section in * + * file docs/README.md. * +\****************************************************************************/ + +#ifndef INCLUDE_NLOHMANN_JSON_HPP_ +#define INCLUDE_NLOHMANN_JSON_HPP_ + +#include // all_of, find, for_each +#include // nullptr_t, ptrdiff_t, size_t +#include // hash, less +#include // initializer_list +#ifndef JSON_NO_IO + #include // istream, ostream +#endif // JSON_NO_IO +#include // random_access_iterator_tag +#include // unique_ptr +#include // string, stoi, to_string +#include // declval, forward, move, pair, swap +#include // vector + +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.3 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2023 Niels Lohmann +// SPDX-License-Identifier: MIT + + + +#include + +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.3 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2023 Niels Lohmann +// SPDX-License-Identifier: MIT + + + +// This file contains all macro definitions affecting or depending on the ABI + +#ifndef JSON_SKIP_LIBRARY_VERSION_CHECK + #if defined(NLOHMANN_JSON_VERSION_MAJOR) && defined(NLOHMANN_JSON_VERSION_MINOR) && defined(NLOHMANN_JSON_VERSION_PATCH) + #if NLOHMANN_JSON_VERSION_MAJOR != 3 || NLOHMANN_JSON_VERSION_MINOR != 11 || NLOHMANN_JSON_VERSION_PATCH != 3 + #warning "Already included a different version of the library!" + #endif + #endif +#endif + +#define NLOHMANN_JSON_VERSION_MAJOR 3 // NOLINT(modernize-macro-to-enum) +#define NLOHMANN_JSON_VERSION_MINOR 11 // NOLINT(modernize-macro-to-enum) +#define NLOHMANN_JSON_VERSION_PATCH 3 // NOLINT(modernize-macro-to-enum) + +#ifndef JSON_DIAGNOSTICS + #define JSON_DIAGNOSTICS 0 +#endif + +#ifndef JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON + #define JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON 0 +#endif + +#if JSON_DIAGNOSTICS + #define NLOHMANN_JSON_ABI_TAG_DIAGNOSTICS _diag +#else + #define NLOHMANN_JSON_ABI_TAG_DIAGNOSTICS +#endif + +#if JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON + #define NLOHMANN_JSON_ABI_TAG_LEGACY_DISCARDED_VALUE_COMPARISON _ldvcmp +#else + #define NLOHMANN_JSON_ABI_TAG_LEGACY_DISCARDED_VALUE_COMPARISON +#endif + +#ifndef NLOHMANN_JSON_NAMESPACE_NO_VERSION + #define NLOHMANN_JSON_NAMESPACE_NO_VERSION 0 +#endif + +// Construct the namespace ABI tags component +#define NLOHMANN_JSON_ABI_TAGS_CONCAT_EX(a, b) json_abi ## a ## b +#define NLOHMANN_JSON_ABI_TAGS_CONCAT(a, b) \ + NLOHMANN_JSON_ABI_TAGS_CONCAT_EX(a, b) + +#define NLOHMANN_JSON_ABI_TAGS \ + NLOHMANN_JSON_ABI_TAGS_CONCAT( \ + NLOHMANN_JSON_ABI_TAG_DIAGNOSTICS, \ + NLOHMANN_JSON_ABI_TAG_LEGACY_DISCARDED_VALUE_COMPARISON) + +// Construct the namespace version component +#define NLOHMANN_JSON_NAMESPACE_VERSION_CONCAT_EX(major, minor, patch) \ + _v ## major ## _ ## minor ## _ ## patch +#define NLOHMANN_JSON_NAMESPACE_VERSION_CONCAT(major, minor, patch) \ + NLOHMANN_JSON_NAMESPACE_VERSION_CONCAT_EX(major, minor, patch) + +#if NLOHMANN_JSON_NAMESPACE_NO_VERSION +#define NLOHMANN_JSON_NAMESPACE_VERSION +#else +#define NLOHMANN_JSON_NAMESPACE_VERSION \ + NLOHMANN_JSON_NAMESPACE_VERSION_CONCAT(NLOHMANN_JSON_VERSION_MAJOR, \ + NLOHMANN_JSON_VERSION_MINOR, \ + NLOHMANN_JSON_VERSION_PATCH) +#endif + +// Combine namespace components +#define NLOHMANN_JSON_NAMESPACE_CONCAT_EX(a, b) a ## b +#define NLOHMANN_JSON_NAMESPACE_CONCAT(a, b) \ + NLOHMANN_JSON_NAMESPACE_CONCAT_EX(a, b) + +#ifndef NLOHMANN_JSON_NAMESPACE +#define NLOHMANN_JSON_NAMESPACE \ + nlohmann::NLOHMANN_JSON_NAMESPACE_CONCAT( \ + NLOHMANN_JSON_ABI_TAGS, \ + NLOHMANN_JSON_NAMESPACE_VERSION) +#endif + +#ifndef NLOHMANN_JSON_NAMESPACE_BEGIN +#define NLOHMANN_JSON_NAMESPACE_BEGIN \ + namespace nlohmann \ + { \ + inline namespace NLOHMANN_JSON_NAMESPACE_CONCAT( \ + NLOHMANN_JSON_ABI_TAGS, \ + NLOHMANN_JSON_NAMESPACE_VERSION) \ + { +#endif + +#ifndef NLOHMANN_JSON_NAMESPACE_END +#define NLOHMANN_JSON_NAMESPACE_END \ + } /* namespace (inline namespace) NOLINT(readability/namespace) */ \ + } // namespace nlohmann +#endif + +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.3 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2023 Niels Lohmann +// SPDX-License-Identifier: MIT + + + +#include // transform +#include // array +#include // forward_list +#include // inserter, front_inserter, end +#include // map +#include // string +#include // tuple, make_tuple +#include // is_arithmetic, is_same, is_enum, underlying_type, is_convertible +#include // unordered_map +#include // pair, declval +#include // valarray + +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.3 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2023 Niels Lohmann +// SPDX-License-Identifier: MIT + + + +#include // nullptr_t +#include // exception +#if JSON_DIAGNOSTICS + #include // accumulate +#endif +#include // runtime_error +#include // to_string +#include // vector + +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.3 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2023 Niels Lohmann +// SPDX-License-Identifier: MIT + + + +#include // array +#include // size_t +#include // uint8_t +#include // string + +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.3 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2023 Niels Lohmann +// SPDX-License-Identifier: MIT + + + +#include // declval, pair +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.3 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2023 Niels Lohmann +// SPDX-License-Identifier: MIT + + + +#include + +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.3 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2023 Niels Lohmann +// SPDX-License-Identifier: MIT + + + +// #include + + +NLOHMANN_JSON_NAMESPACE_BEGIN +namespace detail +{ + +template struct make_void +{ + using type = void; +}; +template using void_t = typename make_void::type; + +} // namespace detail +NLOHMANN_JSON_NAMESPACE_END + + +NLOHMANN_JSON_NAMESPACE_BEGIN +namespace detail +{ + +// https://en.cppreference.com/w/cpp/experimental/is_detected +struct nonesuch +{ + nonesuch() = delete; + ~nonesuch() = delete; + nonesuch(nonesuch const&) = delete; + nonesuch(nonesuch const&&) = delete; + void operator=(nonesuch const&) = delete; + void operator=(nonesuch&&) = delete; +}; + +template class Op, + class... Args> +struct detector +{ + using value_t = std::false_type; + using type = Default; +}; + +template class Op, class... Args> +struct detector>, Op, Args...> +{ + using value_t = std::true_type; + using type = Op; +}; + +template class Op, class... Args> +using is_detected = typename detector::value_t; + +template class Op, class... Args> +struct is_detected_lazy : is_detected { }; + +template class Op, class... Args> +using detected_t = typename detector::type; + +template class Op, class... Args> +using detected_or = detector; + +template class Op, class... Args> +using detected_or_t = typename detected_or::type; + +template class Op, class... Args> +using is_detected_exact = std::is_same>; + +template class Op, class... Args> +using is_detected_convertible = + std::is_convertible, To>; + +} // namespace detail +NLOHMANN_JSON_NAMESPACE_END + +// #include + + +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.3 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2023 Niels Lohmann +// SPDX-FileCopyrightText: 2016-2021 Evan Nemerson +// SPDX-License-Identifier: MIT + +/* Hedley - https://nemequ.github.io/hedley + * Created by Evan Nemerson + */ + +#if !defined(JSON_HEDLEY_VERSION) || (JSON_HEDLEY_VERSION < 15) +#if defined(JSON_HEDLEY_VERSION) + #undef JSON_HEDLEY_VERSION +#endif +#define JSON_HEDLEY_VERSION 15 + +#if defined(JSON_HEDLEY_STRINGIFY_EX) + #undef JSON_HEDLEY_STRINGIFY_EX +#endif +#define JSON_HEDLEY_STRINGIFY_EX(x) #x + +#if defined(JSON_HEDLEY_STRINGIFY) + #undef JSON_HEDLEY_STRINGIFY +#endif +#define JSON_HEDLEY_STRINGIFY(x) JSON_HEDLEY_STRINGIFY_EX(x) + +#if defined(JSON_HEDLEY_CONCAT_EX) + #undef JSON_HEDLEY_CONCAT_EX +#endif +#define JSON_HEDLEY_CONCAT_EX(a,b) a##b + +#if defined(JSON_HEDLEY_CONCAT) + #undef JSON_HEDLEY_CONCAT +#endif +#define JSON_HEDLEY_CONCAT(a,b) JSON_HEDLEY_CONCAT_EX(a,b) + +#if defined(JSON_HEDLEY_CONCAT3_EX) + #undef JSON_HEDLEY_CONCAT3_EX +#endif +#define JSON_HEDLEY_CONCAT3_EX(a,b,c) a##b##c + +#if defined(JSON_HEDLEY_CONCAT3) + #undef JSON_HEDLEY_CONCAT3 +#endif +#define JSON_HEDLEY_CONCAT3(a,b,c) JSON_HEDLEY_CONCAT3_EX(a,b,c) + +#if defined(JSON_HEDLEY_VERSION_ENCODE) + #undef JSON_HEDLEY_VERSION_ENCODE +#endif +#define JSON_HEDLEY_VERSION_ENCODE(major,minor,revision) (((major) * 1000000) + ((minor) * 1000) + (revision)) + +#if defined(JSON_HEDLEY_VERSION_DECODE_MAJOR) + #undef JSON_HEDLEY_VERSION_DECODE_MAJOR +#endif +#define JSON_HEDLEY_VERSION_DECODE_MAJOR(version) ((version) / 1000000) + +#if defined(JSON_HEDLEY_VERSION_DECODE_MINOR) + #undef JSON_HEDLEY_VERSION_DECODE_MINOR +#endif +#define JSON_HEDLEY_VERSION_DECODE_MINOR(version) (((version) % 1000000) / 1000) + +#if defined(JSON_HEDLEY_VERSION_DECODE_REVISION) + #undef JSON_HEDLEY_VERSION_DECODE_REVISION +#endif +#define JSON_HEDLEY_VERSION_DECODE_REVISION(version) ((version) % 1000) + +#if defined(JSON_HEDLEY_GNUC_VERSION) + #undef JSON_HEDLEY_GNUC_VERSION +#endif +#if defined(__GNUC__) && defined(__GNUC_PATCHLEVEL__) + #define JSON_HEDLEY_GNUC_VERSION JSON_HEDLEY_VERSION_ENCODE(__GNUC__, __GNUC_MINOR__, __GNUC_PATCHLEVEL__) +#elif defined(__GNUC__) + #define JSON_HEDLEY_GNUC_VERSION JSON_HEDLEY_VERSION_ENCODE(__GNUC__, __GNUC_MINOR__, 0) +#endif + +#if defined(JSON_HEDLEY_GNUC_VERSION_CHECK) + #undef JSON_HEDLEY_GNUC_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_GNUC_VERSION) + #define JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_GNUC_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_MSVC_VERSION) + #undef JSON_HEDLEY_MSVC_VERSION +#endif +#if defined(_MSC_FULL_VER) && (_MSC_FULL_VER >= 140000000) && !defined(__ICL) + #define JSON_HEDLEY_MSVC_VERSION JSON_HEDLEY_VERSION_ENCODE(_MSC_FULL_VER / 10000000, (_MSC_FULL_VER % 10000000) / 100000, (_MSC_FULL_VER % 100000) / 100) +#elif defined(_MSC_FULL_VER) && !defined(__ICL) + #define JSON_HEDLEY_MSVC_VERSION JSON_HEDLEY_VERSION_ENCODE(_MSC_FULL_VER / 1000000, (_MSC_FULL_VER % 1000000) / 10000, (_MSC_FULL_VER % 10000) / 10) +#elif defined(_MSC_VER) && !defined(__ICL) + #define JSON_HEDLEY_MSVC_VERSION JSON_HEDLEY_VERSION_ENCODE(_MSC_VER / 100, _MSC_VER % 100, 0) +#endif + +#if defined(JSON_HEDLEY_MSVC_VERSION_CHECK) + #undef JSON_HEDLEY_MSVC_VERSION_CHECK +#endif +#if !defined(JSON_HEDLEY_MSVC_VERSION) + #define JSON_HEDLEY_MSVC_VERSION_CHECK(major,minor,patch) (0) +#elif defined(_MSC_VER) && (_MSC_VER >= 1400) + #define JSON_HEDLEY_MSVC_VERSION_CHECK(major,minor,patch) (_MSC_FULL_VER >= ((major * 10000000) + (minor * 100000) + (patch))) +#elif defined(_MSC_VER) && (_MSC_VER >= 1200) + #define JSON_HEDLEY_MSVC_VERSION_CHECK(major,minor,patch) (_MSC_FULL_VER >= ((major * 1000000) + (minor * 10000) + (patch))) +#else + #define JSON_HEDLEY_MSVC_VERSION_CHECK(major,minor,patch) (_MSC_VER >= ((major * 100) + (minor))) +#endif + +#if defined(JSON_HEDLEY_INTEL_VERSION) + #undef JSON_HEDLEY_INTEL_VERSION +#endif +#if defined(__INTEL_COMPILER) && defined(__INTEL_COMPILER_UPDATE) && !defined(__ICL) + #define JSON_HEDLEY_INTEL_VERSION JSON_HEDLEY_VERSION_ENCODE(__INTEL_COMPILER / 100, __INTEL_COMPILER % 100, __INTEL_COMPILER_UPDATE) +#elif defined(__INTEL_COMPILER) && !defined(__ICL) + #define JSON_HEDLEY_INTEL_VERSION JSON_HEDLEY_VERSION_ENCODE(__INTEL_COMPILER / 100, __INTEL_COMPILER % 100, 0) +#endif + +#if defined(JSON_HEDLEY_INTEL_VERSION_CHECK) + #undef JSON_HEDLEY_INTEL_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_INTEL_VERSION) + #define JSON_HEDLEY_INTEL_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_INTEL_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_INTEL_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_INTEL_CL_VERSION) + #undef JSON_HEDLEY_INTEL_CL_VERSION +#endif +#if defined(__INTEL_COMPILER) && defined(__INTEL_COMPILER_UPDATE) && defined(__ICL) + #define JSON_HEDLEY_INTEL_CL_VERSION JSON_HEDLEY_VERSION_ENCODE(__INTEL_COMPILER, __INTEL_COMPILER_UPDATE, 0) +#endif + +#if defined(JSON_HEDLEY_INTEL_CL_VERSION_CHECK) + #undef JSON_HEDLEY_INTEL_CL_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_INTEL_CL_VERSION) + #define JSON_HEDLEY_INTEL_CL_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_INTEL_CL_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_INTEL_CL_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_PGI_VERSION) + #undef JSON_HEDLEY_PGI_VERSION +#endif +#if defined(__PGI) && defined(__PGIC__) && defined(__PGIC_MINOR__) && defined(__PGIC_PATCHLEVEL__) + #define JSON_HEDLEY_PGI_VERSION JSON_HEDLEY_VERSION_ENCODE(__PGIC__, __PGIC_MINOR__, __PGIC_PATCHLEVEL__) +#endif + +#if defined(JSON_HEDLEY_PGI_VERSION_CHECK) + #undef JSON_HEDLEY_PGI_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_PGI_VERSION) + #define JSON_HEDLEY_PGI_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_PGI_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_PGI_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_SUNPRO_VERSION) + #undef JSON_HEDLEY_SUNPRO_VERSION +#endif +#if defined(__SUNPRO_C) && (__SUNPRO_C > 0x1000) + #define JSON_HEDLEY_SUNPRO_VERSION JSON_HEDLEY_VERSION_ENCODE((((__SUNPRO_C >> 16) & 0xf) * 10) + ((__SUNPRO_C >> 12) & 0xf), (((__SUNPRO_C >> 8) & 0xf) * 10) + ((__SUNPRO_C >> 4) & 0xf), (__SUNPRO_C & 0xf) * 10) +#elif defined(__SUNPRO_C) + #define JSON_HEDLEY_SUNPRO_VERSION JSON_HEDLEY_VERSION_ENCODE((__SUNPRO_C >> 8) & 0xf, (__SUNPRO_C >> 4) & 0xf, (__SUNPRO_C) & 0xf) +#elif defined(__SUNPRO_CC) && (__SUNPRO_CC > 0x1000) + #define JSON_HEDLEY_SUNPRO_VERSION JSON_HEDLEY_VERSION_ENCODE((((__SUNPRO_CC >> 16) & 0xf) * 10) + ((__SUNPRO_CC >> 12) & 0xf), (((__SUNPRO_CC >> 8) & 0xf) * 10) + ((__SUNPRO_CC >> 4) & 0xf), (__SUNPRO_CC & 0xf) * 10) +#elif defined(__SUNPRO_CC) + #define JSON_HEDLEY_SUNPRO_VERSION JSON_HEDLEY_VERSION_ENCODE((__SUNPRO_CC >> 8) & 0xf, (__SUNPRO_CC >> 4) & 0xf, (__SUNPRO_CC) & 0xf) +#endif + +#if defined(JSON_HEDLEY_SUNPRO_VERSION_CHECK) + #undef JSON_HEDLEY_SUNPRO_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_SUNPRO_VERSION) + #define JSON_HEDLEY_SUNPRO_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_SUNPRO_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_SUNPRO_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_EMSCRIPTEN_VERSION) + #undef JSON_HEDLEY_EMSCRIPTEN_VERSION +#endif +#if defined(__EMSCRIPTEN__) + #define JSON_HEDLEY_EMSCRIPTEN_VERSION JSON_HEDLEY_VERSION_ENCODE(__EMSCRIPTEN_major__, __EMSCRIPTEN_minor__, __EMSCRIPTEN_tiny__) +#endif + +#if defined(JSON_HEDLEY_EMSCRIPTEN_VERSION_CHECK) + #undef JSON_HEDLEY_EMSCRIPTEN_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_EMSCRIPTEN_VERSION) + #define JSON_HEDLEY_EMSCRIPTEN_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_EMSCRIPTEN_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_EMSCRIPTEN_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_ARM_VERSION) + #undef JSON_HEDLEY_ARM_VERSION +#endif +#if defined(__CC_ARM) && defined(__ARMCOMPILER_VERSION) + #define JSON_HEDLEY_ARM_VERSION JSON_HEDLEY_VERSION_ENCODE(__ARMCOMPILER_VERSION / 1000000, (__ARMCOMPILER_VERSION % 1000000) / 10000, (__ARMCOMPILER_VERSION % 10000) / 100) +#elif defined(__CC_ARM) && defined(__ARMCC_VERSION) + #define JSON_HEDLEY_ARM_VERSION JSON_HEDLEY_VERSION_ENCODE(__ARMCC_VERSION / 1000000, (__ARMCC_VERSION % 1000000) / 10000, (__ARMCC_VERSION % 10000) / 100) +#endif + +#if defined(JSON_HEDLEY_ARM_VERSION_CHECK) + #undef JSON_HEDLEY_ARM_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_ARM_VERSION) + #define JSON_HEDLEY_ARM_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_ARM_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_ARM_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_IBM_VERSION) + #undef JSON_HEDLEY_IBM_VERSION +#endif +#if defined(__ibmxl__) + #define JSON_HEDLEY_IBM_VERSION JSON_HEDLEY_VERSION_ENCODE(__ibmxl_version__, __ibmxl_release__, __ibmxl_modification__) +#elif defined(__xlC__) && defined(__xlC_ver__) + #define JSON_HEDLEY_IBM_VERSION JSON_HEDLEY_VERSION_ENCODE(__xlC__ >> 8, __xlC__ & 0xff, (__xlC_ver__ >> 8) & 0xff) +#elif defined(__xlC__) + #define JSON_HEDLEY_IBM_VERSION JSON_HEDLEY_VERSION_ENCODE(__xlC__ >> 8, __xlC__ & 0xff, 0) +#endif + +#if defined(JSON_HEDLEY_IBM_VERSION_CHECK) + #undef JSON_HEDLEY_IBM_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_IBM_VERSION) + #define JSON_HEDLEY_IBM_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_IBM_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_IBM_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_TI_VERSION) + #undef JSON_HEDLEY_TI_VERSION +#endif +#if \ + defined(__TI_COMPILER_VERSION__) && \ + ( \ + defined(__TMS470__) || defined(__TI_ARM__) || \ + defined(__MSP430__) || \ + defined(__TMS320C2000__) \ + ) +#if (__TI_COMPILER_VERSION__ >= 16000000) + #define JSON_HEDLEY_TI_VERSION JSON_HEDLEY_VERSION_ENCODE(__TI_COMPILER_VERSION__ / 1000000, (__TI_COMPILER_VERSION__ % 1000000) / 1000, (__TI_COMPILER_VERSION__ % 1000)) +#endif +#endif + +#if defined(JSON_HEDLEY_TI_VERSION_CHECK) + #undef JSON_HEDLEY_TI_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_TI_VERSION) + #define JSON_HEDLEY_TI_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TI_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_TI_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_TI_CL2000_VERSION) + #undef JSON_HEDLEY_TI_CL2000_VERSION +#endif +#if defined(__TI_COMPILER_VERSION__) && defined(__TMS320C2000__) + #define JSON_HEDLEY_TI_CL2000_VERSION JSON_HEDLEY_VERSION_ENCODE(__TI_COMPILER_VERSION__ / 1000000, (__TI_COMPILER_VERSION__ % 1000000) / 1000, (__TI_COMPILER_VERSION__ % 1000)) +#endif + +#if defined(JSON_HEDLEY_TI_CL2000_VERSION_CHECK) + #undef JSON_HEDLEY_TI_CL2000_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_TI_CL2000_VERSION) + #define JSON_HEDLEY_TI_CL2000_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TI_CL2000_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_TI_CL2000_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_TI_CL430_VERSION) + #undef JSON_HEDLEY_TI_CL430_VERSION +#endif +#if defined(__TI_COMPILER_VERSION__) && defined(__MSP430__) + #define JSON_HEDLEY_TI_CL430_VERSION JSON_HEDLEY_VERSION_ENCODE(__TI_COMPILER_VERSION__ / 1000000, (__TI_COMPILER_VERSION__ % 1000000) / 1000, (__TI_COMPILER_VERSION__ % 1000)) +#endif + +#if defined(JSON_HEDLEY_TI_CL430_VERSION_CHECK) + #undef JSON_HEDLEY_TI_CL430_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_TI_CL430_VERSION) + #define JSON_HEDLEY_TI_CL430_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TI_CL430_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_TI_CL430_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_TI_ARMCL_VERSION) + #undef JSON_HEDLEY_TI_ARMCL_VERSION +#endif +#if defined(__TI_COMPILER_VERSION__) && (defined(__TMS470__) || defined(__TI_ARM__)) + #define JSON_HEDLEY_TI_ARMCL_VERSION JSON_HEDLEY_VERSION_ENCODE(__TI_COMPILER_VERSION__ / 1000000, (__TI_COMPILER_VERSION__ % 1000000) / 1000, (__TI_COMPILER_VERSION__ % 1000)) +#endif + +#if defined(JSON_HEDLEY_TI_ARMCL_VERSION_CHECK) + #undef JSON_HEDLEY_TI_ARMCL_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_TI_ARMCL_VERSION) + #define JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TI_ARMCL_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_TI_CL6X_VERSION) + #undef JSON_HEDLEY_TI_CL6X_VERSION +#endif +#if defined(__TI_COMPILER_VERSION__) && defined(__TMS320C6X__) + #define JSON_HEDLEY_TI_CL6X_VERSION JSON_HEDLEY_VERSION_ENCODE(__TI_COMPILER_VERSION__ / 1000000, (__TI_COMPILER_VERSION__ % 1000000) / 1000, (__TI_COMPILER_VERSION__ % 1000)) +#endif + +#if defined(JSON_HEDLEY_TI_CL6X_VERSION_CHECK) + #undef JSON_HEDLEY_TI_CL6X_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_TI_CL6X_VERSION) + #define JSON_HEDLEY_TI_CL6X_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TI_CL6X_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_TI_CL6X_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_TI_CL7X_VERSION) + #undef JSON_HEDLEY_TI_CL7X_VERSION +#endif +#if defined(__TI_COMPILER_VERSION__) && defined(__C7000__) + #define JSON_HEDLEY_TI_CL7X_VERSION JSON_HEDLEY_VERSION_ENCODE(__TI_COMPILER_VERSION__ / 1000000, (__TI_COMPILER_VERSION__ % 1000000) / 1000, (__TI_COMPILER_VERSION__ % 1000)) +#endif + +#if defined(JSON_HEDLEY_TI_CL7X_VERSION_CHECK) + #undef JSON_HEDLEY_TI_CL7X_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_TI_CL7X_VERSION) + #define JSON_HEDLEY_TI_CL7X_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TI_CL7X_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_TI_CL7X_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_TI_CLPRU_VERSION) + #undef JSON_HEDLEY_TI_CLPRU_VERSION +#endif +#if defined(__TI_COMPILER_VERSION__) && defined(__PRU__) + #define JSON_HEDLEY_TI_CLPRU_VERSION JSON_HEDLEY_VERSION_ENCODE(__TI_COMPILER_VERSION__ / 1000000, (__TI_COMPILER_VERSION__ % 1000000) / 1000, (__TI_COMPILER_VERSION__ % 1000)) +#endif + +#if defined(JSON_HEDLEY_TI_CLPRU_VERSION_CHECK) + #undef JSON_HEDLEY_TI_CLPRU_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_TI_CLPRU_VERSION) + #define JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TI_CLPRU_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_CRAY_VERSION) + #undef JSON_HEDLEY_CRAY_VERSION +#endif +#if defined(_CRAYC) + #if defined(_RELEASE_PATCHLEVEL) + #define JSON_HEDLEY_CRAY_VERSION JSON_HEDLEY_VERSION_ENCODE(_RELEASE_MAJOR, _RELEASE_MINOR, _RELEASE_PATCHLEVEL) + #else + #define JSON_HEDLEY_CRAY_VERSION JSON_HEDLEY_VERSION_ENCODE(_RELEASE_MAJOR, _RELEASE_MINOR, 0) + #endif +#endif + +#if defined(JSON_HEDLEY_CRAY_VERSION_CHECK) + #undef JSON_HEDLEY_CRAY_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_CRAY_VERSION) + #define JSON_HEDLEY_CRAY_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_CRAY_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_CRAY_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_IAR_VERSION) + #undef JSON_HEDLEY_IAR_VERSION +#endif +#if defined(__IAR_SYSTEMS_ICC__) + #if __VER__ > 1000 + #define JSON_HEDLEY_IAR_VERSION JSON_HEDLEY_VERSION_ENCODE((__VER__ / 1000000), ((__VER__ / 1000) % 1000), (__VER__ % 1000)) + #else + #define JSON_HEDLEY_IAR_VERSION JSON_HEDLEY_VERSION_ENCODE(__VER__ / 100, __VER__ % 100, 0) + #endif +#endif + +#if defined(JSON_HEDLEY_IAR_VERSION_CHECK) + #undef JSON_HEDLEY_IAR_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_IAR_VERSION) + #define JSON_HEDLEY_IAR_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_IAR_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_IAR_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_TINYC_VERSION) + #undef JSON_HEDLEY_TINYC_VERSION +#endif +#if defined(__TINYC__) + #define JSON_HEDLEY_TINYC_VERSION JSON_HEDLEY_VERSION_ENCODE(__TINYC__ / 1000, (__TINYC__ / 100) % 10, __TINYC__ % 100) +#endif + +#if defined(JSON_HEDLEY_TINYC_VERSION_CHECK) + #undef JSON_HEDLEY_TINYC_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_TINYC_VERSION) + #define JSON_HEDLEY_TINYC_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TINYC_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_TINYC_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_DMC_VERSION) + #undef JSON_HEDLEY_DMC_VERSION +#endif +#if defined(__DMC__) + #define JSON_HEDLEY_DMC_VERSION JSON_HEDLEY_VERSION_ENCODE(__DMC__ >> 8, (__DMC__ >> 4) & 0xf, __DMC__ & 0xf) +#endif + +#if defined(JSON_HEDLEY_DMC_VERSION_CHECK) + #undef JSON_HEDLEY_DMC_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_DMC_VERSION) + #define JSON_HEDLEY_DMC_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_DMC_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_DMC_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_COMPCERT_VERSION) + #undef JSON_HEDLEY_COMPCERT_VERSION +#endif +#if defined(__COMPCERT_VERSION__) + #define JSON_HEDLEY_COMPCERT_VERSION JSON_HEDLEY_VERSION_ENCODE(__COMPCERT_VERSION__ / 10000, (__COMPCERT_VERSION__ / 100) % 100, __COMPCERT_VERSION__ % 100) +#endif + +#if defined(JSON_HEDLEY_COMPCERT_VERSION_CHECK) + #undef JSON_HEDLEY_COMPCERT_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_COMPCERT_VERSION) + #define JSON_HEDLEY_COMPCERT_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_COMPCERT_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_COMPCERT_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_PELLES_VERSION) + #undef JSON_HEDLEY_PELLES_VERSION +#endif +#if defined(__POCC__) + #define JSON_HEDLEY_PELLES_VERSION JSON_HEDLEY_VERSION_ENCODE(__POCC__ / 100, __POCC__ % 100, 0) +#endif + +#if defined(JSON_HEDLEY_PELLES_VERSION_CHECK) + #undef JSON_HEDLEY_PELLES_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_PELLES_VERSION) + #define JSON_HEDLEY_PELLES_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_PELLES_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_PELLES_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_MCST_LCC_VERSION) + #undef JSON_HEDLEY_MCST_LCC_VERSION +#endif +#if defined(__LCC__) && defined(__LCC_MINOR__) + #define JSON_HEDLEY_MCST_LCC_VERSION JSON_HEDLEY_VERSION_ENCODE(__LCC__ / 100, __LCC__ % 100, __LCC_MINOR__) +#endif + +#if defined(JSON_HEDLEY_MCST_LCC_VERSION_CHECK) + #undef JSON_HEDLEY_MCST_LCC_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_MCST_LCC_VERSION) + #define JSON_HEDLEY_MCST_LCC_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_MCST_LCC_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_MCST_LCC_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_GCC_VERSION) + #undef JSON_HEDLEY_GCC_VERSION +#endif +#if \ + defined(JSON_HEDLEY_GNUC_VERSION) && \ + !defined(__clang__) && \ + !defined(JSON_HEDLEY_INTEL_VERSION) && \ + !defined(JSON_HEDLEY_PGI_VERSION) && \ + !defined(JSON_HEDLEY_ARM_VERSION) && \ + !defined(JSON_HEDLEY_CRAY_VERSION) && \ + !defined(JSON_HEDLEY_TI_VERSION) && \ + !defined(JSON_HEDLEY_TI_ARMCL_VERSION) && \ + !defined(JSON_HEDLEY_TI_CL430_VERSION) && \ + !defined(JSON_HEDLEY_TI_CL2000_VERSION) && \ + !defined(JSON_HEDLEY_TI_CL6X_VERSION) && \ + !defined(JSON_HEDLEY_TI_CL7X_VERSION) && \ + !defined(JSON_HEDLEY_TI_CLPRU_VERSION) && \ + !defined(__COMPCERT__) && \ + !defined(JSON_HEDLEY_MCST_LCC_VERSION) + #define JSON_HEDLEY_GCC_VERSION JSON_HEDLEY_GNUC_VERSION +#endif + +#if defined(JSON_HEDLEY_GCC_VERSION_CHECK) + #undef JSON_HEDLEY_GCC_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_GCC_VERSION) + #define JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_GCC_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_HAS_ATTRIBUTE) + #undef JSON_HEDLEY_HAS_ATTRIBUTE +#endif +#if \ + defined(__has_attribute) && \ + ( \ + (!defined(JSON_HEDLEY_IAR_VERSION) || JSON_HEDLEY_IAR_VERSION_CHECK(8,5,9)) \ + ) +# define JSON_HEDLEY_HAS_ATTRIBUTE(attribute) __has_attribute(attribute) +#else +# define JSON_HEDLEY_HAS_ATTRIBUTE(attribute) (0) +#endif + +#if defined(JSON_HEDLEY_GNUC_HAS_ATTRIBUTE) + #undef JSON_HEDLEY_GNUC_HAS_ATTRIBUTE +#endif +#if defined(__has_attribute) + #define JSON_HEDLEY_GNUC_HAS_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_HAS_ATTRIBUTE(attribute) +#else + #define JSON_HEDLEY_GNUC_HAS_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_GCC_HAS_ATTRIBUTE) + #undef JSON_HEDLEY_GCC_HAS_ATTRIBUTE +#endif +#if defined(__has_attribute) + #define JSON_HEDLEY_GCC_HAS_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_HAS_ATTRIBUTE(attribute) +#else + #define JSON_HEDLEY_GCC_HAS_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_HAS_CPP_ATTRIBUTE) + #undef JSON_HEDLEY_HAS_CPP_ATTRIBUTE +#endif +#if \ + defined(__has_cpp_attribute) && \ + defined(__cplusplus) && \ + (!defined(JSON_HEDLEY_SUNPRO_VERSION) || JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,15,0)) + #define JSON_HEDLEY_HAS_CPP_ATTRIBUTE(attribute) __has_cpp_attribute(attribute) +#else + #define JSON_HEDLEY_HAS_CPP_ATTRIBUTE(attribute) (0) +#endif + +#if defined(JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS) + #undef JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS +#endif +#if !defined(__cplusplus) || !defined(__has_cpp_attribute) + #define JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS(ns,attribute) (0) +#elif \ + !defined(JSON_HEDLEY_PGI_VERSION) && \ + !defined(JSON_HEDLEY_IAR_VERSION) && \ + (!defined(JSON_HEDLEY_SUNPRO_VERSION) || JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,15,0)) && \ + (!defined(JSON_HEDLEY_MSVC_VERSION) || JSON_HEDLEY_MSVC_VERSION_CHECK(19,20,0)) + #define JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS(ns,attribute) JSON_HEDLEY_HAS_CPP_ATTRIBUTE(ns::attribute) +#else + #define JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS(ns,attribute) (0) +#endif + +#if defined(JSON_HEDLEY_GNUC_HAS_CPP_ATTRIBUTE) + #undef JSON_HEDLEY_GNUC_HAS_CPP_ATTRIBUTE +#endif +#if defined(__has_cpp_attribute) && defined(__cplusplus) + #define JSON_HEDLEY_GNUC_HAS_CPP_ATTRIBUTE(attribute,major,minor,patch) __has_cpp_attribute(attribute) +#else + #define JSON_HEDLEY_GNUC_HAS_CPP_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_GCC_HAS_CPP_ATTRIBUTE) + #undef JSON_HEDLEY_GCC_HAS_CPP_ATTRIBUTE +#endif +#if defined(__has_cpp_attribute) && defined(__cplusplus) + #define JSON_HEDLEY_GCC_HAS_CPP_ATTRIBUTE(attribute,major,minor,patch) __has_cpp_attribute(attribute) +#else + #define JSON_HEDLEY_GCC_HAS_CPP_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_HAS_BUILTIN) + #undef JSON_HEDLEY_HAS_BUILTIN +#endif +#if defined(__has_builtin) + #define JSON_HEDLEY_HAS_BUILTIN(builtin) __has_builtin(builtin) +#else + #define JSON_HEDLEY_HAS_BUILTIN(builtin) (0) +#endif + +#if defined(JSON_HEDLEY_GNUC_HAS_BUILTIN) + #undef JSON_HEDLEY_GNUC_HAS_BUILTIN +#endif +#if defined(__has_builtin) + #define JSON_HEDLEY_GNUC_HAS_BUILTIN(builtin,major,minor,patch) __has_builtin(builtin) +#else + #define JSON_HEDLEY_GNUC_HAS_BUILTIN(builtin,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_GCC_HAS_BUILTIN) + #undef JSON_HEDLEY_GCC_HAS_BUILTIN +#endif +#if defined(__has_builtin) + #define JSON_HEDLEY_GCC_HAS_BUILTIN(builtin,major,minor,patch) __has_builtin(builtin) +#else + #define JSON_HEDLEY_GCC_HAS_BUILTIN(builtin,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_HAS_FEATURE) + #undef JSON_HEDLEY_HAS_FEATURE +#endif +#if defined(__has_feature) + #define JSON_HEDLEY_HAS_FEATURE(feature) __has_feature(feature) +#else + #define JSON_HEDLEY_HAS_FEATURE(feature) (0) +#endif + +#if defined(JSON_HEDLEY_GNUC_HAS_FEATURE) + #undef JSON_HEDLEY_GNUC_HAS_FEATURE +#endif +#if defined(__has_feature) + #define JSON_HEDLEY_GNUC_HAS_FEATURE(feature,major,minor,patch) __has_feature(feature) +#else + #define JSON_HEDLEY_GNUC_HAS_FEATURE(feature,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_GCC_HAS_FEATURE) + #undef JSON_HEDLEY_GCC_HAS_FEATURE +#endif +#if defined(__has_feature) + #define JSON_HEDLEY_GCC_HAS_FEATURE(feature,major,minor,patch) __has_feature(feature) +#else + #define JSON_HEDLEY_GCC_HAS_FEATURE(feature,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_HAS_EXTENSION) + #undef JSON_HEDLEY_HAS_EXTENSION +#endif +#if defined(__has_extension) + #define JSON_HEDLEY_HAS_EXTENSION(extension) __has_extension(extension) +#else + #define JSON_HEDLEY_HAS_EXTENSION(extension) (0) +#endif + +#if defined(JSON_HEDLEY_GNUC_HAS_EXTENSION) + #undef JSON_HEDLEY_GNUC_HAS_EXTENSION +#endif +#if defined(__has_extension) + #define JSON_HEDLEY_GNUC_HAS_EXTENSION(extension,major,minor,patch) __has_extension(extension) +#else + #define JSON_HEDLEY_GNUC_HAS_EXTENSION(extension,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_GCC_HAS_EXTENSION) + #undef JSON_HEDLEY_GCC_HAS_EXTENSION +#endif +#if defined(__has_extension) + #define JSON_HEDLEY_GCC_HAS_EXTENSION(extension,major,minor,patch) __has_extension(extension) +#else + #define JSON_HEDLEY_GCC_HAS_EXTENSION(extension,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE) + #undef JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE +#endif +#if defined(__has_declspec_attribute) + #define JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE(attribute) __has_declspec_attribute(attribute) +#else + #define JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE(attribute) (0) +#endif + +#if defined(JSON_HEDLEY_GNUC_HAS_DECLSPEC_ATTRIBUTE) + #undef JSON_HEDLEY_GNUC_HAS_DECLSPEC_ATTRIBUTE +#endif +#if defined(__has_declspec_attribute) + #define JSON_HEDLEY_GNUC_HAS_DECLSPEC_ATTRIBUTE(attribute,major,minor,patch) __has_declspec_attribute(attribute) +#else + #define JSON_HEDLEY_GNUC_HAS_DECLSPEC_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_GCC_HAS_DECLSPEC_ATTRIBUTE) + #undef JSON_HEDLEY_GCC_HAS_DECLSPEC_ATTRIBUTE +#endif +#if defined(__has_declspec_attribute) + #define JSON_HEDLEY_GCC_HAS_DECLSPEC_ATTRIBUTE(attribute,major,minor,patch) __has_declspec_attribute(attribute) +#else + #define JSON_HEDLEY_GCC_HAS_DECLSPEC_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_HAS_WARNING) + #undef JSON_HEDLEY_HAS_WARNING +#endif +#if defined(__has_warning) + #define JSON_HEDLEY_HAS_WARNING(warning) __has_warning(warning) +#else + #define JSON_HEDLEY_HAS_WARNING(warning) (0) +#endif + +#if defined(JSON_HEDLEY_GNUC_HAS_WARNING) + #undef JSON_HEDLEY_GNUC_HAS_WARNING +#endif +#if defined(__has_warning) + #define JSON_HEDLEY_GNUC_HAS_WARNING(warning,major,minor,patch) __has_warning(warning) +#else + #define JSON_HEDLEY_GNUC_HAS_WARNING(warning,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_GCC_HAS_WARNING) + #undef JSON_HEDLEY_GCC_HAS_WARNING +#endif +#if defined(__has_warning) + #define JSON_HEDLEY_GCC_HAS_WARNING(warning,major,minor,patch) __has_warning(warning) +#else + #define JSON_HEDLEY_GCC_HAS_WARNING(warning,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) +#endif + +#if \ + (defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || \ + defined(__clang__) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,0,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) || \ + JSON_HEDLEY_PGI_VERSION_CHECK(18,4,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,7,0) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(2,0,1) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,1,0) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,0,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ + JSON_HEDLEY_CRAY_VERSION_CHECK(5,0,0) || \ + JSON_HEDLEY_TINYC_VERSION_CHECK(0,9,17) || \ + JSON_HEDLEY_SUNPRO_VERSION_CHECK(8,0,0) || \ + (JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) && defined(__C99_PRAGMA_OPERATOR)) + #define JSON_HEDLEY_PRAGMA(value) _Pragma(#value) +#elif JSON_HEDLEY_MSVC_VERSION_CHECK(15,0,0) + #define JSON_HEDLEY_PRAGMA(value) __pragma(value) +#else + #define JSON_HEDLEY_PRAGMA(value) +#endif + +#if defined(JSON_HEDLEY_DIAGNOSTIC_PUSH) + #undef JSON_HEDLEY_DIAGNOSTIC_PUSH +#endif +#if defined(JSON_HEDLEY_DIAGNOSTIC_POP) + #undef JSON_HEDLEY_DIAGNOSTIC_POP +#endif +#if defined(__clang__) + #define JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma("clang diagnostic push") + #define JSON_HEDLEY_DIAGNOSTIC_POP _Pragma("clang diagnostic pop") +#elif JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma("warning(push)") + #define JSON_HEDLEY_DIAGNOSTIC_POP _Pragma("warning(pop)") +#elif JSON_HEDLEY_GCC_VERSION_CHECK(4,6,0) + #define JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma("GCC diagnostic push") + #define JSON_HEDLEY_DIAGNOSTIC_POP _Pragma("GCC diagnostic pop") +#elif \ + JSON_HEDLEY_MSVC_VERSION_CHECK(15,0,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) + #define JSON_HEDLEY_DIAGNOSTIC_PUSH __pragma(warning(push)) + #define JSON_HEDLEY_DIAGNOSTIC_POP __pragma(warning(pop)) +#elif JSON_HEDLEY_ARM_VERSION_CHECK(5,6,0) + #define JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma("push") + #define JSON_HEDLEY_DIAGNOSTIC_POP _Pragma("pop") +#elif \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,4,0) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(8,1,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) + #define JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma("diag_push") + #define JSON_HEDLEY_DIAGNOSTIC_POP _Pragma("diag_pop") +#elif JSON_HEDLEY_PELLES_VERSION_CHECK(2,90,0) + #define JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma("warning(push)") + #define JSON_HEDLEY_DIAGNOSTIC_POP _Pragma("warning(pop)") +#else + #define JSON_HEDLEY_DIAGNOSTIC_PUSH + #define JSON_HEDLEY_DIAGNOSTIC_POP +#endif + +/* JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_ is for + HEDLEY INTERNAL USE ONLY. API subject to change without notice. */ +#if defined(JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_) + #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_ +#endif +#if defined(__cplusplus) +# if JSON_HEDLEY_HAS_WARNING("-Wc++98-compat") +# if JSON_HEDLEY_HAS_WARNING("-Wc++17-extensions") +# if JSON_HEDLEY_HAS_WARNING("-Wc++1z-extensions") +# define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(xpr) \ + JSON_HEDLEY_DIAGNOSTIC_PUSH \ + _Pragma("clang diagnostic ignored \"-Wc++98-compat\"") \ + _Pragma("clang diagnostic ignored \"-Wc++17-extensions\"") \ + _Pragma("clang diagnostic ignored \"-Wc++1z-extensions\"") \ + xpr \ + JSON_HEDLEY_DIAGNOSTIC_POP +# else +# define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(xpr) \ + JSON_HEDLEY_DIAGNOSTIC_PUSH \ + _Pragma("clang diagnostic ignored \"-Wc++98-compat\"") \ + _Pragma("clang diagnostic ignored \"-Wc++17-extensions\"") \ + xpr \ + JSON_HEDLEY_DIAGNOSTIC_POP +# endif +# else +# define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(xpr) \ + JSON_HEDLEY_DIAGNOSTIC_PUSH \ + _Pragma("clang diagnostic ignored \"-Wc++98-compat\"") \ + xpr \ + JSON_HEDLEY_DIAGNOSTIC_POP +# endif +# endif +#endif +#if !defined(JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(x) x +#endif + +#if defined(JSON_HEDLEY_CONST_CAST) + #undef JSON_HEDLEY_CONST_CAST +#endif +#if defined(__cplusplus) +# define JSON_HEDLEY_CONST_CAST(T, expr) (const_cast(expr)) +#elif \ + JSON_HEDLEY_HAS_WARNING("-Wcast-qual") || \ + JSON_HEDLEY_GCC_VERSION_CHECK(4,6,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) +# define JSON_HEDLEY_CONST_CAST(T, expr) (__extension__ ({ \ + JSON_HEDLEY_DIAGNOSTIC_PUSH \ + JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL \ + ((T) (expr)); \ + JSON_HEDLEY_DIAGNOSTIC_POP \ + })) +#else +# define JSON_HEDLEY_CONST_CAST(T, expr) ((T) (expr)) +#endif + +#if defined(JSON_HEDLEY_REINTERPRET_CAST) + #undef JSON_HEDLEY_REINTERPRET_CAST +#endif +#if defined(__cplusplus) + #define JSON_HEDLEY_REINTERPRET_CAST(T, expr) (reinterpret_cast(expr)) +#else + #define JSON_HEDLEY_REINTERPRET_CAST(T, expr) ((T) (expr)) +#endif + +#if defined(JSON_HEDLEY_STATIC_CAST) + #undef JSON_HEDLEY_STATIC_CAST +#endif +#if defined(__cplusplus) + #define JSON_HEDLEY_STATIC_CAST(T, expr) (static_cast(expr)) +#else + #define JSON_HEDLEY_STATIC_CAST(T, expr) ((T) (expr)) +#endif + +#if defined(JSON_HEDLEY_CPP_CAST) + #undef JSON_HEDLEY_CPP_CAST +#endif +#if defined(__cplusplus) +# if JSON_HEDLEY_HAS_WARNING("-Wold-style-cast") +# define JSON_HEDLEY_CPP_CAST(T, expr) \ + JSON_HEDLEY_DIAGNOSTIC_PUSH \ + _Pragma("clang diagnostic ignored \"-Wold-style-cast\"") \ + ((T) (expr)) \ + JSON_HEDLEY_DIAGNOSTIC_POP +# elif JSON_HEDLEY_IAR_VERSION_CHECK(8,3,0) +# define JSON_HEDLEY_CPP_CAST(T, expr) \ + JSON_HEDLEY_DIAGNOSTIC_PUSH \ + _Pragma("diag_suppress=Pe137") \ + JSON_HEDLEY_DIAGNOSTIC_POP +# else +# define JSON_HEDLEY_CPP_CAST(T, expr) ((T) (expr)) +# endif +#else +# define JSON_HEDLEY_CPP_CAST(T, expr) (expr) +#endif + +#if defined(JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED) + #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED +#endif +#if JSON_HEDLEY_HAS_WARNING("-Wdeprecated-declarations") + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("clang diagnostic ignored \"-Wdeprecated-declarations\"") +#elif JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("warning(disable:1478 1786)") +#elif JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED __pragma(warning(disable:1478 1786)) +#elif JSON_HEDLEY_PGI_VERSION_CHECK(20,7,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("diag_suppress 1215,1216,1444,1445") +#elif JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("diag_suppress 1215,1444") +#elif JSON_HEDLEY_GCC_VERSION_CHECK(4,3,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"") +#elif JSON_HEDLEY_MSVC_VERSION_CHECK(15,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED __pragma(warning(disable:4996)) +#elif JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("diag_suppress 1215,1444") +#elif \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ + (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ + (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ + (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("diag_suppress 1291,1718") +#elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,13,0) && !defined(__cplusplus) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("error_messages(off,E_DEPRECATED_ATT,E_DEPRECATED_ATT_MESS)") +#elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,13,0) && defined(__cplusplus) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("error_messages(off,symdeprecated,symdeprecated2)") +#elif JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("diag_suppress=Pe1444,Pe1215") +#elif JSON_HEDLEY_PELLES_VERSION_CHECK(2,90,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("warn(disable:2241)") +#else + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED +#endif + +#if defined(JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS) + #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS +#endif +#if JSON_HEDLEY_HAS_WARNING("-Wunknown-pragmas") + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("clang diagnostic ignored \"-Wunknown-pragmas\"") +#elif JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("warning(disable:161)") +#elif JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS __pragma(warning(disable:161)) +#elif JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("diag_suppress 1675") +#elif JSON_HEDLEY_GCC_VERSION_CHECK(4,3,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("GCC diagnostic ignored \"-Wunknown-pragmas\"") +#elif JSON_HEDLEY_MSVC_VERSION_CHECK(15,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS __pragma(warning(disable:4068)) +#elif \ + JSON_HEDLEY_TI_VERSION_CHECK(16,9,0) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(8,0,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,3,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("diag_suppress 163") +#elif JSON_HEDLEY_TI_CL6X_VERSION_CHECK(8,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("diag_suppress 163") +#elif JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("diag_suppress=Pe161") +#elif JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("diag_suppress 161") +#else + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS +#endif + +#if defined(JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES) + #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES +#endif +#if JSON_HEDLEY_HAS_WARNING("-Wunknown-attributes") + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("clang diagnostic ignored \"-Wunknown-attributes\"") +#elif JSON_HEDLEY_GCC_VERSION_CHECK(4,6,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"") +#elif JSON_HEDLEY_INTEL_VERSION_CHECK(17,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("warning(disable:1292)") +#elif JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES __pragma(warning(disable:1292)) +#elif JSON_HEDLEY_MSVC_VERSION_CHECK(19,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES __pragma(warning(disable:5030)) +#elif JSON_HEDLEY_PGI_VERSION_CHECK(20,7,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("diag_suppress 1097,1098") +#elif JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("diag_suppress 1097") +#elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,14,0) && defined(__cplusplus) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("error_messages(off,attrskipunsup)") +#elif \ + JSON_HEDLEY_TI_VERSION_CHECK(18,1,0) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(8,3,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("diag_suppress 1173") +#elif JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("diag_suppress=Pe1097") +#elif JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("diag_suppress 1097") +#else + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES +#endif + +#if defined(JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL) + #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL +#endif +#if JSON_HEDLEY_HAS_WARNING("-Wcast-qual") + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL _Pragma("clang diagnostic ignored \"-Wcast-qual\"") +#elif JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL _Pragma("warning(disable:2203 2331)") +#elif JSON_HEDLEY_GCC_VERSION_CHECK(3,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL _Pragma("GCC diagnostic ignored \"-Wcast-qual\"") +#else + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL +#endif + +#if defined(JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNUSED_FUNCTION) + #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNUSED_FUNCTION +#endif +#if JSON_HEDLEY_HAS_WARNING("-Wunused-function") + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNUSED_FUNCTION _Pragma("clang diagnostic ignored \"-Wunused-function\"") +#elif JSON_HEDLEY_GCC_VERSION_CHECK(3,4,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNUSED_FUNCTION _Pragma("GCC diagnostic ignored \"-Wunused-function\"") +#elif JSON_HEDLEY_MSVC_VERSION_CHECK(1,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNUSED_FUNCTION __pragma(warning(disable:4505)) +#elif JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNUSED_FUNCTION _Pragma("diag_suppress 3142") +#else + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNUSED_FUNCTION +#endif + +#if defined(JSON_HEDLEY_DEPRECATED) + #undef JSON_HEDLEY_DEPRECATED +#endif +#if defined(JSON_HEDLEY_DEPRECATED_FOR) + #undef JSON_HEDLEY_DEPRECATED_FOR +#endif +#if \ + JSON_HEDLEY_MSVC_VERSION_CHECK(14,0,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) + #define JSON_HEDLEY_DEPRECATED(since) __declspec(deprecated("Since " # since)) + #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) __declspec(deprecated("Since " #since "; use " #replacement)) +#elif \ + (JSON_HEDLEY_HAS_EXTENSION(attribute_deprecated_with_message) && !defined(JSON_HEDLEY_IAR_VERSION)) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(4,5,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(5,6,0) || \ + JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,13,0) || \ + JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0) || \ + JSON_HEDLEY_TI_VERSION_CHECK(18,1,0) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(18,1,0) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(8,3,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,3,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_DEPRECATED(since) __attribute__((__deprecated__("Since " #since))) + #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) __attribute__((__deprecated__("Since " #since "; use " #replacement))) +#elif defined(__cplusplus) && (__cplusplus >= 201402L) + #define JSON_HEDLEY_DEPRECATED(since) JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[deprecated("Since " #since)]]) + #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[deprecated("Since " #since "; use " #replacement)]]) +#elif \ + JSON_HEDLEY_HAS_ATTRIBUTE(deprecated) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,1,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ + (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ + (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ + (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) || \ + JSON_HEDLEY_IAR_VERSION_CHECK(8,10,0) + #define JSON_HEDLEY_DEPRECATED(since) __attribute__((__deprecated__)) + #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) __attribute__((__deprecated__)) +#elif \ + JSON_HEDLEY_MSVC_VERSION_CHECK(13,10,0) || \ + JSON_HEDLEY_PELLES_VERSION_CHECK(6,50,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) + #define JSON_HEDLEY_DEPRECATED(since) __declspec(deprecated) + #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) __declspec(deprecated) +#elif JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) + #define JSON_HEDLEY_DEPRECATED(since) _Pragma("deprecated") + #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) _Pragma("deprecated") +#else + #define JSON_HEDLEY_DEPRECATED(since) + #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) +#endif + +#if defined(JSON_HEDLEY_UNAVAILABLE) + #undef JSON_HEDLEY_UNAVAILABLE +#endif +#if \ + JSON_HEDLEY_HAS_ATTRIBUTE(warning) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(4,3,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_UNAVAILABLE(available_since) __attribute__((__warning__("Not available until " #available_since))) +#else + #define JSON_HEDLEY_UNAVAILABLE(available_since) +#endif + +#if defined(JSON_HEDLEY_WARN_UNUSED_RESULT) + #undef JSON_HEDLEY_WARN_UNUSED_RESULT +#endif +#if defined(JSON_HEDLEY_WARN_UNUSED_RESULT_MSG) + #undef JSON_HEDLEY_WARN_UNUSED_RESULT_MSG +#endif +#if \ + JSON_HEDLEY_HAS_ATTRIBUTE(warn_unused_result) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,4,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ + (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ + (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ + (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ + (JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,15,0) && defined(__cplusplus)) || \ + JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_WARN_UNUSED_RESULT __attribute__((__warn_unused_result__)) + #define JSON_HEDLEY_WARN_UNUSED_RESULT_MSG(msg) __attribute__((__warn_unused_result__)) +#elif (JSON_HEDLEY_HAS_CPP_ATTRIBUTE(nodiscard) >= 201907L) + #define JSON_HEDLEY_WARN_UNUSED_RESULT JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[nodiscard]]) + #define JSON_HEDLEY_WARN_UNUSED_RESULT_MSG(msg) JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[nodiscard(msg)]]) +#elif JSON_HEDLEY_HAS_CPP_ATTRIBUTE(nodiscard) + #define JSON_HEDLEY_WARN_UNUSED_RESULT JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[nodiscard]]) + #define JSON_HEDLEY_WARN_UNUSED_RESULT_MSG(msg) JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[nodiscard]]) +#elif defined(_Check_return_) /* SAL */ + #define JSON_HEDLEY_WARN_UNUSED_RESULT _Check_return_ + #define JSON_HEDLEY_WARN_UNUSED_RESULT_MSG(msg) _Check_return_ +#else + #define JSON_HEDLEY_WARN_UNUSED_RESULT + #define JSON_HEDLEY_WARN_UNUSED_RESULT_MSG(msg) +#endif + +#if defined(JSON_HEDLEY_SENTINEL) + #undef JSON_HEDLEY_SENTINEL +#endif +#if \ + JSON_HEDLEY_HAS_ATTRIBUTE(sentinel) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(4,0,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(5,4,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_SENTINEL(position) __attribute__((__sentinel__(position))) +#else + #define JSON_HEDLEY_SENTINEL(position) +#endif + +#if defined(JSON_HEDLEY_NO_RETURN) + #undef JSON_HEDLEY_NO_RETURN +#endif +#if JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) + #define JSON_HEDLEY_NO_RETURN __noreturn +#elif \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_NO_RETURN __attribute__((__noreturn__)) +#elif defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L + #define JSON_HEDLEY_NO_RETURN _Noreturn +#elif defined(__cplusplus) && (__cplusplus >= 201103L) + #define JSON_HEDLEY_NO_RETURN JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[noreturn]]) +#elif \ + JSON_HEDLEY_HAS_ATTRIBUTE(noreturn) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,2,0) || \ + JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ + (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ + (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ + (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ + JSON_HEDLEY_IAR_VERSION_CHECK(8,10,0) + #define JSON_HEDLEY_NO_RETURN __attribute__((__noreturn__)) +#elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,10,0) + #define JSON_HEDLEY_NO_RETURN _Pragma("does_not_return") +#elif \ + JSON_HEDLEY_MSVC_VERSION_CHECK(13,10,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) + #define JSON_HEDLEY_NO_RETURN __declspec(noreturn) +#elif JSON_HEDLEY_TI_CL6X_VERSION_CHECK(6,0,0) && defined(__cplusplus) + #define JSON_HEDLEY_NO_RETURN _Pragma("FUNC_NEVER_RETURNS;") +#elif JSON_HEDLEY_COMPCERT_VERSION_CHECK(3,2,0) + #define JSON_HEDLEY_NO_RETURN __attribute((noreturn)) +#elif JSON_HEDLEY_PELLES_VERSION_CHECK(9,0,0) + #define JSON_HEDLEY_NO_RETURN __declspec(noreturn) +#else + #define JSON_HEDLEY_NO_RETURN +#endif + +#if defined(JSON_HEDLEY_NO_ESCAPE) + #undef JSON_HEDLEY_NO_ESCAPE +#endif +#if JSON_HEDLEY_HAS_ATTRIBUTE(noescape) + #define JSON_HEDLEY_NO_ESCAPE __attribute__((__noescape__)) +#else + #define JSON_HEDLEY_NO_ESCAPE +#endif + +#if defined(JSON_HEDLEY_UNREACHABLE) + #undef JSON_HEDLEY_UNREACHABLE +#endif +#if defined(JSON_HEDLEY_UNREACHABLE_RETURN) + #undef JSON_HEDLEY_UNREACHABLE_RETURN +#endif +#if defined(JSON_HEDLEY_ASSUME) + #undef JSON_HEDLEY_ASSUME +#endif +#if \ + JSON_HEDLEY_MSVC_VERSION_CHECK(13,10,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) + #define JSON_HEDLEY_ASSUME(expr) __assume(expr) +#elif JSON_HEDLEY_HAS_BUILTIN(__builtin_assume) + #define JSON_HEDLEY_ASSUME(expr) __builtin_assume(expr) +#elif \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,2,0) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(4,0,0) + #if defined(__cplusplus) + #define JSON_HEDLEY_ASSUME(expr) std::_nassert(expr) + #else + #define JSON_HEDLEY_ASSUME(expr) _nassert(expr) + #endif +#endif +#if \ + (JSON_HEDLEY_HAS_BUILTIN(__builtin_unreachable) && (!defined(JSON_HEDLEY_ARM_VERSION))) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(4,5,0) || \ + JSON_HEDLEY_PGI_VERSION_CHECK(18,10,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(13,1,5) || \ + JSON_HEDLEY_CRAY_VERSION_CHECK(10,0,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_UNREACHABLE() __builtin_unreachable() +#elif defined(JSON_HEDLEY_ASSUME) + #define JSON_HEDLEY_UNREACHABLE() JSON_HEDLEY_ASSUME(0) +#endif +#if !defined(JSON_HEDLEY_ASSUME) + #if defined(JSON_HEDLEY_UNREACHABLE) + #define JSON_HEDLEY_ASSUME(expr) JSON_HEDLEY_STATIC_CAST(void, ((expr) ? 1 : (JSON_HEDLEY_UNREACHABLE(), 1))) + #else + #define JSON_HEDLEY_ASSUME(expr) JSON_HEDLEY_STATIC_CAST(void, expr) + #endif +#endif +#if defined(JSON_HEDLEY_UNREACHABLE) + #if \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,2,0) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(4,0,0) + #define JSON_HEDLEY_UNREACHABLE_RETURN(value) return (JSON_HEDLEY_STATIC_CAST(void, JSON_HEDLEY_ASSUME(0)), (value)) + #else + #define JSON_HEDLEY_UNREACHABLE_RETURN(value) JSON_HEDLEY_UNREACHABLE() + #endif +#else + #define JSON_HEDLEY_UNREACHABLE_RETURN(value) return (value) +#endif +#if !defined(JSON_HEDLEY_UNREACHABLE) + #define JSON_HEDLEY_UNREACHABLE() JSON_HEDLEY_ASSUME(0) +#endif + +JSON_HEDLEY_DIAGNOSTIC_PUSH +#if JSON_HEDLEY_HAS_WARNING("-Wpedantic") + #pragma clang diagnostic ignored "-Wpedantic" +#endif +#if JSON_HEDLEY_HAS_WARNING("-Wc++98-compat-pedantic") && defined(__cplusplus) + #pragma clang diagnostic ignored "-Wc++98-compat-pedantic" +#endif +#if JSON_HEDLEY_GCC_HAS_WARNING("-Wvariadic-macros",4,0,0) + #if defined(__clang__) + #pragma clang diagnostic ignored "-Wvariadic-macros" + #elif defined(JSON_HEDLEY_GCC_VERSION) + #pragma GCC diagnostic ignored "-Wvariadic-macros" + #endif +#endif +#if defined(JSON_HEDLEY_NON_NULL) + #undef JSON_HEDLEY_NON_NULL +#endif +#if \ + JSON_HEDLEY_HAS_ATTRIBUTE(nonnull) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,3,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) + #define JSON_HEDLEY_NON_NULL(...) __attribute__((__nonnull__(__VA_ARGS__))) +#else + #define JSON_HEDLEY_NON_NULL(...) +#endif +JSON_HEDLEY_DIAGNOSTIC_POP + +#if defined(JSON_HEDLEY_PRINTF_FORMAT) + #undef JSON_HEDLEY_PRINTF_FORMAT +#endif +#if defined(__MINGW32__) && JSON_HEDLEY_GCC_HAS_ATTRIBUTE(format,4,4,0) && !defined(__USE_MINGW_ANSI_STDIO) + #define JSON_HEDLEY_PRINTF_FORMAT(string_idx,first_to_check) __attribute__((__format__(ms_printf, string_idx, first_to_check))) +#elif defined(__MINGW32__) && JSON_HEDLEY_GCC_HAS_ATTRIBUTE(format,4,4,0) && defined(__USE_MINGW_ANSI_STDIO) + #define JSON_HEDLEY_PRINTF_FORMAT(string_idx,first_to_check) __attribute__((__format__(gnu_printf, string_idx, first_to_check))) +#elif \ + JSON_HEDLEY_HAS_ATTRIBUTE(format) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,1,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(5,6,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ + (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ + (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ + (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_PRINTF_FORMAT(string_idx,first_to_check) __attribute__((__format__(__printf__, string_idx, first_to_check))) +#elif JSON_HEDLEY_PELLES_VERSION_CHECK(6,0,0) + #define JSON_HEDLEY_PRINTF_FORMAT(string_idx,first_to_check) __declspec(vaformat(printf,string_idx,first_to_check)) +#else + #define JSON_HEDLEY_PRINTF_FORMAT(string_idx,first_to_check) +#endif + +#if defined(JSON_HEDLEY_CONSTEXPR) + #undef JSON_HEDLEY_CONSTEXPR +#endif +#if defined(__cplusplus) + #if __cplusplus >= 201103L + #define JSON_HEDLEY_CONSTEXPR JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(constexpr) + #endif +#endif +#if !defined(JSON_HEDLEY_CONSTEXPR) + #define JSON_HEDLEY_CONSTEXPR +#endif + +#if defined(JSON_HEDLEY_PREDICT) + #undef JSON_HEDLEY_PREDICT +#endif +#if defined(JSON_HEDLEY_LIKELY) + #undef JSON_HEDLEY_LIKELY +#endif +#if defined(JSON_HEDLEY_UNLIKELY) + #undef JSON_HEDLEY_UNLIKELY +#endif +#if defined(JSON_HEDLEY_UNPREDICTABLE) + #undef JSON_HEDLEY_UNPREDICTABLE +#endif +#if JSON_HEDLEY_HAS_BUILTIN(__builtin_unpredictable) + #define JSON_HEDLEY_UNPREDICTABLE(expr) __builtin_unpredictable((expr)) +#endif +#if \ + (JSON_HEDLEY_HAS_BUILTIN(__builtin_expect_with_probability) && !defined(JSON_HEDLEY_PGI_VERSION)) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(9,0,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) +# define JSON_HEDLEY_PREDICT(expr, value, probability) __builtin_expect_with_probability( (expr), (value), (probability)) +# define JSON_HEDLEY_PREDICT_TRUE(expr, probability) __builtin_expect_with_probability(!!(expr), 1 , (probability)) +# define JSON_HEDLEY_PREDICT_FALSE(expr, probability) __builtin_expect_with_probability(!!(expr), 0 , (probability)) +# define JSON_HEDLEY_LIKELY(expr) __builtin_expect (!!(expr), 1 ) +# define JSON_HEDLEY_UNLIKELY(expr) __builtin_expect (!!(expr), 0 ) +#elif \ + (JSON_HEDLEY_HAS_BUILTIN(__builtin_expect) && !defined(JSON_HEDLEY_INTEL_CL_VERSION)) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,0,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + (JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,15,0) && defined(__cplusplus)) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,7,0) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(3,1,0) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,1,0) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(6,1,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ + JSON_HEDLEY_TINYC_VERSION_CHECK(0,9,27) || \ + JSON_HEDLEY_CRAY_VERSION_CHECK(8,1,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) +# define JSON_HEDLEY_PREDICT(expr, expected, probability) \ + (((probability) >= 0.9) ? __builtin_expect((expr), (expected)) : (JSON_HEDLEY_STATIC_CAST(void, expected), (expr))) +# define JSON_HEDLEY_PREDICT_TRUE(expr, probability) \ + (__extension__ ({ \ + double hedley_probability_ = (probability); \ + ((hedley_probability_ >= 0.9) ? __builtin_expect(!!(expr), 1) : ((hedley_probability_ <= 0.1) ? __builtin_expect(!!(expr), 0) : !!(expr))); \ + })) +# define JSON_HEDLEY_PREDICT_FALSE(expr, probability) \ + (__extension__ ({ \ + double hedley_probability_ = (probability); \ + ((hedley_probability_ >= 0.9) ? __builtin_expect(!!(expr), 0) : ((hedley_probability_ <= 0.1) ? __builtin_expect(!!(expr), 1) : !!(expr))); \ + })) +# define JSON_HEDLEY_LIKELY(expr) __builtin_expect(!!(expr), 1) +# define JSON_HEDLEY_UNLIKELY(expr) __builtin_expect(!!(expr), 0) +#else +# define JSON_HEDLEY_PREDICT(expr, expected, probability) (JSON_HEDLEY_STATIC_CAST(void, expected), (expr)) +# define JSON_HEDLEY_PREDICT_TRUE(expr, probability) (!!(expr)) +# define JSON_HEDLEY_PREDICT_FALSE(expr, probability) (!!(expr)) +# define JSON_HEDLEY_LIKELY(expr) (!!(expr)) +# define JSON_HEDLEY_UNLIKELY(expr) (!!(expr)) +#endif +#if !defined(JSON_HEDLEY_UNPREDICTABLE) + #define JSON_HEDLEY_UNPREDICTABLE(expr) JSON_HEDLEY_PREDICT(expr, 1, 0.5) +#endif + +#if defined(JSON_HEDLEY_MALLOC) + #undef JSON_HEDLEY_MALLOC +#endif +#if \ + JSON_HEDLEY_HAS_ATTRIBUTE(malloc) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,1,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(12,1,0) || \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ + (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ + (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ + (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_MALLOC __attribute__((__malloc__)) +#elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,10,0) + #define JSON_HEDLEY_MALLOC _Pragma("returns_new_memory") +#elif \ + JSON_HEDLEY_MSVC_VERSION_CHECK(14,0,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) + #define JSON_HEDLEY_MALLOC __declspec(restrict) +#else + #define JSON_HEDLEY_MALLOC +#endif + +#if defined(JSON_HEDLEY_PURE) + #undef JSON_HEDLEY_PURE +#endif +#if \ + JSON_HEDLEY_HAS_ATTRIBUTE(pure) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(2,96,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ + (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ + (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ + (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ + JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) +# define JSON_HEDLEY_PURE __attribute__((__pure__)) +#elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,10,0) +# define JSON_HEDLEY_PURE _Pragma("does_not_write_global_data") +#elif defined(__cplusplus) && \ + ( \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(2,0,1) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(4,0,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) \ + ) +# define JSON_HEDLEY_PURE _Pragma("FUNC_IS_PURE;") +#else +# define JSON_HEDLEY_PURE +#endif + +#if defined(JSON_HEDLEY_CONST) + #undef JSON_HEDLEY_CONST +#endif +#if \ + JSON_HEDLEY_HAS_ATTRIBUTE(const) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(2,5,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ + (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ + (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ + (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ + JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_CONST __attribute__((__const__)) +#elif \ + JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,10,0) + #define JSON_HEDLEY_CONST _Pragma("no_side_effect") +#else + #define JSON_HEDLEY_CONST JSON_HEDLEY_PURE +#endif + +#if defined(JSON_HEDLEY_RESTRICT) + #undef JSON_HEDLEY_RESTRICT +#endif +#if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) && !defined(__cplusplus) + #define JSON_HEDLEY_RESTRICT restrict +#elif \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,1,0) || \ + JSON_HEDLEY_MSVC_VERSION_CHECK(14,0,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \ + JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,2,4) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(8,1,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + (JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,14,0) && defined(__cplusplus)) || \ + JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) || \ + defined(__clang__) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_RESTRICT __restrict +#elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,3,0) && !defined(__cplusplus) + #define JSON_HEDLEY_RESTRICT _Restrict +#else + #define JSON_HEDLEY_RESTRICT +#endif + +#if defined(JSON_HEDLEY_INLINE) + #undef JSON_HEDLEY_INLINE +#endif +#if \ + (defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || \ + (defined(__cplusplus) && (__cplusplus >= 199711L)) + #define JSON_HEDLEY_INLINE inline +#elif \ + defined(JSON_HEDLEY_GCC_VERSION) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(6,2,0) + #define JSON_HEDLEY_INLINE __inline__ +#elif \ + JSON_HEDLEY_MSVC_VERSION_CHECK(12,0,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,1,0) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(3,1,0) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,2,0) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(8,0,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_INLINE __inline +#else + #define JSON_HEDLEY_INLINE +#endif + +#if defined(JSON_HEDLEY_ALWAYS_INLINE) + #undef JSON_HEDLEY_ALWAYS_INLINE +#endif +#if \ + JSON_HEDLEY_HAS_ATTRIBUTE(always_inline) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(4,0,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ + (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ + (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ + (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) || \ + JSON_HEDLEY_IAR_VERSION_CHECK(8,10,0) +# define JSON_HEDLEY_ALWAYS_INLINE __attribute__((__always_inline__)) JSON_HEDLEY_INLINE +#elif \ + JSON_HEDLEY_MSVC_VERSION_CHECK(12,0,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) +# define JSON_HEDLEY_ALWAYS_INLINE __forceinline +#elif defined(__cplusplus) && \ + ( \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(6,1,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) \ + ) +# define JSON_HEDLEY_ALWAYS_INLINE _Pragma("FUNC_ALWAYS_INLINE;") +#elif JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) +# define JSON_HEDLEY_ALWAYS_INLINE _Pragma("inline=forced") +#else +# define JSON_HEDLEY_ALWAYS_INLINE JSON_HEDLEY_INLINE +#endif + +#if defined(JSON_HEDLEY_NEVER_INLINE) + #undef JSON_HEDLEY_NEVER_INLINE +#endif +#if \ + JSON_HEDLEY_HAS_ATTRIBUTE(noinline) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(4,0,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ + (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ + (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ + (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) || \ + JSON_HEDLEY_IAR_VERSION_CHECK(8,10,0) + #define JSON_HEDLEY_NEVER_INLINE __attribute__((__noinline__)) +#elif \ + JSON_HEDLEY_MSVC_VERSION_CHECK(13,10,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) + #define JSON_HEDLEY_NEVER_INLINE __declspec(noinline) +#elif JSON_HEDLEY_PGI_VERSION_CHECK(10,2,0) + #define JSON_HEDLEY_NEVER_INLINE _Pragma("noinline") +#elif JSON_HEDLEY_TI_CL6X_VERSION_CHECK(6,0,0) && defined(__cplusplus) + #define JSON_HEDLEY_NEVER_INLINE _Pragma("FUNC_CANNOT_INLINE;") +#elif JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) + #define JSON_HEDLEY_NEVER_INLINE _Pragma("inline=never") +#elif JSON_HEDLEY_COMPCERT_VERSION_CHECK(3,2,0) + #define JSON_HEDLEY_NEVER_INLINE __attribute((noinline)) +#elif JSON_HEDLEY_PELLES_VERSION_CHECK(9,0,0) + #define JSON_HEDLEY_NEVER_INLINE __declspec(noinline) +#else + #define JSON_HEDLEY_NEVER_INLINE +#endif + +#if defined(JSON_HEDLEY_PRIVATE) + #undef JSON_HEDLEY_PRIVATE +#endif +#if defined(JSON_HEDLEY_PUBLIC) + #undef JSON_HEDLEY_PUBLIC +#endif +#if defined(JSON_HEDLEY_IMPORT) + #undef JSON_HEDLEY_IMPORT +#endif +#if defined(_WIN32) || defined(__CYGWIN__) +# define JSON_HEDLEY_PRIVATE +# define JSON_HEDLEY_PUBLIC __declspec(dllexport) +# define JSON_HEDLEY_IMPORT __declspec(dllimport) +#else +# if \ + JSON_HEDLEY_HAS_ATTRIBUTE(visibility) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,3,0) || \ + JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(13,1,0) || \ + ( \ + defined(__TI_EABI__) && \ + ( \ + (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) \ + ) \ + ) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) +# define JSON_HEDLEY_PRIVATE __attribute__((__visibility__("hidden"))) +# define JSON_HEDLEY_PUBLIC __attribute__((__visibility__("default"))) +# else +# define JSON_HEDLEY_PRIVATE +# define JSON_HEDLEY_PUBLIC +# endif +# define JSON_HEDLEY_IMPORT extern +#endif + +#if defined(JSON_HEDLEY_NO_THROW) + #undef JSON_HEDLEY_NO_THROW +#endif +#if \ + JSON_HEDLEY_HAS_ATTRIBUTE(nothrow) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,3,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_NO_THROW __attribute__((__nothrow__)) +#elif \ + JSON_HEDLEY_MSVC_VERSION_CHECK(13,1,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) + #define JSON_HEDLEY_NO_THROW __declspec(nothrow) +#else + #define JSON_HEDLEY_NO_THROW +#endif + +#if defined(JSON_HEDLEY_FALL_THROUGH) + #undef JSON_HEDLEY_FALL_THROUGH +#endif +#if \ + JSON_HEDLEY_HAS_ATTRIBUTE(fallthrough) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(7,0,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_FALL_THROUGH __attribute__((__fallthrough__)) +#elif JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS(clang,fallthrough) + #define JSON_HEDLEY_FALL_THROUGH JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[clang::fallthrough]]) +#elif JSON_HEDLEY_HAS_CPP_ATTRIBUTE(fallthrough) + #define JSON_HEDLEY_FALL_THROUGH JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[fallthrough]]) +#elif defined(__fallthrough) /* SAL */ + #define JSON_HEDLEY_FALL_THROUGH __fallthrough +#else + #define JSON_HEDLEY_FALL_THROUGH +#endif + +#if defined(JSON_HEDLEY_RETURNS_NON_NULL) + #undef JSON_HEDLEY_RETURNS_NON_NULL +#endif +#if \ + JSON_HEDLEY_HAS_ATTRIBUTE(returns_nonnull) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(4,9,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_RETURNS_NON_NULL __attribute__((__returns_nonnull__)) +#elif defined(_Ret_notnull_) /* SAL */ + #define JSON_HEDLEY_RETURNS_NON_NULL _Ret_notnull_ +#else + #define JSON_HEDLEY_RETURNS_NON_NULL +#endif + +#if defined(JSON_HEDLEY_ARRAY_PARAM) + #undef JSON_HEDLEY_ARRAY_PARAM +#endif +#if \ + defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) && \ + !defined(__STDC_NO_VLA__) && \ + !defined(__cplusplus) && \ + !defined(JSON_HEDLEY_PGI_VERSION) && \ + !defined(JSON_HEDLEY_TINYC_VERSION) + #define JSON_HEDLEY_ARRAY_PARAM(name) (name) +#else + #define JSON_HEDLEY_ARRAY_PARAM(name) +#endif + +#if defined(JSON_HEDLEY_IS_CONSTANT) + #undef JSON_HEDLEY_IS_CONSTANT +#endif +#if defined(JSON_HEDLEY_REQUIRE_CONSTEXPR) + #undef JSON_HEDLEY_REQUIRE_CONSTEXPR +#endif +/* JSON_HEDLEY_IS_CONSTEXPR_ is for + HEDLEY INTERNAL USE ONLY. API subject to change without notice. */ +#if defined(JSON_HEDLEY_IS_CONSTEXPR_) + #undef JSON_HEDLEY_IS_CONSTEXPR_ +#endif +#if \ + JSON_HEDLEY_HAS_BUILTIN(__builtin_constant_p) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,4,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_TINYC_VERSION_CHECK(0,9,19) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(13,1,0) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(6,1,0) || \ + (JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,10,0) && !defined(__cplusplus)) || \ + JSON_HEDLEY_CRAY_VERSION_CHECK(8,1,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_IS_CONSTANT(expr) __builtin_constant_p(expr) +#endif +#if !defined(__cplusplus) +# if \ + JSON_HEDLEY_HAS_BUILTIN(__builtin_types_compatible_p) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,4,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(13,1,0) || \ + JSON_HEDLEY_CRAY_VERSION_CHECK(8,1,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(5,4,0) || \ + JSON_HEDLEY_TINYC_VERSION_CHECK(0,9,24) +#if defined(__INTPTR_TYPE__) + #define JSON_HEDLEY_IS_CONSTEXPR_(expr) __builtin_types_compatible_p(__typeof__((1 ? (void*) ((__INTPTR_TYPE__) ((expr) * 0)) : (int*) 0)), int*) +#else + #include + #define JSON_HEDLEY_IS_CONSTEXPR_(expr) __builtin_types_compatible_p(__typeof__((1 ? (void*) ((intptr_t) ((expr) * 0)) : (int*) 0)), int*) +#endif +# elif \ + ( \ + defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L) && \ + !defined(JSON_HEDLEY_SUNPRO_VERSION) && \ + !defined(JSON_HEDLEY_PGI_VERSION) && \ + !defined(JSON_HEDLEY_IAR_VERSION)) || \ + (JSON_HEDLEY_HAS_EXTENSION(c_generic_selections) && !defined(JSON_HEDLEY_IAR_VERSION)) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(4,9,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(17,0,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(12,1,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(5,3,0) +#if defined(__INTPTR_TYPE__) + #define JSON_HEDLEY_IS_CONSTEXPR_(expr) _Generic((1 ? (void*) ((__INTPTR_TYPE__) ((expr) * 0)) : (int*) 0), int*: 1, void*: 0) +#else + #include + #define JSON_HEDLEY_IS_CONSTEXPR_(expr) _Generic((1 ? (void*) ((intptr_t) * 0) : (int*) 0), int*: 1, void*: 0) +#endif +# elif \ + defined(JSON_HEDLEY_GCC_VERSION) || \ + defined(JSON_HEDLEY_INTEL_VERSION) || \ + defined(JSON_HEDLEY_TINYC_VERSION) || \ + defined(JSON_HEDLEY_TI_ARMCL_VERSION) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(18,12,0) || \ + defined(JSON_HEDLEY_TI_CL2000_VERSION) || \ + defined(JSON_HEDLEY_TI_CL6X_VERSION) || \ + defined(JSON_HEDLEY_TI_CL7X_VERSION) || \ + defined(JSON_HEDLEY_TI_CLPRU_VERSION) || \ + defined(__clang__) +# define JSON_HEDLEY_IS_CONSTEXPR_(expr) ( \ + sizeof(void) != \ + sizeof(*( \ + 1 ? \ + ((void*) ((expr) * 0L) ) : \ +((struct { char v[sizeof(void) * 2]; } *) 1) \ + ) \ + ) \ + ) +# endif +#endif +#if defined(JSON_HEDLEY_IS_CONSTEXPR_) + #if !defined(JSON_HEDLEY_IS_CONSTANT) + #define JSON_HEDLEY_IS_CONSTANT(expr) JSON_HEDLEY_IS_CONSTEXPR_(expr) + #endif + #define JSON_HEDLEY_REQUIRE_CONSTEXPR(expr) (JSON_HEDLEY_IS_CONSTEXPR_(expr) ? (expr) : (-1)) +#else + #if !defined(JSON_HEDLEY_IS_CONSTANT) + #define JSON_HEDLEY_IS_CONSTANT(expr) (0) + #endif + #define JSON_HEDLEY_REQUIRE_CONSTEXPR(expr) (expr) +#endif + +#if defined(JSON_HEDLEY_BEGIN_C_DECLS) + #undef JSON_HEDLEY_BEGIN_C_DECLS +#endif +#if defined(JSON_HEDLEY_END_C_DECLS) + #undef JSON_HEDLEY_END_C_DECLS +#endif +#if defined(JSON_HEDLEY_C_DECL) + #undef JSON_HEDLEY_C_DECL +#endif +#if defined(__cplusplus) + #define JSON_HEDLEY_BEGIN_C_DECLS extern "C" { + #define JSON_HEDLEY_END_C_DECLS } + #define JSON_HEDLEY_C_DECL extern "C" +#else + #define JSON_HEDLEY_BEGIN_C_DECLS + #define JSON_HEDLEY_END_C_DECLS + #define JSON_HEDLEY_C_DECL +#endif + +#if defined(JSON_HEDLEY_STATIC_ASSERT) + #undef JSON_HEDLEY_STATIC_ASSERT +#endif +#if \ + !defined(__cplusplus) && ( \ + (defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L)) || \ + (JSON_HEDLEY_HAS_FEATURE(c_static_assert) && !defined(JSON_HEDLEY_INTEL_CL_VERSION)) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(6,0,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + defined(_Static_assert) \ + ) +# define JSON_HEDLEY_STATIC_ASSERT(expr, message) _Static_assert(expr, message) +#elif \ + (defined(__cplusplus) && (__cplusplus >= 201103L)) || \ + JSON_HEDLEY_MSVC_VERSION_CHECK(16,0,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) +# define JSON_HEDLEY_STATIC_ASSERT(expr, message) JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(static_assert(expr, message)) +#else +# define JSON_HEDLEY_STATIC_ASSERT(expr, message) +#endif + +#if defined(JSON_HEDLEY_NULL) + #undef JSON_HEDLEY_NULL +#endif +#if defined(__cplusplus) + #if __cplusplus >= 201103L + #define JSON_HEDLEY_NULL JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(nullptr) + #elif defined(NULL) + #define JSON_HEDLEY_NULL NULL + #else + #define JSON_HEDLEY_NULL JSON_HEDLEY_STATIC_CAST(void*, 0) + #endif +#elif defined(NULL) + #define JSON_HEDLEY_NULL NULL +#else + #define JSON_HEDLEY_NULL ((void*) 0) +#endif + +#if defined(JSON_HEDLEY_MESSAGE) + #undef JSON_HEDLEY_MESSAGE +#endif +#if JSON_HEDLEY_HAS_WARNING("-Wunknown-pragmas") +# define JSON_HEDLEY_MESSAGE(msg) \ + JSON_HEDLEY_DIAGNOSTIC_PUSH \ + JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS \ + JSON_HEDLEY_PRAGMA(message msg) \ + JSON_HEDLEY_DIAGNOSTIC_POP +#elif \ + JSON_HEDLEY_GCC_VERSION_CHECK(4,4,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) +# define JSON_HEDLEY_MESSAGE(msg) JSON_HEDLEY_PRAGMA(message msg) +#elif JSON_HEDLEY_CRAY_VERSION_CHECK(5,0,0) +# define JSON_HEDLEY_MESSAGE(msg) JSON_HEDLEY_PRAGMA(_CRI message msg) +#elif JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) +# define JSON_HEDLEY_MESSAGE(msg) JSON_HEDLEY_PRAGMA(message(msg)) +#elif JSON_HEDLEY_PELLES_VERSION_CHECK(2,0,0) +# define JSON_HEDLEY_MESSAGE(msg) JSON_HEDLEY_PRAGMA(message(msg)) +#else +# define JSON_HEDLEY_MESSAGE(msg) +#endif + +#if defined(JSON_HEDLEY_WARNING) + #undef JSON_HEDLEY_WARNING +#endif +#if JSON_HEDLEY_HAS_WARNING("-Wunknown-pragmas") +# define JSON_HEDLEY_WARNING(msg) \ + JSON_HEDLEY_DIAGNOSTIC_PUSH \ + JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS \ + JSON_HEDLEY_PRAGMA(clang warning msg) \ + JSON_HEDLEY_DIAGNOSTIC_POP +#elif \ + JSON_HEDLEY_GCC_VERSION_CHECK(4,8,0) || \ + JSON_HEDLEY_PGI_VERSION_CHECK(18,4,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) +# define JSON_HEDLEY_WARNING(msg) JSON_HEDLEY_PRAGMA(GCC warning msg) +#elif \ + JSON_HEDLEY_MSVC_VERSION_CHECK(15,0,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) +# define JSON_HEDLEY_WARNING(msg) JSON_HEDLEY_PRAGMA(message(msg)) +#else +# define JSON_HEDLEY_WARNING(msg) JSON_HEDLEY_MESSAGE(msg) +#endif + +#if defined(JSON_HEDLEY_REQUIRE) + #undef JSON_HEDLEY_REQUIRE +#endif +#if defined(JSON_HEDLEY_REQUIRE_MSG) + #undef JSON_HEDLEY_REQUIRE_MSG +#endif +#if JSON_HEDLEY_HAS_ATTRIBUTE(diagnose_if) +# if JSON_HEDLEY_HAS_WARNING("-Wgcc-compat") +# define JSON_HEDLEY_REQUIRE(expr) \ + JSON_HEDLEY_DIAGNOSTIC_PUSH \ + _Pragma("clang diagnostic ignored \"-Wgcc-compat\"") \ + __attribute__((diagnose_if(!(expr), #expr, "error"))) \ + JSON_HEDLEY_DIAGNOSTIC_POP +# define JSON_HEDLEY_REQUIRE_MSG(expr,msg) \ + JSON_HEDLEY_DIAGNOSTIC_PUSH \ + _Pragma("clang diagnostic ignored \"-Wgcc-compat\"") \ + __attribute__((diagnose_if(!(expr), msg, "error"))) \ + JSON_HEDLEY_DIAGNOSTIC_POP +# else +# define JSON_HEDLEY_REQUIRE(expr) __attribute__((diagnose_if(!(expr), #expr, "error"))) +# define JSON_HEDLEY_REQUIRE_MSG(expr,msg) __attribute__((diagnose_if(!(expr), msg, "error"))) +# endif +#else +# define JSON_HEDLEY_REQUIRE(expr) +# define JSON_HEDLEY_REQUIRE_MSG(expr,msg) +#endif + +#if defined(JSON_HEDLEY_FLAGS) + #undef JSON_HEDLEY_FLAGS +#endif +#if JSON_HEDLEY_HAS_ATTRIBUTE(flag_enum) && (!defined(__cplusplus) || JSON_HEDLEY_HAS_WARNING("-Wbitfield-enum-conversion")) + #define JSON_HEDLEY_FLAGS __attribute__((__flag_enum__)) +#else + #define JSON_HEDLEY_FLAGS +#endif + +#if defined(JSON_HEDLEY_FLAGS_CAST) + #undef JSON_HEDLEY_FLAGS_CAST +#endif +#if JSON_HEDLEY_INTEL_VERSION_CHECK(19,0,0) +# define JSON_HEDLEY_FLAGS_CAST(T, expr) (__extension__ ({ \ + JSON_HEDLEY_DIAGNOSTIC_PUSH \ + _Pragma("warning(disable:188)") \ + ((T) (expr)); \ + JSON_HEDLEY_DIAGNOSTIC_POP \ + })) +#else +# define JSON_HEDLEY_FLAGS_CAST(T, expr) JSON_HEDLEY_STATIC_CAST(T, expr) +#endif + +#if defined(JSON_HEDLEY_EMPTY_BASES) + #undef JSON_HEDLEY_EMPTY_BASES +#endif +#if \ + (JSON_HEDLEY_MSVC_VERSION_CHECK(19,0,23918) && !JSON_HEDLEY_MSVC_VERSION_CHECK(20,0,0)) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) + #define JSON_HEDLEY_EMPTY_BASES __declspec(empty_bases) +#else + #define JSON_HEDLEY_EMPTY_BASES +#endif + +/* Remaining macros are deprecated. */ + +#if defined(JSON_HEDLEY_GCC_NOT_CLANG_VERSION_CHECK) + #undef JSON_HEDLEY_GCC_NOT_CLANG_VERSION_CHECK +#endif +#if defined(__clang__) + #define JSON_HEDLEY_GCC_NOT_CLANG_VERSION_CHECK(major,minor,patch) (0) +#else + #define JSON_HEDLEY_GCC_NOT_CLANG_VERSION_CHECK(major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_CLANG_HAS_ATTRIBUTE) + #undef JSON_HEDLEY_CLANG_HAS_ATTRIBUTE +#endif +#define JSON_HEDLEY_CLANG_HAS_ATTRIBUTE(attribute) JSON_HEDLEY_HAS_ATTRIBUTE(attribute) + +#if defined(JSON_HEDLEY_CLANG_HAS_CPP_ATTRIBUTE) + #undef JSON_HEDLEY_CLANG_HAS_CPP_ATTRIBUTE +#endif +#define JSON_HEDLEY_CLANG_HAS_CPP_ATTRIBUTE(attribute) JSON_HEDLEY_HAS_CPP_ATTRIBUTE(attribute) + +#if defined(JSON_HEDLEY_CLANG_HAS_BUILTIN) + #undef JSON_HEDLEY_CLANG_HAS_BUILTIN +#endif +#define JSON_HEDLEY_CLANG_HAS_BUILTIN(builtin) JSON_HEDLEY_HAS_BUILTIN(builtin) + +#if defined(JSON_HEDLEY_CLANG_HAS_FEATURE) + #undef JSON_HEDLEY_CLANG_HAS_FEATURE +#endif +#define JSON_HEDLEY_CLANG_HAS_FEATURE(feature) JSON_HEDLEY_HAS_FEATURE(feature) + +#if defined(JSON_HEDLEY_CLANG_HAS_EXTENSION) + #undef JSON_HEDLEY_CLANG_HAS_EXTENSION +#endif +#define JSON_HEDLEY_CLANG_HAS_EXTENSION(extension) JSON_HEDLEY_HAS_EXTENSION(extension) + +#if defined(JSON_HEDLEY_CLANG_HAS_DECLSPEC_DECLSPEC_ATTRIBUTE) + #undef JSON_HEDLEY_CLANG_HAS_DECLSPEC_DECLSPEC_ATTRIBUTE +#endif +#define JSON_HEDLEY_CLANG_HAS_DECLSPEC_ATTRIBUTE(attribute) JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE(attribute) + +#if defined(JSON_HEDLEY_CLANG_HAS_WARNING) + #undef JSON_HEDLEY_CLANG_HAS_WARNING +#endif +#define JSON_HEDLEY_CLANG_HAS_WARNING(warning) JSON_HEDLEY_HAS_WARNING(warning) + +#endif /* !defined(JSON_HEDLEY_VERSION) || (JSON_HEDLEY_VERSION < X) */ + + +// This file contains all internal macro definitions (except those affecting ABI) +// You MUST include macro_unscope.hpp at the end of json.hpp to undef all of them + +// #include + + +// exclude unsupported compilers +#if !defined(JSON_SKIP_UNSUPPORTED_COMPILER_CHECK) + #if defined(__clang__) + #if (__clang_major__ * 10000 + __clang_minor__ * 100 + __clang_patchlevel__) < 30400 + #error "unsupported Clang version - see https://github.com/nlohmann/json#supported-compilers" + #endif + #elif defined(__GNUC__) && !(defined(__ICC) || defined(__INTEL_COMPILER)) + #if (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) < 40800 + #error "unsupported GCC version - see https://github.com/nlohmann/json#supported-compilers" + #endif + #endif +#endif + +// C++ language standard detection +// if the user manually specified the used c++ version this is skipped +#if !defined(JSON_HAS_CPP_20) && !defined(JSON_HAS_CPP_17) && !defined(JSON_HAS_CPP_14) && !defined(JSON_HAS_CPP_11) + #if (defined(__cplusplus) && __cplusplus >= 202002L) || (defined(_MSVC_LANG) && _MSVC_LANG >= 202002L) + #define JSON_HAS_CPP_20 + #define JSON_HAS_CPP_17 + #define JSON_HAS_CPP_14 + #elif (defined(__cplusplus) && __cplusplus >= 201703L) || (defined(_HAS_CXX17) && _HAS_CXX17 == 1) // fix for issue #464 + #define JSON_HAS_CPP_17 + #define JSON_HAS_CPP_14 + #elif (defined(__cplusplus) && __cplusplus >= 201402L) || (defined(_HAS_CXX14) && _HAS_CXX14 == 1) + #define JSON_HAS_CPP_14 + #endif + // the cpp 11 flag is always specified because it is the minimal required version + #define JSON_HAS_CPP_11 +#endif + +#ifdef __has_include + #if __has_include() + #include + #endif +#endif + +#if !defined(JSON_HAS_FILESYSTEM) && !defined(JSON_HAS_EXPERIMENTAL_FILESYSTEM) + #ifdef JSON_HAS_CPP_17 + #if defined(__cpp_lib_filesystem) + #define JSON_HAS_FILESYSTEM 1 + #elif defined(__cpp_lib_experimental_filesystem) + #define JSON_HAS_EXPERIMENTAL_FILESYSTEM 1 + #elif !defined(__has_include) + #define JSON_HAS_EXPERIMENTAL_FILESYSTEM 1 + #elif __has_include() + #define JSON_HAS_FILESYSTEM 1 + #elif __has_include() + #define JSON_HAS_EXPERIMENTAL_FILESYSTEM 1 + #endif + + // std::filesystem does not work on MinGW GCC 8: https://sourceforge.net/p/mingw-w64/bugs/737/ + #if defined(__MINGW32__) && defined(__GNUC__) && __GNUC__ == 8 + #undef JSON_HAS_FILESYSTEM + #undef JSON_HAS_EXPERIMENTAL_FILESYSTEM + #endif + + // no filesystem support before GCC 8: https://en.cppreference.com/w/cpp/compiler_support + #if defined(__GNUC__) && !defined(__clang__) && __GNUC__ < 8 + #undef JSON_HAS_FILESYSTEM + #undef JSON_HAS_EXPERIMENTAL_FILESYSTEM + #endif + + // no filesystem support before Clang 7: https://en.cppreference.com/w/cpp/compiler_support + #if defined(__clang_major__) && __clang_major__ < 7 + #undef JSON_HAS_FILESYSTEM + #undef JSON_HAS_EXPERIMENTAL_FILESYSTEM + #endif + + // no filesystem support before MSVC 19.14: https://en.cppreference.com/w/cpp/compiler_support + #if defined(_MSC_VER) && _MSC_VER < 1914 + #undef JSON_HAS_FILESYSTEM + #undef JSON_HAS_EXPERIMENTAL_FILESYSTEM + #endif + + // no filesystem support before iOS 13 + #if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && __IPHONE_OS_VERSION_MIN_REQUIRED < 130000 + #undef JSON_HAS_FILESYSTEM + #undef JSON_HAS_EXPERIMENTAL_FILESYSTEM + #endif + + // no filesystem support before macOS Catalina + #if defined(__MAC_OS_X_VERSION_MIN_REQUIRED) && __MAC_OS_X_VERSION_MIN_REQUIRED < 101500 + #undef JSON_HAS_FILESYSTEM + #undef JSON_HAS_EXPERIMENTAL_FILESYSTEM + #endif + #endif +#endif + +#ifndef JSON_HAS_EXPERIMENTAL_FILESYSTEM + #define JSON_HAS_EXPERIMENTAL_FILESYSTEM 0 +#endif + +#ifndef JSON_HAS_FILESYSTEM + #define JSON_HAS_FILESYSTEM 0 +#endif + +#ifndef JSON_HAS_THREE_WAY_COMPARISON + #if defined(__cpp_impl_three_way_comparison) && __cpp_impl_three_way_comparison >= 201907L \ + && defined(__cpp_lib_three_way_comparison) && __cpp_lib_three_way_comparison >= 201907L + #define JSON_HAS_THREE_WAY_COMPARISON 1 + #else + #define JSON_HAS_THREE_WAY_COMPARISON 0 + #endif +#endif + +#ifndef JSON_HAS_RANGES + // ranges header shipping in GCC 11.1.0 (released 2021-04-27) has syntax error + #if defined(__GLIBCXX__) && __GLIBCXX__ == 20210427 + #define JSON_HAS_RANGES 0 + #elif defined(__cpp_lib_ranges) + #define JSON_HAS_RANGES 1 + #else + #define JSON_HAS_RANGES 0 + #endif +#endif + +#ifndef JSON_HAS_STATIC_RTTI + #if !defined(_HAS_STATIC_RTTI) || _HAS_STATIC_RTTI != 0 + #define JSON_HAS_STATIC_RTTI 1 + #else + #define JSON_HAS_STATIC_RTTI 0 + #endif +#endif + +#ifdef JSON_HAS_CPP_17 + #define JSON_INLINE_VARIABLE inline +#else + #define JSON_INLINE_VARIABLE +#endif + +#if JSON_HEDLEY_HAS_ATTRIBUTE(no_unique_address) + #define JSON_NO_UNIQUE_ADDRESS [[no_unique_address]] +#else + #define JSON_NO_UNIQUE_ADDRESS +#endif + +// disable documentation warnings on clang +#if defined(__clang__) + #pragma clang diagnostic push + #pragma clang diagnostic ignored "-Wdocumentation" + #pragma clang diagnostic ignored "-Wdocumentation-unknown-command" +#endif + +// allow disabling exceptions +#if (defined(__cpp_exceptions) || defined(__EXCEPTIONS) || defined(_CPPUNWIND)) && !defined(JSON_NOEXCEPTION) + #define JSON_THROW(exception) throw exception + #define JSON_TRY try + #define JSON_CATCH(exception) catch(exception) + #define JSON_INTERNAL_CATCH(exception) catch(exception) +#else + #include + #define JSON_THROW(exception) std::abort() + #define JSON_TRY if(true) + #define JSON_CATCH(exception) if(false) + #define JSON_INTERNAL_CATCH(exception) if(false) +#endif + +// override exception macros +#if defined(JSON_THROW_USER) + #undef JSON_THROW + #define JSON_THROW JSON_THROW_USER +#endif +#if defined(JSON_TRY_USER) + #undef JSON_TRY + #define JSON_TRY JSON_TRY_USER +#endif +#if defined(JSON_CATCH_USER) + #undef JSON_CATCH + #define JSON_CATCH JSON_CATCH_USER + #undef JSON_INTERNAL_CATCH + #define JSON_INTERNAL_CATCH JSON_CATCH_USER +#endif +#if defined(JSON_INTERNAL_CATCH_USER) + #undef JSON_INTERNAL_CATCH + #define JSON_INTERNAL_CATCH JSON_INTERNAL_CATCH_USER +#endif + +// allow overriding assert +#if !defined(JSON_ASSERT) + #include // assert + #define JSON_ASSERT(x) assert(x) +#endif + +// allow to access some private functions (needed by the test suite) +#if defined(JSON_TESTS_PRIVATE) + #define JSON_PRIVATE_UNLESS_TESTED public +#else + #define JSON_PRIVATE_UNLESS_TESTED private +#endif + +/*! +@brief macro to briefly define a mapping between an enum and JSON +@def NLOHMANN_JSON_SERIALIZE_ENUM +@since version 3.4.0 +*/ +#define NLOHMANN_JSON_SERIALIZE_ENUM(ENUM_TYPE, ...) \ + template \ + inline void to_json(BasicJsonType& j, const ENUM_TYPE& e) \ + { \ + static_assert(std::is_enum::value, #ENUM_TYPE " must be an enum!"); \ + static const std::pair m[] = __VA_ARGS__; \ + auto it = std::find_if(std::begin(m), std::end(m), \ + [e](const std::pair& ej_pair) -> bool \ + { \ + return ej_pair.first == e; \ + }); \ + j = ((it != std::end(m)) ? it : std::begin(m))->second; \ + } \ + template \ + inline void from_json(const BasicJsonType& j, ENUM_TYPE& e) \ + { \ + static_assert(std::is_enum::value, #ENUM_TYPE " must be an enum!"); \ + static const std::pair m[] = __VA_ARGS__; \ + auto it = std::find_if(std::begin(m), std::end(m), \ + [&j](const std::pair& ej_pair) -> bool \ + { \ + return ej_pair.second == j; \ + }); \ + e = ((it != std::end(m)) ? it : std::begin(m))->first; \ + } + +// Ugly macros to avoid uglier copy-paste when specializing basic_json. They +// may be removed in the future once the class is split. + +#define NLOHMANN_BASIC_JSON_TPL_DECLARATION \ + template class ObjectType, \ + template class ArrayType, \ + class StringType, class BooleanType, class NumberIntegerType, \ + class NumberUnsignedType, class NumberFloatType, \ + template class AllocatorType, \ + template class JSONSerializer, \ + class BinaryType, \ + class CustomBaseClass> + +#define NLOHMANN_BASIC_JSON_TPL \ + basic_json + +// Macros to simplify conversion from/to types + +#define NLOHMANN_JSON_EXPAND( x ) x +#define NLOHMANN_JSON_GET_MACRO(_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, NAME,...) NAME +#define NLOHMANN_JSON_PASTE(...) NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_GET_MACRO(__VA_ARGS__, \ + NLOHMANN_JSON_PASTE64, \ + NLOHMANN_JSON_PASTE63, \ + NLOHMANN_JSON_PASTE62, \ + NLOHMANN_JSON_PASTE61, \ + NLOHMANN_JSON_PASTE60, \ + NLOHMANN_JSON_PASTE59, \ + NLOHMANN_JSON_PASTE58, \ + NLOHMANN_JSON_PASTE57, \ + NLOHMANN_JSON_PASTE56, \ + NLOHMANN_JSON_PASTE55, \ + NLOHMANN_JSON_PASTE54, \ + NLOHMANN_JSON_PASTE53, \ + NLOHMANN_JSON_PASTE52, \ + NLOHMANN_JSON_PASTE51, \ + NLOHMANN_JSON_PASTE50, \ + NLOHMANN_JSON_PASTE49, \ + NLOHMANN_JSON_PASTE48, \ + NLOHMANN_JSON_PASTE47, \ + NLOHMANN_JSON_PASTE46, \ + NLOHMANN_JSON_PASTE45, \ + NLOHMANN_JSON_PASTE44, \ + NLOHMANN_JSON_PASTE43, \ + NLOHMANN_JSON_PASTE42, \ + NLOHMANN_JSON_PASTE41, \ + NLOHMANN_JSON_PASTE40, \ + NLOHMANN_JSON_PASTE39, \ + NLOHMANN_JSON_PASTE38, \ + NLOHMANN_JSON_PASTE37, \ + NLOHMANN_JSON_PASTE36, \ + NLOHMANN_JSON_PASTE35, \ + NLOHMANN_JSON_PASTE34, \ + NLOHMANN_JSON_PASTE33, \ + NLOHMANN_JSON_PASTE32, \ + NLOHMANN_JSON_PASTE31, \ + NLOHMANN_JSON_PASTE30, \ + NLOHMANN_JSON_PASTE29, \ + NLOHMANN_JSON_PASTE28, \ + NLOHMANN_JSON_PASTE27, \ + NLOHMANN_JSON_PASTE26, \ + NLOHMANN_JSON_PASTE25, \ + NLOHMANN_JSON_PASTE24, \ + NLOHMANN_JSON_PASTE23, \ + NLOHMANN_JSON_PASTE22, \ + NLOHMANN_JSON_PASTE21, \ + NLOHMANN_JSON_PASTE20, \ + NLOHMANN_JSON_PASTE19, \ + NLOHMANN_JSON_PASTE18, \ + NLOHMANN_JSON_PASTE17, \ + NLOHMANN_JSON_PASTE16, \ + NLOHMANN_JSON_PASTE15, \ + NLOHMANN_JSON_PASTE14, \ + NLOHMANN_JSON_PASTE13, \ + NLOHMANN_JSON_PASTE12, \ + NLOHMANN_JSON_PASTE11, \ + NLOHMANN_JSON_PASTE10, \ + NLOHMANN_JSON_PASTE9, \ + NLOHMANN_JSON_PASTE8, \ + NLOHMANN_JSON_PASTE7, \ + NLOHMANN_JSON_PASTE6, \ + NLOHMANN_JSON_PASTE5, \ + NLOHMANN_JSON_PASTE4, \ + NLOHMANN_JSON_PASTE3, \ + NLOHMANN_JSON_PASTE2, \ + NLOHMANN_JSON_PASTE1)(__VA_ARGS__)) +#define NLOHMANN_JSON_PASTE2(func, v1) func(v1) +#define NLOHMANN_JSON_PASTE3(func, v1, v2) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE2(func, v2) +#define NLOHMANN_JSON_PASTE4(func, v1, v2, v3) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE3(func, v2, v3) +#define NLOHMANN_JSON_PASTE5(func, v1, v2, v3, v4) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE4(func, v2, v3, v4) +#define NLOHMANN_JSON_PASTE6(func, v1, v2, v3, v4, v5) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE5(func, v2, v3, v4, v5) +#define NLOHMANN_JSON_PASTE7(func, v1, v2, v3, v4, v5, v6) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE6(func, v2, v3, v4, v5, v6) +#define NLOHMANN_JSON_PASTE8(func, v1, v2, v3, v4, v5, v6, v7) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE7(func, v2, v3, v4, v5, v6, v7) +#define NLOHMANN_JSON_PASTE9(func, v1, v2, v3, v4, v5, v6, v7, v8) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE8(func, v2, v3, v4, v5, v6, v7, v8) +#define NLOHMANN_JSON_PASTE10(func, v1, v2, v3, v4, v5, v6, v7, v8, v9) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE9(func, v2, v3, v4, v5, v6, v7, v8, v9) +#define NLOHMANN_JSON_PASTE11(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE10(func, v2, v3, v4, v5, v6, v7, v8, v9, v10) +#define NLOHMANN_JSON_PASTE12(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE11(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11) +#define NLOHMANN_JSON_PASTE13(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE12(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12) +#define NLOHMANN_JSON_PASTE14(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE13(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13) +#define NLOHMANN_JSON_PASTE15(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE14(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14) +#define NLOHMANN_JSON_PASTE16(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE15(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15) +#define NLOHMANN_JSON_PASTE17(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE16(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16) +#define NLOHMANN_JSON_PASTE18(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE17(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17) +#define NLOHMANN_JSON_PASTE19(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE18(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18) +#define NLOHMANN_JSON_PASTE20(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE19(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19) +#define NLOHMANN_JSON_PASTE21(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE20(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20) +#define NLOHMANN_JSON_PASTE22(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE21(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21) +#define NLOHMANN_JSON_PASTE23(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE22(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22) +#define NLOHMANN_JSON_PASTE24(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE23(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23) +#define NLOHMANN_JSON_PASTE25(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE24(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24) +#define NLOHMANN_JSON_PASTE26(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE25(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25) +#define NLOHMANN_JSON_PASTE27(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE26(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26) +#define NLOHMANN_JSON_PASTE28(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE27(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27) +#define NLOHMANN_JSON_PASTE29(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE28(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28) +#define NLOHMANN_JSON_PASTE30(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE29(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29) +#define NLOHMANN_JSON_PASTE31(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE30(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30) +#define NLOHMANN_JSON_PASTE32(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE31(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31) +#define NLOHMANN_JSON_PASTE33(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE32(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32) +#define NLOHMANN_JSON_PASTE34(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE33(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33) +#define NLOHMANN_JSON_PASTE35(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE34(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34) +#define NLOHMANN_JSON_PASTE36(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE35(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35) +#define NLOHMANN_JSON_PASTE37(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE36(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36) +#define NLOHMANN_JSON_PASTE38(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE37(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37) +#define NLOHMANN_JSON_PASTE39(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE38(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38) +#define NLOHMANN_JSON_PASTE40(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE39(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39) +#define NLOHMANN_JSON_PASTE41(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE40(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40) +#define NLOHMANN_JSON_PASTE42(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE41(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41) +#define NLOHMANN_JSON_PASTE43(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE42(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42) +#define NLOHMANN_JSON_PASTE44(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE43(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43) +#define NLOHMANN_JSON_PASTE45(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE44(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44) +#define NLOHMANN_JSON_PASTE46(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE45(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45) +#define NLOHMANN_JSON_PASTE47(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE46(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46) +#define NLOHMANN_JSON_PASTE48(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE47(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47) +#define NLOHMANN_JSON_PASTE49(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE48(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48) +#define NLOHMANN_JSON_PASTE50(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE49(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49) +#define NLOHMANN_JSON_PASTE51(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE50(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50) +#define NLOHMANN_JSON_PASTE52(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE51(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51) +#define NLOHMANN_JSON_PASTE53(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE52(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52) +#define NLOHMANN_JSON_PASTE54(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE53(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53) +#define NLOHMANN_JSON_PASTE55(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE54(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54) +#define NLOHMANN_JSON_PASTE56(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE55(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55) +#define NLOHMANN_JSON_PASTE57(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE56(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56) +#define NLOHMANN_JSON_PASTE58(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE57(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57) +#define NLOHMANN_JSON_PASTE59(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE58(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58) +#define NLOHMANN_JSON_PASTE60(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE59(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59) +#define NLOHMANN_JSON_PASTE61(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE60(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60) +#define NLOHMANN_JSON_PASTE62(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE61(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61) +#define NLOHMANN_JSON_PASTE63(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61, v62) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE62(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61, v62) +#define NLOHMANN_JSON_PASTE64(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61, v62, v63) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE63(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61, v62, v63) + +#define NLOHMANN_JSON_TO(v1) nlohmann_json_j[#v1] = nlohmann_json_t.v1; +#define NLOHMANN_JSON_FROM(v1) nlohmann_json_j.at(#v1).get_to(nlohmann_json_t.v1); +#define NLOHMANN_JSON_FROM_WITH_DEFAULT(v1) nlohmann_json_t.v1 = nlohmann_json_j.value(#v1, nlohmann_json_default_obj.v1); + +/*! +@brief macro +@def NLOHMANN_DEFINE_TYPE_INTRUSIVE +@since version 3.9.0 +*/ +#define NLOHMANN_DEFINE_TYPE_INTRUSIVE(Type, ...) \ + friend void to_json(nlohmann::json& nlohmann_json_j, const Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) } \ + friend void from_json(const nlohmann::json& nlohmann_json_j, Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_FROM, __VA_ARGS__)) } + +#define NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT(Type, ...) \ + friend void to_json(nlohmann::json& nlohmann_json_j, const Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) } \ + friend void from_json(const nlohmann::json& nlohmann_json_j, Type& nlohmann_json_t) { const Type nlohmann_json_default_obj{}; NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_FROM_WITH_DEFAULT, __VA_ARGS__)) } + +#define NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE(Type, ...) \ + friend void to_json(nlohmann::json& nlohmann_json_j, const Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) } + +/*! +@brief macro +@def NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE +@since version 3.9.0 +*/ +#define NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE(Type, ...) \ + inline void to_json(nlohmann::json& nlohmann_json_j, const Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) } \ + inline void from_json(const nlohmann::json& nlohmann_json_j, Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_FROM, __VA_ARGS__)) } + +#define NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE(Type, ...) \ + inline void to_json(nlohmann::json& nlohmann_json_j, const Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) } + +#define NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT(Type, ...) \ + inline void to_json(nlohmann::json& nlohmann_json_j, const Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) } \ + inline void from_json(const nlohmann::json& nlohmann_json_j, Type& nlohmann_json_t) { const Type nlohmann_json_default_obj{}; NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_FROM_WITH_DEFAULT, __VA_ARGS__)) } + +// inspired from https://stackoverflow.com/a/26745591 +// allows to call any std function as if (e.g. with begin): +// using std::begin; begin(x); +// +// it allows using the detected idiom to retrieve the return type +// of such an expression +#define NLOHMANN_CAN_CALL_STD_FUNC_IMPL(std_name) \ + namespace detail { \ + using std::std_name; \ + \ + template \ + using result_of_##std_name = decltype(std_name(std::declval()...)); \ + } \ + \ + namespace detail2 { \ + struct std_name##_tag \ + { \ + }; \ + \ + template \ + std_name##_tag std_name(T&&...); \ + \ + template \ + using result_of_##std_name = decltype(std_name(std::declval()...)); \ + \ + template \ + struct would_call_std_##std_name \ + { \ + static constexpr auto const value = ::nlohmann::detail:: \ + is_detected_exact::value; \ + }; \ + } /* namespace detail2 */ \ + \ + template \ + struct would_call_std_##std_name : detail2::would_call_std_##std_name \ + { \ + } + +#ifndef JSON_USE_IMPLICIT_CONVERSIONS + #define JSON_USE_IMPLICIT_CONVERSIONS 1 +#endif + +#if JSON_USE_IMPLICIT_CONVERSIONS + #define JSON_EXPLICIT +#else + #define JSON_EXPLICIT explicit +#endif + +#ifndef JSON_DISABLE_ENUM_SERIALIZATION + #define JSON_DISABLE_ENUM_SERIALIZATION 0 +#endif + +#ifndef JSON_USE_GLOBAL_UDLS + #define JSON_USE_GLOBAL_UDLS 1 +#endif + +#if JSON_HAS_THREE_WAY_COMPARISON + #include // partial_ordering +#endif + +NLOHMANN_JSON_NAMESPACE_BEGIN +namespace detail +{ + +/////////////////////////// +// JSON type enumeration // +/////////////////////////// + +/*! +@brief the JSON type enumeration + +This enumeration collects the different JSON types. It is internally used to +distinguish the stored values, and the functions @ref basic_json::is_null(), +@ref basic_json::is_object(), @ref basic_json::is_array(), +@ref basic_json::is_string(), @ref basic_json::is_boolean(), +@ref basic_json::is_number() (with @ref basic_json::is_number_integer(), +@ref basic_json::is_number_unsigned(), and @ref basic_json::is_number_float()), +@ref basic_json::is_discarded(), @ref basic_json::is_primitive(), and +@ref basic_json::is_structured() rely on it. + +@note There are three enumeration entries (number_integer, number_unsigned, and +number_float), because the library distinguishes these three types for numbers: +@ref basic_json::number_unsigned_t is used for unsigned integers, +@ref basic_json::number_integer_t is used for signed integers, and +@ref basic_json::number_float_t is used for floating-point numbers or to +approximate integers which do not fit in the limits of their respective type. + +@sa see @ref basic_json::basic_json(const value_t value_type) -- create a JSON +value with the default value for a given type + +@since version 1.0.0 +*/ +enum class value_t : std::uint8_t +{ + null, ///< null value + object, ///< object (unordered set of name/value pairs) + array, ///< array (ordered collection of values) + string, ///< string value + boolean, ///< boolean value + number_integer, ///< number value (signed integer) + number_unsigned, ///< number value (unsigned integer) + number_float, ///< number value (floating-point) + binary, ///< binary array (ordered collection of bytes) + discarded ///< discarded by the parser callback function +}; + +/*! +@brief comparison operator for JSON types + +Returns an ordering that is similar to Python: +- order: null < boolean < number < object < array < string < binary +- furthermore, each type is not smaller than itself +- discarded values are not comparable +- binary is represented as a b"" string in python and directly comparable to a + string; however, making a binary array directly comparable with a string would + be surprising behavior in a JSON file. + +@since version 1.0.0 +*/ +#if JSON_HAS_THREE_WAY_COMPARISON + inline std::partial_ordering operator<=>(const value_t lhs, const value_t rhs) noexcept // *NOPAD* +#else + inline bool operator<(const value_t lhs, const value_t rhs) noexcept +#endif +{ + static constexpr std::array order = {{ + 0 /* null */, 3 /* object */, 4 /* array */, 5 /* string */, + 1 /* boolean */, 2 /* integer */, 2 /* unsigned */, 2 /* float */, + 6 /* binary */ + } + }; + + const auto l_index = static_cast(lhs); + const auto r_index = static_cast(rhs); +#if JSON_HAS_THREE_WAY_COMPARISON + if (l_index < order.size() && r_index < order.size()) + { + return order[l_index] <=> order[r_index]; // *NOPAD* + } + return std::partial_ordering::unordered; +#else + return l_index < order.size() && r_index < order.size() && order[l_index] < order[r_index]; +#endif +} + +// GCC selects the built-in operator< over an operator rewritten from +// a user-defined spaceship operator +// Clang, MSVC, and ICC select the rewritten candidate +// (see GCC bug https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105200) +#if JSON_HAS_THREE_WAY_COMPARISON && defined(__GNUC__) +inline bool operator<(const value_t lhs, const value_t rhs) noexcept +{ + return std::is_lt(lhs <=> rhs); // *NOPAD* +} +#endif + +} // namespace detail +NLOHMANN_JSON_NAMESPACE_END + +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.3 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2023 Niels Lohmann +// SPDX-License-Identifier: MIT + + + +// #include + + +NLOHMANN_JSON_NAMESPACE_BEGIN +namespace detail +{ + +/*! +@brief replace all occurrences of a substring by another string + +@param[in,out] s the string to manipulate; changed so that all + occurrences of @a f are replaced with @a t +@param[in] f the substring to replace with @a t +@param[in] t the string to replace @a f + +@pre The search string @a f must not be empty. **This precondition is +enforced with an assertion.** + +@since version 2.0.0 +*/ +template +inline void replace_substring(StringType& s, const StringType& f, + const StringType& t) +{ + JSON_ASSERT(!f.empty()); + for (auto pos = s.find(f); // find first occurrence of f + pos != StringType::npos; // make sure f was found + s.replace(pos, f.size(), t), // replace with t, and + pos = s.find(f, pos + t.size())) // find next occurrence of f + {} +} + +/*! + * @brief string escaping as described in RFC 6901 (Sect. 4) + * @param[in] s string to escape + * @return escaped string + * + * Note the order of escaping "~" to "~0" and "/" to "~1" is important. + */ +template +inline StringType escape(StringType s) +{ + replace_substring(s, StringType{"~"}, StringType{"~0"}); + replace_substring(s, StringType{"/"}, StringType{"~1"}); + return s; +} + +/*! + * @brief string unescaping as described in RFC 6901 (Sect. 4) + * @param[in] s string to unescape + * @return unescaped string + * + * Note the order of escaping "~1" to "/" and "~0" to "~" is important. + */ +template +static void unescape(StringType& s) +{ + replace_substring(s, StringType{"~1"}, StringType{"/"}); + replace_substring(s, StringType{"~0"}, StringType{"~"}); +} + +} // namespace detail +NLOHMANN_JSON_NAMESPACE_END + +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.3 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2023 Niels Lohmann +// SPDX-License-Identifier: MIT + + + +#include // size_t + +// #include + + +NLOHMANN_JSON_NAMESPACE_BEGIN +namespace detail +{ + +/// struct to capture the start position of the current token +struct position_t +{ + /// the total number of characters read + std::size_t chars_read_total = 0; + /// the number of characters read in the current line + std::size_t chars_read_current_line = 0; + /// the number of lines read + std::size_t lines_read = 0; + + /// conversion to size_t to preserve SAX interface + constexpr operator size_t() const + { + return chars_read_total; + } +}; + +} // namespace detail +NLOHMANN_JSON_NAMESPACE_END + +// #include + +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.3 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2023 Niels Lohmann +// SPDX-FileCopyrightText: 2018 The Abseil Authors +// SPDX-License-Identifier: MIT + + + +#include // array +#include // size_t +#include // conditional, enable_if, false_type, integral_constant, is_constructible, is_integral, is_same, remove_cv, remove_reference, true_type +#include // index_sequence, make_index_sequence, index_sequence_for + +// #include + + +NLOHMANN_JSON_NAMESPACE_BEGIN +namespace detail +{ + +template +using uncvref_t = typename std::remove_cv::type>::type; + +#ifdef JSON_HAS_CPP_14 + +// the following utilities are natively available in C++14 +using std::enable_if_t; +using std::index_sequence; +using std::make_index_sequence; +using std::index_sequence_for; + +#else + +// alias templates to reduce boilerplate +template +using enable_if_t = typename std::enable_if::type; + +// The following code is taken from https://github.com/abseil/abseil-cpp/blob/10cb35e459f5ecca5b2ff107635da0bfa41011b4/absl/utility/utility.h +// which is part of Google Abseil (https://github.com/abseil/abseil-cpp), licensed under the Apache License 2.0. + +//// START OF CODE FROM GOOGLE ABSEIL + +// integer_sequence +// +// Class template representing a compile-time integer sequence. An instantiation +// of `integer_sequence` has a sequence of integers encoded in its +// type through its template arguments (which is a common need when +// working with C++11 variadic templates). `absl::integer_sequence` is designed +// to be a drop-in replacement for C++14's `std::integer_sequence`. +// +// Example: +// +// template< class T, T... Ints > +// void user_function(integer_sequence); +// +// int main() +// { +// // user_function's `T` will be deduced to `int` and `Ints...` +// // will be deduced to `0, 1, 2, 3, 4`. +// user_function(make_integer_sequence()); +// } +template +struct integer_sequence +{ + using value_type = T; + static constexpr std::size_t size() noexcept + { + return sizeof...(Ints); + } +}; + +// index_sequence +// +// A helper template for an `integer_sequence` of `size_t`, +// `absl::index_sequence` is designed to be a drop-in replacement for C++14's +// `std::index_sequence`. +template +using index_sequence = integer_sequence; + +namespace utility_internal +{ + +template +struct Extend; + +// Note that SeqSize == sizeof...(Ints). It's passed explicitly for efficiency. +template +struct Extend, SeqSize, 0> +{ + using type = integer_sequence < T, Ints..., (Ints + SeqSize)... >; +}; + +template +struct Extend, SeqSize, 1> +{ + using type = integer_sequence < T, Ints..., (Ints + SeqSize)..., 2 * SeqSize >; +}; + +// Recursion helper for 'make_integer_sequence'. +// 'Gen::type' is an alias for 'integer_sequence'. +template +struct Gen +{ + using type = + typename Extend < typename Gen < T, N / 2 >::type, N / 2, N % 2 >::type; +}; + +template +struct Gen +{ + using type = integer_sequence; +}; + +} // namespace utility_internal + +// Compile-time sequences of integers + +// make_integer_sequence +// +// This template alias is equivalent to +// `integer_sequence`, and is designed to be a drop-in +// replacement for C++14's `std::make_integer_sequence`. +template +using make_integer_sequence = typename utility_internal::Gen::type; + +// make_index_sequence +// +// This template alias is equivalent to `index_sequence<0, 1, ..., N-1>`, +// and is designed to be a drop-in replacement for C++14's +// `std::make_index_sequence`. +template +using make_index_sequence = make_integer_sequence; + +// index_sequence_for +// +// Converts a typename pack into an index sequence of the same length, and +// is designed to be a drop-in replacement for C++14's +// `std::index_sequence_for()` +template +using index_sequence_for = make_index_sequence; + +//// END OF CODE FROM GOOGLE ABSEIL + +#endif + +// dispatch utility (taken from ranges-v3) +template struct priority_tag : priority_tag < N - 1 > {}; +template<> struct priority_tag<0> {}; + +// taken from ranges-v3 +template +struct static_const +{ + static JSON_INLINE_VARIABLE constexpr T value{}; +}; + +#ifndef JSON_HAS_CPP_17 + template + constexpr T static_const::value; +#endif + +template +inline constexpr std::array make_array(Args&& ... args) +{ + return std::array {{static_cast(std::forward(args))...}}; +} + +} // namespace detail +NLOHMANN_JSON_NAMESPACE_END + +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.3 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2023 Niels Lohmann +// SPDX-License-Identifier: MIT + + + +#include // numeric_limits +#include // false_type, is_constructible, is_integral, is_same, true_type +#include // declval +#include // tuple +#include // char_traits + +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.3 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2023 Niels Lohmann +// SPDX-License-Identifier: MIT + + + +#include // random_access_iterator_tag + +// #include + +// #include + +// #include + + +NLOHMANN_JSON_NAMESPACE_BEGIN +namespace detail +{ + +template +struct iterator_types {}; + +template +struct iterator_types < + It, + void_t> +{ + using difference_type = typename It::difference_type; + using value_type = typename It::value_type; + using pointer = typename It::pointer; + using reference = typename It::reference; + using iterator_category = typename It::iterator_category; +}; + +// This is required as some compilers implement std::iterator_traits in a way that +// doesn't work with SFINAE. See https://github.com/nlohmann/json/issues/1341. +template +struct iterator_traits +{ +}; + +template +struct iterator_traits < T, enable_if_t < !std::is_pointer::value >> + : iterator_types +{ +}; + +template +struct iterator_traits::value>> +{ + using iterator_category = std::random_access_iterator_tag; + using value_type = T; + using difference_type = ptrdiff_t; + using pointer = T*; + using reference = T&; +}; + +} // namespace detail +NLOHMANN_JSON_NAMESPACE_END + +// #include + +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.3 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2023 Niels Lohmann +// SPDX-License-Identifier: MIT + + + +// #include + + +NLOHMANN_JSON_NAMESPACE_BEGIN + +NLOHMANN_CAN_CALL_STD_FUNC_IMPL(begin); + +NLOHMANN_JSON_NAMESPACE_END + +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.3 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2023 Niels Lohmann +// SPDX-License-Identifier: MIT + + + +// #include + + +NLOHMANN_JSON_NAMESPACE_BEGIN + +NLOHMANN_CAN_CALL_STD_FUNC_IMPL(end); + +NLOHMANN_JSON_NAMESPACE_END + +// #include + +// #include + +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.3 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2023 Niels Lohmann +// SPDX-License-Identifier: MIT + +#ifndef INCLUDE_NLOHMANN_JSON_FWD_HPP_ + #define INCLUDE_NLOHMANN_JSON_FWD_HPP_ + + #include // int64_t, uint64_t + #include // map + #include // allocator + #include // string + #include // vector + + // #include + + + /*! + @brief namespace for Niels Lohmann + @see https://github.com/nlohmann + @since version 1.0.0 + */ + NLOHMANN_JSON_NAMESPACE_BEGIN + + /*! + @brief default JSONSerializer template argument + + This serializer ignores the template arguments and uses ADL + ([argument-dependent lookup](https://en.cppreference.com/w/cpp/language/adl)) + for serialization. + */ + template + struct adl_serializer; + + /// a class to store JSON values + /// @sa https://json.nlohmann.me/api/basic_json/ + template class ObjectType = + std::map, + template class ArrayType = std::vector, + class StringType = std::string, class BooleanType = bool, + class NumberIntegerType = std::int64_t, + class NumberUnsignedType = std::uint64_t, + class NumberFloatType = double, + template class AllocatorType = std::allocator, + template class JSONSerializer = + adl_serializer, + class BinaryType = std::vector, // cppcheck-suppress syntaxError + class CustomBaseClass = void> + class basic_json; + + /// @brief JSON Pointer defines a string syntax for identifying a specific value within a JSON document + /// @sa https://json.nlohmann.me/api/json_pointer/ + template + class json_pointer; + + /*! + @brief default specialization + @sa https://json.nlohmann.me/api/json/ + */ + using json = basic_json<>; + + /// @brief a minimal map-like container that preserves insertion order + /// @sa https://json.nlohmann.me/api/ordered_map/ + template + struct ordered_map; + + /// @brief specialization that maintains the insertion order of object keys + /// @sa https://json.nlohmann.me/api/ordered_json/ + using ordered_json = basic_json; + + NLOHMANN_JSON_NAMESPACE_END + +#endif // INCLUDE_NLOHMANN_JSON_FWD_HPP_ + + +NLOHMANN_JSON_NAMESPACE_BEGIN +/*! +@brief detail namespace with internal helper functions + +This namespace collects functions that should not be exposed, +implementations of some @ref basic_json methods, and meta-programming helpers. + +@since version 2.1.0 +*/ +namespace detail +{ + +///////////// +// helpers // +///////////// + +// Note to maintainers: +// +// Every trait in this file expects a non CV-qualified type. +// The only exceptions are in the 'aliases for detected' section +// (i.e. those of the form: decltype(T::member_function(std::declval()))) +// +// In this case, T has to be properly CV-qualified to constraint the function arguments +// (e.g. to_json(BasicJsonType&, const T&)) + +template struct is_basic_json : std::false_type {}; + +NLOHMANN_BASIC_JSON_TPL_DECLARATION +struct is_basic_json : std::true_type {}; + +// used by exceptions create() member functions +// true_type for pointer to possibly cv-qualified basic_json or std::nullptr_t +// false_type otherwise +template +struct is_basic_json_context : + std::integral_constant < bool, + is_basic_json::type>::type>::value + || std::is_same::value > +{}; + +////////////////////// +// json_ref helpers // +////////////////////// + +template +class json_ref; + +template +struct is_json_ref : std::false_type {}; + +template +struct is_json_ref> : std::true_type {}; + +////////////////////////// +// aliases for detected // +////////////////////////// + +template +using mapped_type_t = typename T::mapped_type; + +template +using key_type_t = typename T::key_type; + +template +using value_type_t = typename T::value_type; + +template +using difference_type_t = typename T::difference_type; + +template +using pointer_t = typename T::pointer; + +template +using reference_t = typename T::reference; + +template +using iterator_category_t = typename T::iterator_category; + +template +using to_json_function = decltype(T::to_json(std::declval()...)); + +template +using from_json_function = decltype(T::from_json(std::declval()...)); + +template +using get_template_function = decltype(std::declval().template get()); + +// trait checking if JSONSerializer::from_json(json const&, udt&) exists +template +struct has_from_json : std::false_type {}; + +// trait checking if j.get is valid +// use this trait instead of std::is_constructible or std::is_convertible, +// both rely on, or make use of implicit conversions, and thus fail when T +// has several constructors/operator= (see https://github.com/nlohmann/json/issues/958) +template +struct is_getable +{ + static constexpr bool value = is_detected::value; +}; + +template +struct has_from_json < BasicJsonType, T, enable_if_t < !is_basic_json::value >> +{ + using serializer = typename BasicJsonType::template json_serializer; + + static constexpr bool value = + is_detected_exact::value; +}; + +// This trait checks if JSONSerializer::from_json(json const&) exists +// this overload is used for non-default-constructible user-defined-types +template +struct has_non_default_from_json : std::false_type {}; + +template +struct has_non_default_from_json < BasicJsonType, T, enable_if_t < !is_basic_json::value >> +{ + using serializer = typename BasicJsonType::template json_serializer; + + static constexpr bool value = + is_detected_exact::value; +}; + +// This trait checks if BasicJsonType::json_serializer::to_json exists +// Do not evaluate the trait when T is a basic_json type, to avoid template instantiation infinite recursion. +template +struct has_to_json : std::false_type {}; + +template +struct has_to_json < BasicJsonType, T, enable_if_t < !is_basic_json::value >> +{ + using serializer = typename BasicJsonType::template json_serializer; + + static constexpr bool value = + is_detected_exact::value; +}; + +template +using detect_key_compare = typename T::key_compare; + +template +struct has_key_compare : std::integral_constant::value> {}; + +// obtains the actual object key comparator +template +struct actual_object_comparator +{ + using object_t = typename BasicJsonType::object_t; + using object_comparator_t = typename BasicJsonType::default_object_comparator_t; + using type = typename std::conditional < has_key_compare::value, + typename object_t::key_compare, object_comparator_t>::type; +}; + +template +using actual_object_comparator_t = typename actual_object_comparator::type; + +///////////////// +// char_traits // +///////////////// + +// Primary template of char_traits calls std char_traits +template +struct char_traits : std::char_traits +{}; + +// Explicitly define char traits for unsigned char since it is not standard +template<> +struct char_traits : std::char_traits +{ + using char_type = unsigned char; + using int_type = uint64_t; + + // Redefine to_int_type function + static int_type to_int_type(char_type c) noexcept + { + return static_cast(c); + } + + static char_type to_char_type(int_type i) noexcept + { + return static_cast(i); + } + + static constexpr int_type eof() noexcept + { + return static_cast(EOF); + } +}; + +// Explicitly define char traits for signed char since it is not standard +template<> +struct char_traits : std::char_traits +{ + using char_type = signed char; + using int_type = uint64_t; + + // Redefine to_int_type function + static int_type to_int_type(char_type c) noexcept + { + return static_cast(c); + } + + static char_type to_char_type(int_type i) noexcept + { + return static_cast(i); + } + + static constexpr int_type eof() noexcept + { + return static_cast(EOF); + } +}; + +/////////////////// +// is_ functions // +/////////////////// + +// https://en.cppreference.com/w/cpp/types/conjunction +template struct conjunction : std::true_type { }; +template struct conjunction : B { }; +template +struct conjunction +: std::conditional(B::value), conjunction, B>::type {}; + +// https://en.cppreference.com/w/cpp/types/negation +template struct negation : std::integral_constant < bool, !B::value > { }; + +// Reimplementation of is_constructible and is_default_constructible, due to them being broken for +// std::pair and std::tuple until LWG 2367 fix (see https://cplusplus.github.io/LWG/lwg-defects.html#2367). +// This causes compile errors in e.g. clang 3.5 or gcc 4.9. +template +struct is_default_constructible : std::is_default_constructible {}; + +template +struct is_default_constructible> + : conjunction, is_default_constructible> {}; + +template +struct is_default_constructible> + : conjunction, is_default_constructible> {}; + +template +struct is_default_constructible> + : conjunction...> {}; + +template +struct is_default_constructible> + : conjunction...> {}; + +template +struct is_constructible : std::is_constructible {}; + +template +struct is_constructible> : is_default_constructible> {}; + +template +struct is_constructible> : is_default_constructible> {}; + +template +struct is_constructible> : is_default_constructible> {}; + +template +struct is_constructible> : is_default_constructible> {}; + +template +struct is_iterator_traits : std::false_type {}; + +template +struct is_iterator_traits> +{ + private: + using traits = iterator_traits; + + public: + static constexpr auto value = + is_detected::value && + is_detected::value && + is_detected::value && + is_detected::value && + is_detected::value; +}; + +template +struct is_range +{ + private: + using t_ref = typename std::add_lvalue_reference::type; + + using iterator = detected_t; + using sentinel = detected_t; + + // to be 100% correct, it should use https://en.cppreference.com/w/cpp/iterator/input_or_output_iterator + // and https://en.cppreference.com/w/cpp/iterator/sentinel_for + // but reimplementing these would be too much work, as a lot of other concepts are used underneath + static constexpr auto is_iterator_begin = + is_iterator_traits>::value; + + public: + static constexpr bool value = !std::is_same::value && !std::is_same::value && is_iterator_begin; +}; + +template +using iterator_t = enable_if_t::value, result_of_begin())>>; + +template +using range_value_t = value_type_t>>; + +// The following implementation of is_complete_type is taken from +// https://blogs.msdn.microsoft.com/vcblog/2015/12/02/partial-support-for-expression-sfinae-in-vs-2015-update-1/ +// and is written by Xiang Fan who agreed to using it in this library. + +template +struct is_complete_type : std::false_type {}; + +template +struct is_complete_type : std::true_type {}; + +template +struct is_compatible_object_type_impl : std::false_type {}; + +template +struct is_compatible_object_type_impl < + BasicJsonType, CompatibleObjectType, + enable_if_t < is_detected::value&& + is_detected::value >> +{ + using object_t = typename BasicJsonType::object_t; + + // macOS's is_constructible does not play well with nonesuch... + static constexpr bool value = + is_constructible::value && + is_constructible::value; +}; + +template +struct is_compatible_object_type + : is_compatible_object_type_impl {}; + +template +struct is_constructible_object_type_impl : std::false_type {}; + +template +struct is_constructible_object_type_impl < + BasicJsonType, ConstructibleObjectType, + enable_if_t < is_detected::value&& + is_detected::value >> +{ + using object_t = typename BasicJsonType::object_t; + + static constexpr bool value = + (is_default_constructible::value && + (std::is_move_assignable::value || + std::is_copy_assignable::value) && + (is_constructible::value && + std::is_same < + typename object_t::mapped_type, + typename ConstructibleObjectType::mapped_type >::value)) || + (has_from_json::value || + has_non_default_from_json < + BasicJsonType, + typename ConstructibleObjectType::mapped_type >::value); +}; + +template +struct is_constructible_object_type + : is_constructible_object_type_impl {}; + +template +struct is_compatible_string_type +{ + static constexpr auto value = + is_constructible::value; +}; + +template +struct is_constructible_string_type +{ + // launder type through decltype() to fix compilation failure on ICPC +#ifdef __INTEL_COMPILER + using laundered_type = decltype(std::declval()); +#else + using laundered_type = ConstructibleStringType; +#endif + + static constexpr auto value = + conjunction < + is_constructible, + is_detected_exact>::value; +}; + +template +struct is_compatible_array_type_impl : std::false_type {}; + +template +struct is_compatible_array_type_impl < + BasicJsonType, CompatibleArrayType, + enable_if_t < + is_detected::value&& + is_iterator_traits>>::value&& +// special case for types like std::filesystem::path whose iterator's value_type are themselves +// c.f. https://github.com/nlohmann/json/pull/3073 + !std::is_same>::value >> +{ + static constexpr bool value = + is_constructible>::value; +}; + +template +struct is_compatible_array_type + : is_compatible_array_type_impl {}; + +template +struct is_constructible_array_type_impl : std::false_type {}; + +template +struct is_constructible_array_type_impl < + BasicJsonType, ConstructibleArrayType, + enable_if_t::value >> + : std::true_type {}; + +template +struct is_constructible_array_type_impl < + BasicJsonType, ConstructibleArrayType, + enable_if_t < !std::is_same::value&& + !is_compatible_string_type::value&& + is_default_constructible::value&& +(std::is_move_assignable::value || + std::is_copy_assignable::value)&& +is_detected::value&& +is_iterator_traits>>::value&& +is_detected::value&& +// special case for types like std::filesystem::path whose iterator's value_type are themselves +// c.f. https://github.com/nlohmann/json/pull/3073 +!std::is_same>::value&& + is_complete_type < + detected_t>::value >> +{ + using value_type = range_value_t; + + static constexpr bool value = + std::is_same::value || + has_from_json::value || + has_non_default_from_json < + BasicJsonType, + value_type >::value; +}; + +template +struct is_constructible_array_type + : is_constructible_array_type_impl {}; + +template +struct is_compatible_integer_type_impl : std::false_type {}; + +template +struct is_compatible_integer_type_impl < + RealIntegerType, CompatibleNumberIntegerType, + enable_if_t < std::is_integral::value&& + std::is_integral::value&& + !std::is_same::value >> +{ + // is there an assert somewhere on overflows? + using RealLimits = std::numeric_limits; + using CompatibleLimits = std::numeric_limits; + + static constexpr auto value = + is_constructible::value && + CompatibleLimits::is_integer && + RealLimits::is_signed == CompatibleLimits::is_signed; +}; + +template +struct is_compatible_integer_type + : is_compatible_integer_type_impl {}; + +template +struct is_compatible_type_impl: std::false_type {}; + +template +struct is_compatible_type_impl < + BasicJsonType, CompatibleType, + enable_if_t::value >> +{ + static constexpr bool value = + has_to_json::value; +}; + +template +struct is_compatible_type + : is_compatible_type_impl {}; + +template +struct is_constructible_tuple : std::false_type {}; + +template +struct is_constructible_tuple> : conjunction...> {}; + +template +struct is_json_iterator_of : std::false_type {}; + +template +struct is_json_iterator_of : std::true_type {}; + +template +struct is_json_iterator_of : std::true_type +{}; + +// checks if a given type T is a template specialization of Primary +template

cxO1|lNk>&7v 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 literal 0 HcmV?d00001 diff --git a/recipes-vrpmdv/recipes-base/vrpmdv-mon-datafile/LockingWaitQueues.pdf b/recipes-vrpmdv/recipes-base/vrpmdv-mon-datafile/LockingWaitQueues.pdf new file mode 100644 index 0000000000000000000000000000000000000000..6d16b4bb99684256fd08e562d2080ea8ff544a06 GIT binary patch literal 235748 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⋙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 V9LAQ05(JWWaQ{6A8dMB4xW literal 0 HcmV?d00001 diff --git a/recipes-vrpmdv/recipes-base/vrpmdv-mon-datafile/files/75-mon-datafile.rules b/recipes-vrpmdv/recipes-base/vrpmdv-mon-datafile/files/75-mon-datafile.rules new file mode 100644 index 0000000..75eed6e --- /dev/null +++ b/recipes-vrpmdv/recipes-base/vrpmdv-mon-datafile/files/75-mon-datafile.rules @@ -0,0 +1 @@ +SUBSYSTEM=="misc", KERNEL=="mon-datafile", GROUP="dialout", MODE="0666" diff --git a/recipes-vrpmdv/recipes-base/vrpmdv-mon-datafile/files/Makefile b/recipes-vrpmdv/recipes-base/vrpmdv-mon-datafile/files/Makefile new file mode 100644 index 0000000..60c3bf0 --- /dev/null +++ b/recipes-vrpmdv/recipes-base/vrpmdv-mon-datafile/files/Makefile @@ -0,0 +1,26 @@ +# Makefile for VRPMDV Monitoring Datafile +obj-m := vrpmdv-mon-datafile.o + + +SRC := $(shell pwd) + +all: + $(MAKE) -C $(KERNEL_SRC) M=$(SRC) + +modules_install: + $(MAKE) -C $(KERNEL_SRC) M=$(SRC) modules_install + +clean: + rm -f *.o *~ core .depend .*.cmd *.ko *.mod.c + rm -f Module.markers Module.symvers modules.order + rm -rf .tmp_versions Modules.symvers + +# obj-m = vrpmdv-monitoring-controler.o + +# KVERSION = $(shell uname -r) + +# all: +# make -C /lib/modules/$(KVERSION)/build M=$(PWD) modules + +# clean: +# make -C /lib/modules/$(KVERSION)/build M=$(PWD) clean diff --git a/recipes-vrpmdv/recipes-base/vrpmdv-mon-datafile/files/lock.csave b/recipes-vrpmdv/recipes-base/vrpmdv-mon-datafile/files/lock.csave new file mode 100644 index 0000000..0de60b3 --- /dev/null +++ b/recipes-vrpmdv/recipes-base/vrpmdv-mon-datafile/files/lock.csave @@ -0,0 +1,116 @@ +include +#include +#include +#include +#include + +std::mutex m; +std::condition_variable cv; +std::string data; +bool ready = false; +bool processed = false; + +void worker_thread() +{ + // wait until main() sends data + std::unique_lock lk(m); + cv.wait(lk, []{ return ready; }); + + // after the wait, we own the lock + std::cout << "Worker thread is processing data\n"; + data += " after processing"; + + // send data back to main() + processed = true; + std::cout << "Worker thread signals data processing completed\n"; + + // manual unlocking is done before notifying, to avoid waking up + // the waiting thread only to block again (see notify_one for details) + lk.unlock(); + cv.notify_one(); +} + +int main() +{ + std::thread worker(worker_thread); + + data = "Example data"; + // send data to the worker thread + { + std::lock_guard lk(m); + ready = true; + std::cout << "main() signals data ready for processing\n"; + } + cv.notify_one(); + + // wait for the worker + { + std::unique_lock lk(m); + cv.wait(lk, []{ return processed; }); + } + std::cout << "Back in main(), data = " << data << '\n'; + + worker.join(); +} + +-------------------- + +// waiting for timeout after 5 seconds +std::chrono::seconds timeoutPeriod = 5; +auto timePoint = std::chrono::system_clock::now() + timeoutPeriod; +std::unique_lock uLock(myDataMutex); +while(!DataAreReadyForProcessing()) +{ + if (myCondVar.wait_until(uLock, timePoint) //<## + == std::cv_status::timeout) + { + // data conditions where not fulfilled within + // the time period; e.g. do some error handling + break; + } +} + +-- + +if (myCondVar.wait_for(uLock, timeoutPeriod, + DataAreReadyForProcessing)) +{ + // data conditions where fulfilled + // regular processing +} +else // timeout occured, conditions are not fulfilled +{ + // e.g. do some error handling +} + + + + + + +------------- + + +static int rpmsg_sample_probe(struct rpmsg_device *rpdev) +{ + + int ret; + struct instance_data *idata; + + dev_info(&rpdev->dev, "new channel: 0x%x -> 0x%x!\n", + rpdev->src, rpdev->dst); + + idata = devm_kzalloc(&rpdev->dev, sizeof(*idata), GFP_KERNEL); + if (!idata) + return -ENOMEM; + + dev_set_drvdata(&rpdev->dev, idata); + + /* send a message to our remote processor */ + ret = rpmsg_send(rpdev->ept, MSG, strlen(MSG)); + if (ret) { + dev_err(&rpdev->dev, "rpmsg_send failed: %d\n", ret); + return ret; + } + + return 0; diff --git a/recipes-vrpmdv/recipes-base/vrpmdv-mon-datafile/files/vrpmdv-mon-datafile.c b/recipes-vrpmdv/recipes-base/vrpmdv-mon-datafile/files/vrpmdv-mon-datafile.c new file mode 100644 index 0000000..bcd4235 --- /dev/null +++ b/recipes-vrpmdv/recipes-base/vrpmdv-mon-datafile/files/vrpmdv-mon-datafile.c @@ -0,0 +1,720 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (C) STMicroelectronics 2019 - All Rights Reserved + * Author: Jean-Philippe Romain + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define RPMSG_SDB_DRIVER_VERSION "1.0" + +/* + * Static global variables + */ +static const char rpmsg_sdb_driver_name[] = "vrpmdv-mon-datafile"; + +static int LastBufferId; + +struct rpmsg_sdb_ioctl_set_efd { + int bufferId, eventfd; +}; + +struct rpmsg_sdb_ioctl_get_data_size { + int bufferId; + uint32_t size; +}; + +/* ioctl numbers */ +/* _IOW means userland is writing and kernel is reading */ +/* _IOR means userland is reading and kernel is writing */ +/* _IOWR means userland and kernel can both read and write */ +#define RPMSG_SDB_IOCTL_SET_EFD _IOW('R', 0x00, struct rpmsg_sdb_ioctl_set_efd *) +#define RPMSG_SDB_IOCTL_GET_DATA_SIZE _IOWR('R', 0x01, struct rpmsg_sdb_ioctl_get_data_size *) + +struct sdb_buf_t { + int index; /* index of buffer */ + size_t size; /* buffer size */ + size_t writing_size; /* size of data written by copro */ + dma_addr_t paddr; /* physical address*/ + void *vaddr; /* virtual address */ + void *uaddr; /* mapped address for userland */ + struct eventfd_ctx *efd_ctx; /* eventfd context */ + struct list_head buflist; /* reference in the buffers list */ +}; + +struct rpmsg_sdb_t { + struct mutex mutex; /* mutex to protect the ioctls */ + struct miscdevice mdev; /* misc device ref */ + struct rpmsg_device *rpdev; /* handle rpmsg device */ + struct list_head buffer_list; /* buffer instances list */ +}; + +struct device *rpmsg_sdb_dev; + +struct vRCMDeviceData { + uint32_t packageNo; //current package Number + uint32_t packageCount; //complete package Number + uint32_t dataQuantity; //number of uint32_t in data + uint32_t data[]; //the data +}; + +static int rpmsg_sdb_format_txbuf_string(struct sdb_buf_t *buffer, char *bufinfo_str, size_t bufinfo_str_size) +{ + pr_info("rpmsg_sdb(%s): Buffer index:%d, addr:%08x, size:%08x\n", + __func__, + buffer->index, + buffer->paddr, + buffer->size); + return snprintf(bufinfo_str, bufinfo_str_size, "B%dA%08xL%08x", buffer->index, buffer->paddr, buffer->size); +} + +static long rpmsg_sdb_decode_rxbuf_string(char *rxbuf_str, int *buffer_id, size_t *size) +{ + int ret = 0; + char *sub_str; + long bsize; + long bufid; + const char delimiter[2] = {'L','\0'}; + //__u32* data = (__u32*) rxbuf_str; + struct vRCMDeviceData* pdata = (struct vRCMDeviceData*) rxbuf_str; + + + //pr_info("rpmsg_sdb(%s): rxbuf_str:%s\n", __func__, rxbuf_str); + pr_info("rpmsg_sdb(%s): packageno:%d\n", __func__, pdata->packageNo); + pr_info("rpmsg_sdb(%s): packageCount:%d\n", __func__, pdata->packageCount); + pr_info("rpmsg_sdb(%s): dataquantity:%d\n", __func__, pdata->dataQuantity); + pr_info("rpmsg_sdb(%s): data:%d\n", __func__, (pdata->data)[0]); + // pr_info("rpmsg_sdb(%s): rxbuf_str:%d\n", __func__, data[0]); + // pr_info("rpmsg_sdb(%s): rxbuf_str:%d\n", __func__, data[1]); + // pr_info("rpmsg_sdb(%s): rxbuf_str:%d\n", __func__, data[2]); + + + + /* Get first part containing the buffer id */ +// sub_str = strsep(&rxbuf_str, delimiter); + +// // pr_info("rpmsg_sdb(%s): sub_str:%s\n", __func__, sub_str); + +// /* Save Buffer id and size: template BxLyyyyyyyy*/ +// ret = kstrtol(&sub_str[1], 10, &bufid); +// if (ret < 0) { +// // pr_info("rpmsg_sdb(ERROR): Extract of buffer id failed(%d)", ret); +// goto out; +// } + +// ret = kstrtol(&rxbuf_str[2], 16, &bsize); +// if (ret < 0) { +// // pr_info("rpmsg_sdb(ERROR): Extract of buffer size failed(%d)", ret); +// goto out; +// } + +// *size = (size_t)bsize; +// *buffer_id = (int)bufid; + +// out: + return ret; +} + +static int rpmsg_sdb_send_buf_info(struct rpmsg_sdb_t *rpmsg_sdb, struct sdb_buf_t *buffer) +{ + int count = 0, ret = 0; + const unsigned char *tbuf; + char mybuf[32]; + int msg_size; + struct rpmsg_device *_rpdev; + + pr_info("rpmsg_sdb(%s): start rpmsg_sdb_send_buf_info\n", __func__); + _rpdev = rpmsg_sdb->rpdev; + msg_size = rpmsg_get_mtu(_rpdev->ept); + + pr_info("rpmsg_sdb(%s): checked msg site:%d\n", __func__, msg_size); + if (msg_size < 0) + return msg_size; + + pr_info("rpmsg_sdb(%s): Call rpmsg_sdb_format_txbuf_string\n", __func__); + count = rpmsg_sdb_format_txbuf_string(buffer, mybuf, 32); + tbuf = &mybuf[0]; + + do { + /* send a message to our remote processor */ + pr_info("rpmsg_sdb(%s): send a message to our remote processor\n", __func__); + ret = rpmsg_send(_rpdev->ept, (void *)tbuf, + count > msg_size ? msg_size : count); + if (ret) { + dev_err(&_rpdev->dev, "rpmsg_send failed: %d\n", ret); + pr_info("rpmsg_sdb(%s): error by send a message to our remote processor\n", __func__); + return ret; + } + else { + pr_info("rpmsg_sdb(%s): send succesfully a message to our remote processor\n", __func__); + } + + if (count > msg_size) { + count -= msg_size; + tbuf += msg_size; + } else { + count = 0; + } + } while (count > 0); + + return count; +} + +static int rpmsg_sdb_mmap(struct file *file, struct vm_area_struct *vma) +{ + unsigned long vsize = vma->vm_end - vma->vm_start; + unsigned long size = PAGE_ALIGN(vsize); + unsigned long NumPages = size >> PAGE_SHIFT; + unsigned long align = get_order(size); + pgprot_t prot = pgprot_noncached(vma->vm_page_prot); + struct rpmsg_sdb_t *_rpmsg_sdb; + struct sdb_buf_t *_buffer; + + pr_info("rpmsg_sdb(%s): start rpmsg_sdb_mmap\n", __func__); + if (align > CONFIG_CMA_ALIGNMENT) + align = CONFIG_CMA_ALIGNMENT; + + if (rpmsg_sdb_dev == NULL) + return -ENOMEM; + + pr_info("rpmsg_sdb(%s): start rpmsg_sdb_mmap - coherent_dma_mask\n", __func__); + rpmsg_sdb_dev->coherent_dma_mask = DMA_BIT_MASK(32); + rpmsg_sdb_dev->dma_mask = &rpmsg_sdb_dev->coherent_dma_mask; + + _rpmsg_sdb = container_of(file->private_data, struct rpmsg_sdb_t, + mdev); + + /* Field the last buffer entry which is the last one created */ + if (!list_empty(&_rpmsg_sdb->buffer_list)) { + pr_info("rpmsg_sdb(%s): start rpmsg_sdb_mmap - bufferlist not empty\n", __func__); + _buffer = list_last_entry(&_rpmsg_sdb->buffer_list, + struct sdb_buf_t, buflist); + + _buffer->uaddr = NULL; + _buffer->size = NumPages * PAGE_SIZE; + _buffer->writing_size = -1; + _buffer->vaddr = dma_alloc_coherent(rpmsg_sdb_dev, + _buffer->size, + &_buffer->paddr, + GFP_KERNEL); + + + if (!_buffer->vaddr) { + pr_info("rpmsg_sdb(ERROR): Memory allocation issue\n"); + return -ENOMEM; + } + + pr_info("rpmsg_sdb(%s): dma_alloc_coherent done - paddr[%d]:%x - vaddr[%d]:%p\n", + __func__, + _buffer->index, + _buffer->paddr, + _buffer->index, + _buffer->vaddr); + + /* Get address for userland */ + if (remap_pfn_range(vma, vma->vm_start, + (_buffer->paddr >> PAGE_SHIFT) + vma->vm_pgoff, + size, prot)) { + + pr_info("rpmsg_sdb(%s): remap_pfn_range could not be done\n"); + return -EAGAIN; + } + + + _buffer->uaddr = (void *)vma->vm_start; + pr_info("rpmsg_sdb(%s): _buffer->uaddr = %p\n", __func__, _buffer->uaddr); + + /* Send information to remote proc */ + pr_info("rpmsg_sdb(%s): Send information to remote proc\n", __func__); + rpmsg_sdb_send_buf_info(_rpmsg_sdb, _buffer); + } else { + dev_err(rpmsg_sdb_dev, "No existing buffer entry exist in the list !!!"); + pr_debug("rpmsg_sdb(%s): No existing buffer entry exist in the list !!!\n", __func__); + return -EINVAL; + } + + /* Increment for number of requested buffer */ + LastBufferId++; + + return 0; +} + +/** + * rpmsg_sdb_open - Open Session + * + * @inode: inode struct + * @file: file struct + * + * Return: + * 0 - Success + * Non-zero - Failure + */ +static int rpmsg_sdb_open(struct inode *inode, struct file *file) +{ + struct rpmsg_sdb_t *_rpmsg_sdb; + + _rpmsg_sdb = container_of(file->private_data, struct rpmsg_sdb_t, + mdev); + + /* Initialize the buffer list*/ + pr_debug("rpmsg_sdb(%s): Init bufferlist", __func__); + pr_info("rpmsg_sdb(%s): start Init bufferlist", __func__); + INIT_LIST_HEAD(&_rpmsg_sdb->buffer_list); + pr_info("rpmsg_sdb(%s): success Init bufferlist", __func__); + + mutex_init(&_rpmsg_sdb->mutex); + + return 0; +} + +/** + * rpmsg_sdb_close - Close Session + * + * @inode: inode struct + * @file: file struct + * + * Return: + * 0 - Success + * Non-zero - Failure + */ +static int rpmsg_sdb_close(struct inode *inode, struct file *file) +{ + struct rpmsg_sdb_t *_rpmsg_sdb; + struct sdb_buf_t *pos, *next; + + _rpmsg_sdb = container_of(file->private_data, struct rpmsg_sdb_t, + mdev); + + mutex_lock(&_rpmsg_sdb->mutex); + list_for_each_entry_safe(pos, next, &_rpmsg_sdb->buffer_list, buflist) { + /* Free the CMA allocation */ + pr_info("rpmsg_sdb(%s): Free the CMA allocation 3", __func__); + dma_free_coherent(rpmsg_sdb_dev, pos->size, pos->vaddr, pos->paddr); + /* Remove the buffer from the list */ + list_del(&pos->buflist); + /* Free the buffer */ + kfree(pos); + } + mutex_unlock(&_rpmsg_sdb->mutex); + pr_info("rpmsg_sdb(%s): Free the CMA allocation 4 - done", __func__); + /* Reset LastBufferId */ + LastBufferId = 0; + + return 0; +} + +/** + * rpmsg_sdb_ioctl - IOCTL + * + * @session: ibmvmc_file_session struct + * @cmd: cmd field + * @arg: Argument field + * + * Return: + * 0 - Success + * Non-zero - Failure + */ +static long rpmsg_sdb_ioctl(struct file *file, unsigned int cmd, unsigned long arg) +{ + int idx = 0; + + struct rpmsg_sdb_t *_rpmsg_sdb; + struct sdb_buf_t *buffer, *lastbuffer; + + struct list_head *pos; + struct sdb_buf_t *datastructureptr = NULL; + + struct rpmsg_sdb_ioctl_set_efd q_set_efd; + struct rpmsg_sdb_ioctl_get_data_size q_get_dat_size; + + void __user *argp = (void __user *)arg; + + _rpmsg_sdb = container_of(file->private_data, struct rpmsg_sdb_t, + mdev); + + switch (cmd) { + case RPMSG_SDB_IOCTL_SET_EFD: + mutex_lock(&_rpmsg_sdb->mutex); + + /* Get index from the last buffer in the list */ + pr_info("mon-datafile: set EFD\n"); + if (!list_empty(&_rpmsg_sdb->buffer_list)) { + lastbuffer = list_last_entry(&_rpmsg_sdb->buffer_list, struct sdb_buf_t, buflist); + idx = lastbuffer->index; + + /* Check last index was properly initiated*/ + if (lastbuffer->vaddr == NULL) { + // pr_err("rpmsg_sdb(ERROR): RPMSG_SDB_IOCTL_SET_EFD - previous buffer was not allocated\n"); + pr_info("rpmsg_sdb(ERROR): RPMSG_SDB_IOCTL_SET_EFD - previous buffer was not allocated\n"); + mutex_unlock(&_rpmsg_sdb->mutex); + return -EBADE; + } + + /* increment this index for the next buffer creation*/ + idx++; + } + + if (copy_from_user(&q_set_efd, (struct rpmsg_sdb_ioctl_set_efd *)argp, + sizeof(struct rpmsg_sdb_ioctl_set_efd))) { + // pr_err("rpmsg_sdb(ERROR): RPMSG_SDB_IOCTL_SET_EFD - copy from user failed\n"); + pr_info("rpmsg_sdb(ERROR): RPMSG_SDB_IOCTL_SET_EFD - copy from user failed\n"); + + mutex_unlock(&_rpmsg_sdb->mutex); + return -EFAULT; + } + + /* create a new buffer which will be added in the buffer list */ + buffer = kmalloc(sizeof(struct sdb_buf_t), GFP_KERNEL); + + buffer->index = idx; + buffer->vaddr = NULL; + buffer->efd_ctx = eventfd_ctx_fdget(q_set_efd.eventfd); + list_add_tail(&buffer->buflist, &_rpmsg_sdb->buffer_list); + + pr_info("rpmsg_sdb(SUCCES): RPMSG_SDB_IOCTL_SET_EFD \n"); + + mutex_unlock(&_rpmsg_sdb->mutex); + break; + + case RPMSG_SDB_IOCTL_GET_DATA_SIZE: + pr_info("mon-datafile: get datasize\n"); + if (copy_from_user(&q_get_dat_size, (struct rpmsg_sdb_ioctl_get_data_size *)argp, + sizeof(struct rpmsg_sdb_ioctl_get_data_size))) { + pr_err("rpmsg_sdb(ERROR): RPMSG_SDB_IOCTL_GET_DATA_SIZE - copy from user failed\n"); + return -EFAULT; + } + + /* Get the index of the requested buffer and then look-up in the buffer list*/ + idx = q_get_dat_size.bufferId; + + list_for_each(pos, &_rpmsg_sdb->buffer_list) + { + datastructureptr = list_entry(pos, struct sdb_buf_t, buflist); + if (datastructureptr->index == idx) { + /* Get the writing size*/ + q_get_dat_size.size = datastructureptr->writing_size; + break; + } + } + + if (copy_to_user((struct rpmsg_sdb_ioctl_get_data_size *)argp, &q_get_dat_size, + sizeof(struct rpmsg_sdb_ioctl_get_data_size))) { + pr_err("rpmsg_sdb(ERROR): RPMSG_SDB_IOCTL_GET_DATA_SIZE - copy to user failed\n"); + return -EFAULT; + } + + /* Reset the writing size*/ + datastructureptr->writing_size = -1; + + break; + default: + return -EINVAL; + } + + return 0; +} + +static const struct file_operations rpmsg_sdb_fops = { + .owner = THIS_MODULE, + .unlocked_ioctl = rpmsg_sdb_ioctl, + .mmap = rpmsg_sdb_mmap, + .open = rpmsg_sdb_open, + .release = rpmsg_sdb_close, +}; + +static int rpmsg_sdb_drv_cb(struct rpmsg_device *rpdev, void *data, int len, + void *priv, u32 src) +{ + int ret = 0; + int buffer_id = 0; + size_t buffer_size; + char *rpmsg_RxBuf; + struct list_head *pos; + struct sdb_buf_t *datastructureptr = NULL; + + //pr_info("mon-datafile: receive msg from Copro: %s, len:%d\n", __func__, len); + + // struct rpmsg_sdb_t { + // struct mutex mutex; /* mutex to protect the ioctls */ + // struct miscdevice mdev; /* misc device ref */ + // struct rpmsg_device *rpdev; /* handle rpmsg device */ + // struct list_head buffer_list; /* buffer instances list */ + // }; + + + rpmsg_RxBuf = (char *)kmalloc(len+1, GFP_KERNEL); + memcpy(rpmsg_RxBuf, data, len); + + rpmsg_RxBuf[len] = 0; + + // ret = rpmsg_sdb_decode_rxbuf_string(rpmsg_RxBuf, &buffer_id, &buffer_size); + + // if (ret < 0) + // goto out; + + // if (buffer_id > LastBufferId) { + // ret = -EINVAL; + // goto out; + // } + + struct vRCMDeviceData* pdata = (struct vRCMDeviceData*) rpmsg_RxBuf; + + + //pr_info("rpmsg_sdb(%s): rxbuf_str:%s\n", __func__, rxbuf_str); + // pr_info("rpmsg_sdb(%s): packageno:%d\n", __func__, pdata->packageNo); + // pr_info("rpmsg_sdb(%s): packageCount:%d\n", __func__, pdata->packageCount); + // pr_info("rpmsg_sdb(%s): dataquantity:%d\n", __func__, pdata->dataQuantity); + // pr_info("rpmsg_sdb(%s): data:%d\n", __func__, (pdata->data)[0]); + + + struct rpmsg_sdb_t *drv = dev_get_drvdata(&rpdev->dev); + + if (len == 0) { + dev_err(rpmsg_sdb_dev, "(%s) Empty lenght requested\n", __func__); + return -EINVAL; + } + + if (drv == NULL) { + dev_err(rpmsg_sdb_dev, "(%s) no driver found\n", __func__); + return -EINVAL; + } + + //copy data to structure + //1. get buffer + + // struct vRCMDeviceData* pdata = (struct vRCMDeviceData*) kmalloc(len+1, GFP_KERNEL); + // memcpy(pdata, data, len); + + // if (ret < 0) + // goto out; + + // if (buffer_id > LastBufferId) { + // ret = -EINVAL; + // goto out; + // } + + +/** + rpmsg_RxBuf = (char *)kmalloc(len+1, GFP_KERNEL); + memcpy(rpmsg_RxBuf, data, len); + + rpmsg_RxBuf[len] = 0; + + ret = rpmsg_sdb_decode_rxbuf_string(rpmsg_RxBuf, &buffer_id, &buffer_size); + kfree(rpmsg_RxBuf); + if (ret < 0) + goto out; + + if (buffer_id > LastBufferId) { + ret = -EINVAL; + goto out; + } +*/ + /* Signal to User space application */ + mutex_lock(&drv->mutex); + list_for_each(pos, &drv->buffer_list) + { + datastructureptr = list_entry(pos, struct sdb_buf_t, buflist); + + + /** + * struct vRCMDeviceData { + uint32_t packageNo; //current package Number + uint32_t packageCount; //complete package Number + uint32_t dataQuantity; //number of uint32_t in data + uint32_t data[]; //the data + }; + */ + //copy data to buffer + + + // struct sdb_buf_t { + // int index; /* index of buffer */ + // size_t size; /* buffer size */ + // size_t writing_size; /* size of data written by copro */ + // dma_addr_t paddr; /* physical address*/ + // void *vaddr; /* virtual address */ + // void *uaddr; /* mapped address for userland */ + // struct eventfd_ctx *efd_ctx; /* eventfd context */ + // struct list_head buflist; /* reference in the buffers list */ + // }; + + //get the buffer as array of struct vRCMDeviceData + struct vRCMDeviceData* vrBuff = (struct vRCMDeviceData*) (datastructureptr->vaddr); + struct vRCMDeviceData* startAdress = &(vrBuff[pdata->packageNo]); + // pr_info("rpmsg_sdb(%s): startAdress:%d\n", __func__, startAdress); + + if (virt_addr_valid(startAdress)) { + if (pdata->packageNo == 1) { + //reset writing size + datastructureptr->writing_size = 0; + } + // pr_info("rpmsg_sdb(%s): startAdress:%d is valid\n", __func__, startAdress); + datastructureptr->writing_size = datastructureptr->writing_size + len; + + if (datastructureptr->writing_size > datastructureptr->size) { + pr_info("(%s) Writing size is bigger than buffer size\n", __func__); + ret = -EINVAL; + goto out; + } + + memcpy(startAdress, rpmsg_RxBuf, len); + } + else { + pr_info("rpmsg_sdb(%s): startAdress[%d]:%p is invalid!!\n", __func__, startAdress); + } + + + // if (datastructureptr->index == buffer_id) { + // datastructureptr->writing_size = buffer_size; + + // if (datastructureptr->writing_size > datastructureptr->size) { + // dev_err(rpmsg_sdb_dev, "(%s) Writing size is bigger than buffer size\n", __func__); + // ret = -EINVAL; + // goto out; + // } + + if ((pdata != NULL) && (pdata->packageNo == pdata->packageCount)) { + pr_info("rpmsg_sdb(%s): signal bufferfull!\n", __func__); + eventfd_signal(datastructureptr->efd_ctx, 1); + break; + + } + + } + mutex_unlock(&drv->mutex); + + /* Signal to User space application */ +/** list_for_each(pos, &drv->buffer_list) + { + datastructureptr = list_entry(pos, struct sdb_buf_t, buflist); + if (datastructureptr->index == buffer_id) { + datastructureptr->writing_size = buffer_size; + + if (datastructureptr->writing_size > datastructureptr->size) { + dev_err(rpmsg_sdb_dev, "(%s) Writing size is bigger than buffer size\n", __func__); + ret = -EINVAL; + goto out; + } + + eventfd_signal(datastructureptr->efd_ctx, 1); + break; + } + } +*/ + +out: + kfree(rpmsg_RxBuf); + //kfree(pdata); + return ret; +} + +static int rpmsg_sdb_drv_probe(struct rpmsg_device *rpdev) +{ + int ret = 0; + struct device *dev = &rpdev->dev; + struct rpmsg_sdb_t *rpmsg_sdb; + + pr_info("mon-datafile: registering started\n"); + + rpmsg_sdb = devm_kzalloc(dev, sizeof(*rpmsg_sdb), GFP_KERNEL); + if (!rpmsg_sdb) + return -ENOMEM; + + mutex_init(&rpmsg_sdb->mutex); + + rpmsg_sdb->rpdev = rpdev; + + rpmsg_sdb->mdev.name = "mon-datafile";//"rpmsg-sdb"; + rpmsg_sdb->mdev.minor = MISC_DYNAMIC_MINOR; + rpmsg_sdb->mdev.fops = &rpmsg_sdb_fops; + + pr_info("mon-datafile: Set Driver data\n"); + dev_set_drvdata(&rpdev->dev, rpmsg_sdb); + + /* Register misc device */ + ret = misc_register(&rpmsg_sdb->mdev); + + if (ret) { + dev_err(dev, "Failed to register device\n"); + pr_info("mon-datafile: Failed to register device\n"); + goto err_out; + } + + rpmsg_sdb_dev = rpmsg_sdb->mdev.this_device; + + //pr_info("rpmsg_sdb: Failed to register device\n"); + dev_info(dev, "%s probed\n", rpmsg_sdb_driver_name); + +err_out: + return ret; +} + +static void rpmsg_sdb_drv_remove(struct rpmsg_device *rpmsgdev) +{ + struct rpmsg_sdb_t *drv = dev_get_drvdata(&rpmsgdev->dev); + pr_info("rpmsg_sdb(%s): remove misc device %s !\n", __func__, drv->mdev.name); + misc_deregister(&drv->mdev); +} + +static struct rpmsg_device_id rpmsg_driver_sdb_id_table[] = { + { .name = "vrpmdv-mon-datafile" }, + { }, +}; +MODULE_DEVICE_TABLE(rpmsg, rpmsg_driver_sdb_id_table); + +//static struct rpmsg_driver rpmsg_sdb_rmpsg_drv = { +static struct rpmsg_driver vrpmdv_monitoring_data = { + .drv.name = KBUILD_MODNAME, + .drv.owner = THIS_MODULE, + .id_table = rpmsg_driver_sdb_id_table, + .probe = rpmsg_sdb_drv_probe, + .callback = rpmsg_sdb_drv_cb, + .remove = rpmsg_sdb_drv_remove, +}; + +module_rpmsg_driver(vrpmdv_monitoring_data); + + +// static int __init rpmsg_sdb_drv_init(void) +// { +// int ret = 0; + +// /* Register rpmsg device */ +// ret = register_rpmsg_driver(&rpmsg_sdb_rmpsg_drv); + +// if (ret) { +// pr_err("rpmsg_sdb(ERROR): Failed to register device\n"); +// return ret; +// } + +// pr_info("rpmsg_sdb: Init done\n"); + +// return ret; +// } + +// static void __exit rpmsg_sdb_drv_exit(void) +// { +// unregister_rpmsg_driver(&rpmsg_sdb_rmpsg_drv); +// pr_info("rpmsg_sdb: Exit\n"); +// } + +// module_init(rpmsg_sdb_drv_init); +// module_exit(rpmsg_sdb_drv_exit); + + +MODULE_AUTHOR("Markus Lehr "); +MODULE_DESCRIPTION("shared data buffer over RPMSG"); +MODULE_VERSION(RPMSG_SDB_DRIVER_VERSION); +MODULE_LICENSE("GPL v2"); diff --git a/recipes-vrpmdv/recipes-base/vrpmdv-mon-datafile/save/kernel-module-vrpmdv-monitoring-driver.bb b/recipes-vrpmdv/recipes-base/vrpmdv-mon-datafile/save/kernel-module-vrpmdv-monitoring-driver.bb new file mode 100644 index 0000000..9bd4cda --- /dev/null +++ b/recipes-vrpmdv/recipes-base/vrpmdv-mon-datafile/save/kernel-module-vrpmdv-monitoring-driver.bb @@ -0,0 +1,16 @@ +SUMMARY = "VRPMDV Monitoring Driver" +LICENSE = "GPL-2.0-only" +LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/GPL-2.0-only;md5=801f80980d171dd6425610833a22dbe6" + +inherit module + +SRC_URI = "file://Makefile \ + file://vrpmdv-monitoring.c \ + " + +S = "${WORKDIR}" + +# The inherit of module.bbclass will automatically name module packages with +# "kernel-module-" prefix as required by the oe-core build environment. + +RPROVIDES:${PN} += "kernel-module-vrpmdv-monitoring" diff --git a/recipes-vrpmdv/recipes-base/vrpmdv-mon-datafile/save/netlink-save.c.save b/recipes-vrpmdv/recipes-base/vrpmdv-mon-datafile/save/netlink-save.c.save new file mode 100644 index 0000000..8a32ba8 --- /dev/null +++ b/recipes-vrpmdv/recipes-base/vrpmdv-mon-datafile/save/netlink-save.c.save @@ -0,0 +1,541 @@ +/* Copyright 2021 Philipp Schuster + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in the + * Software without restriction, including without limitation the rights to use, copy, + * modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, subject to the + * following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies + * or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, + * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A + * PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +// ################################################################################################## +/* + * This is a Linux kernel module/driver called "gnl_foobar_xmpl" which shows you the basics of using + * Generic Netlink in the kernel. It registers a Netlink family called "gnl_foobar_xmpl". See + * "gnl_foobar_xmpl_prop.h" for common properties of the family. "Generic Netlink" offers us a lot of + * convenient functions to register new/custom Netlink families on the fly during runtime. We use this + * functionality here. It implements simple IPC between Userland and Kernel (Kernel responds to userland). + * + * Check "gnl_foobar_xmpl_prop.h" for common properties of the family first, afterwards follow the code here. + * + * You can find some more interesting documentation about Generic Netlink here: + * "Generic Netlink HOW-TO based on Jamal's original doc" https://lwn.net/Articles/208755/ + */ + +// basic definitions for kernel module development +#include +// definitions for generic netlink families, policies etc; +// transitive dependencies for basic netlink, sockets etc +#include +// required for locking inside the .dumpit callback demonstration +#include + +// data/vars/enums/properties that describes our protocol that we implement +// on top of generic netlink (like functions we want to trigger on the receiving side) +#include "gnl_foobar_xmpl_prop.h" + +// Module/Driver description. +// You can see this for example when executing `$ modinfo ./gnl_foobar_xmpl.ko` (after build). +MODULE_LICENSE("GPL"); +MODULE_AUTHOR("Philipp Schuster "); +MODULE_DESCRIPTION( + "Linux driver that registers the custom Netlink family " + "\"" FAMILY_NAME "\" via Generic Netlink and responds to echo messages " + "according to the properties specified in \"gnl_foobar_xmpl_prop.h\"." +); + + +/* ######################## CONVENIENT LOGGING MACROS ######################## */ +// (Re)definition of some convenient logging macros from . You can see the logging +// messages when printing the kernel log, e.g. with `$ sudo dmesg`. +// See https://elixir.bootlin.com/linux/latest/source/include/linux/printk.h + +// with this redefinition we can easily prefix all log messages from pr_* logging macros +#ifdef pr_fmt +#undef pr_fmt +#endif +#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt +/* ########################################################################### */ + +/** + * Data structure required for our .dumpit callback handler to + * know about the progress of an ongoing dump. + * See the dumpit callback handler how it is used. + */ +struct { + // from + /** + * Only one process is allowed per dump process. We need a lock for that. + */ + struct mutex mtx; + /** + * Number that describes how many packets we need to send until we are done + * during an ongoing dumpit process. 0 = done. + */ + int unsigned runs_to_go; + /** + * Number that describes how many packets per dump are sent in total. + * Constant per dump. + */ + int unsigned total_runs; +} dumpit_cb_progress_data; + +// Documentation is on the implementation of this function. +int gnl_cb_echo_doit(struct sk_buff *sender_skb, struct genl_info *info); + +// Documentation is on the implementation of this function. +int gnl_cb_echo_dumpit(struct sk_buff *pre_allocated_skb, struct netlink_callback *cb); + +// Documentation is on the implementation of this function. +int gnl_cb_echo_dumpit_before(struct netlink_callback *cb); + +// Documentation is on the implementation of this function. +int gnl_cb_echo_dumpit_before_after(struct netlink_callback *cb); + +// Documentation is on the implementation of this function. +int gnl_cb_doit_reply_with_nlmsg_err(struct sk_buff *sender_skb, struct genl_info *info); + +/** + * The length of `struct genl_ops gnl_foobar_xmpl_ops[]`. Not necessarily + * the number of commands in `enum GNlFoobarXmplCommand`. It depends on your application logic. + * For example, you can use the same command multiple times and - dependent by flag - + * invoke a different callback handler. In our simple example we just use one .doit callback + * per operation/command. + */ +#define GNL_FOOBAR_OPS_LEN (GNL_FOOBAR_XMPL_COMMAND_COUNT) + +/** + * Array with all operations that our protocol on top of Generic Netlink + * supports. An operation is the glue between a command ("cmd" field in `struct genlmsghdr` of + * received Generic Netlink message) and the corresponding ".doit" callback function. + * See: https://elixir.bootlin.com/linux/v5.11/source/include/net/genetlink.h#L148 + */ +struct genl_ops gnl_foobar_xmpl_ops[GNL_FOOBAR_OPS_LEN] = { + { + /* The "cmd" field in `struct genlmsghdr` of received Generic Netlink message */ + .cmd = GNL_FOOBAR_XMPL_C_ECHO_MSG, + /* TODO Use case ? */ + .flags = 0, + /* TODO Use case ? */ + .internal_flags = 0, + /* Callback handler when a request with the specified ".cmd" above is received. + * Always validates the payload except one set NO_STRICT_VALIDATION flag in ".validate" + * See: https://elixir.bootlin.com/linux/v5.11/source/net/netlink/genetlink.c#L717 + * + * Quote from: https://lwn.net/Articles/208755 + * "The 'doit' handler should do whatever processing is necessary and return + * zero on success, or a negative value on failure. Negative return values + * will cause a NLMSG_ERROR message to be sent while a zero return value will + * only cause a NLMSG_ERROR message to be sent if the request is received with + * the NLM_F_ACK flag set." + * + * You can find this in Linux code here: + * https://elixir.bootlin.com/linux/v5.11/source/net/netlink/af_netlink.c#L2499 + * + * One can find more information about NLMSG_ERROR responses and how to handle them + * in userland in the manpage: https://man7.org/linux/man-pages/man7/netlink.7.html + * + */ + .doit = gnl_cb_echo_doit, + /* This callback is similar in use to the standard Netlink 'dumpit' callback. + * The 'dumpit' callback is invoked when a Generic Netlink message is received + * with the NLM_F_DUMP flag set. + * + * A dump can be understand as a "GET ALL DATA OF THE GIVEN ENTITY", i.e. + * the userland can receive as long as the .dumpit callback returns data. + * + * .dumpit is not mandatory, but either it or .doit must be provided, see + * https://elixir.bootlin.com/linux/v5.11/source/net/netlink/genetlink.c#L367 + * + * To be honest I don't know in what use case one should use .dumpit and why + * it is useful, because you can achieve the same also with .doit handlers. + * Anyway, this is just an example/tutorial. + * + * Quote from: https://lwn.net/Articles/208755 + * "The main difference between a 'dumpit' handler and a 'doit' handler is + * that a 'dumpit' handler does not allocate a message buffer for a response; + * a pre-allocated sk_buff is passed to the 'dumpit' handler as the first + * parameter. The 'dumpit' handler should fill the message buffer with the + * appropriate response message and return the size of the sk_buff, + * i.e. sk_buff->len, and the message buffer will automatically be sent to the + * Generic Netlink client that initiated the request. As long as the 'dumpit' + * handler returns a value greater than zero it will be called again with a + * newly allocated message buffer to fill, when the handler has no more data + * to send it should return zero; error conditions are indicated by returning + * a negative value. If necessary, state can be preserved in the + * netlink_callback parameter which is passed to the 'dumpit' handler; the + * netlink_callback parameter values will be preserved across handler calls + * for a single request." + * + * You can see the check for the NLM_F_DUMP-flag here: + * https://elixir.bootlin.com/linux/v5.11/source/net/netlink/genetlink.c#L780 + */ + .dumpit = gnl_cb_echo_dumpit, + /* Start callback for dumps. Can be used to lock data structures. */ + .start = gnl_cb_echo_dumpit_before, + /* Completion callback for dumps. Can be used for cleanup after a dump and releasing locks. */ + .done = gnl_cb_echo_dumpit_before_after, + /* + 0 (= "validate strictly") or value `enum genl_validate_flags` + * see: https://elixir.bootlin.com/linux/v5.11/source/include/net/genetlink.h#L108 + */ + .validate = 0, + }, + { + .cmd = GNL_FOOBAR_XMPL_C_REPLY_WITH_NLMSG_ERR, + .flags = 0, + .internal_flags = 0, + .doit = gnl_cb_doit_reply_with_nlmsg_err, + // .dumpit is not required, only optional; application specific/dependent on your use case + // in a real application you probably have different .dumpit handlers per operation/command + .dumpit = NULL, + // in a real application you probably have different .start handlers per operation/command + .start = NULL, + // in a real application you probably have different .done handlers per operation/command + .done = NULL, + .validate = 0, + } +}; + +/** + * Attribute policy: defines which attribute has which type (e.g int, char * etc). + * This get validated for each received Generic Netlink message, if not deactivated + * in `gnl_foobar_xmpl_ops[].validate`. + * See https://elixir.bootlin.com/linux/v5.11/source/net/netlink/genetlink.c#L717 + */ +static struct nla_policy gnl_foobar_xmpl_policy[GNL_FOOBAR_XMPL_ATTRIBUTE_ENUM_LEN] = { + // In case you are seeing this syntax for the first time (I also learned this just after a few years of + // coding with C myself): The following static array initiations are equivalent: + // `int a[2] = {1, 2}` <==> `int a[2] = {[0] => 1, [1] => 2}`. + + [GNL_FOOBAR_XMPL_A_UNSPEC] = {.type = NLA_UNSPEC}, + + // You can set this to NLA_U32 for testing and send an ECHO message from the userland + // It will fail in this case and you see a entry in the kernel log. + + // `enum GNL_FOOBAR_XMPL_ATTRIBUTE::GNL_FOOBAR_XMPL_A_MSG` is a null-terminated C-String + [GNL_FOOBAR_XMPL_A_MSG] = {.type = NLA_NUL_STRING}, +}; + +/** + * Definition of the Netlink family we want to register using Generic Netlink functionality + */ +static struct genl_family gnl_foobar_xmpl_family = { + // automatically assign an id + .id = 0, + // we don't use custom additional header info / user specific header + .hdrsize = 0, + // The name of this family, used by userspace application to get the numeric ID + .name = FAMILY_NAME, + // family specific version number; can be used to evolve application over time (multiple versions) + .version = 1, + // delegates all incoming requests to callback functions + .ops = gnl_foobar_xmpl_ops, + // length of array `gnl_foobar_xmpl_ops` + .n_ops = GNL_FOOBAR_OPS_LEN, + // attribute policy (for validation of messages). Enforced automatically, except ".validate" in + // corresponding ".ops"-field is set accordingly. + .policy = gnl_foobar_xmpl_policy, + // Number of attributes / bounds check for policy (array length) + .maxattr = GNL_FOOBAR_XMPL_ATTRIBUTE_ENUM_LEN, + // Owning Kernel module of the Netlink family we register. + .module = THIS_MODULE, + + // Actually not necessary because this memory region would be zeroed anyway during module load, + // but this way one sees all possible options. + + // if your application must handle multiple netlink calls in parallel (where one should not block the next + // from starting), set this to true! otherwise all netlink calls are mutually exclusive + .parallel_ops = 0, + // set to true if the family can handle network namespaces and should be presented in all of them + .netnsok = 0, + // called before an operation's doit callback, it may do additional, common, filtering and return an error + .pre_doit = NULL, + // called after an operation's doit callback, it may undo operations done by pre_doit, for example release locks + .post_doit = NULL, +}; + +/** + * Regular ".doit"-callback function if a Generic Netlink with command `GNL_FOOBAR_XMPL_C_ECHO` is received. + * Please look into the comments where this is used as ".doit" callback above in + * `struct genl_ops gnl_foobar_xmpl_ops[]` for more information about ".doit" callbacks. +*/ +int gnl_cb_echo_doit(struct sk_buff *sender_skb, struct genl_info *info) { + struct nlattr *na; + struct sk_buff *reply_skb; + int rc; + void *msg_head; + char *recv_msg; + + pr_info("%s() invoked\n", __func__); + + if (info == NULL) { + // should never happen + pr_err("An error occurred in %s():\n", __func__); + return -EINVAL; + } + + /* + * For each attribute there is an index in info->attrs which points to a nlattr structure + * in this structure the data is stored. + */ + na = info->attrs[GNL_FOOBAR_XMPL_A_MSG]; + + if (!na) { + pr_err("no info->attrs[%i]\n", GNL_FOOBAR_XMPL_A_MSG); + return -EINVAL; // we return here because we expect to recv a msg + } + + recv_msg = (char *) nla_data(na); + if (recv_msg == NULL) { + pr_err("error while receiving data\n"); + } else { + pr_info("received: '%s'\n", recv_msg); + } + + + // Send a message back + // --------------------- + + // Allocate some memory, since the size is not yet known use NLMSG_GOODSIZE + reply_skb = genlmsg_new(NLMSG_GOODSIZE, GFP_KERNEL); + if (reply_skb == NULL) { + pr_err("An error occurred in %s():\n", __func__); + return -ENOMEM; + } + + // Create the message headers + + // Add header to netlink message; + // afterwards the buffer looks like this: + // ---------------------------------- + // | netlink header | + // | generic netlink header | + // | | + // ---------------------------------- + msg_head = genlmsg_put(reply_skb, // buffer for netlink message: struct sk_buff * + // According to my findings: this is not used for routing + // This can be used in an application specific way to target + // different endpoints within the same user application + // but general rule: just put sender port id here + info->snd_portid, // sending port (not process) id: int + info->snd_seq + 1, // sequence number: int (might be used by receiver, but not mandatory) + &gnl_foobar_xmpl_family, // struct genl_family * + 0, // flags for Netlink header: int; application specific and not mandatory + // The command/operation (u8) from `enum GNL_FOOBAR_XMPL_COMMAND` for Generic Netlink header + GNL_FOOBAR_XMPL_C_ECHO_MSG + ); + if (msg_head == NULL) { + rc = ENOMEM; + pr_err("An error occurred in %s():\n", __func__); + return -rc; + } + + // Add a GNL_FOOBAR_XMPL_A_MSG attribute (actual value/payload to be sent) + // echo the value we just received + rc = nla_put_string(reply_skb, GNL_FOOBAR_XMPL_A_MSG, recv_msg); + if (rc != 0) { + pr_err("An error occurred in %s():\n", __func__); + return -rc; + } + + // Finalize the message: + // Corrects the netlink message header (length) to include the appended + // attributes. Only necessary if attributes have been added to the message. + genlmsg_end(reply_skb, msg_head); + + // Send the message back + rc = genlmsg_reply(reply_skb, info); + // same as genlmsg_unicast(genl_info_net(info), reply_skb, info->snd_portid) + // see https://elixir.bootlin.com/linux/v5.8.9/source/include/net/genetlink.h#L326 + + if (rc != 0) { + pr_err("An error occurred in %s():\n", __func__); + return -rc; + } + return 0; +} + +/** + * ".dumpit"-callback function if a Generic Netlink with command ECHO_MSG and flag `NLM_F_DUMP` is received. + * Please look into the comments where this is used as ".dumpit" callback above in + * `struct genl_ops gnl_foobar_xmpl_ops[]` for more information about ".dumpit" callbacks. + * + * A dump must be understand of "give me all data of a given entity" + * rather than a "dump of the netlink message itself" for debugging etc! + * + * This handler requires `gnl_cb_echo_dumpit_before` to run before a dump and `gnl_cb_echo_dumpit_after` after a dump. + * + * For the sake of simplicity, we use the ECHO_MSG command for the dump. In fact, we don't expect a + * MSG-Attribute here, unlike the regular ECHO_MSG handler. We reply with a dump of + * "all messages that we got" (application specific, hard coded in this example). +*/ +int gnl_cb_echo_dumpit(struct sk_buff *pre_allocated_skb, struct netlink_callback *cb) { + void *msg_head; + int ret; + static const char HELLO_FROM_DUMPIT_MSG[] = "You set the flag NLM_F_DUMP; this message is " + "brought to you by .dumpit callback :)"; + pr_info("Called %s()\n", __func__); + + if (dumpit_cb_progress_data.runs_to_go == 0) { + pr_info("no more data to send in dumpit cb\n"); + // mark that dump is done; + return 0; + } else { + dumpit_cb_progress_data.runs_to_go--; + pr_info("%s: %d more runs to do\n", __func__, dumpit_cb_progress_data.runs_to_go); + } + + msg_head = genlmsg_put(pre_allocated_skb, // buffer for netlink message: struct sk_buff * + // According to my findings: this is not used for routing + // This can be used in an application specific way to target + // different endpoints within the same user application + // but general rule: just put sender port id here + cb->nlh->nlmsg_pid, // sending port (not process) id: int + // sequence number: int (might be used by receiver, but not mandatory) + // sequence 0, 1, 2... + dumpit_cb_progress_data.total_runs - dumpit_cb_progress_data.runs_to_go - 1, + &gnl_foobar_xmpl_family, // struct genl_family * + 0, // flags: int (for netlink header); we don't check them in the userland; application specific + // this way we can trigger a specific command/callback on the receiving side or imply + // on which type of command we are currently answering; this is application specific + GNL_FOOBAR_XMPL_C_ECHO_MSG // cmd: u8 (for generic netlink header); + ); + if (msg_head == NULL) { + pr_info("An error occurred in %s(): genlmsg_put() failed\n", __func__); + return -ENOMEM; + } + ret = nla_put_string( + pre_allocated_skb, + GNL_FOOBAR_XMPL_A_MSG, + HELLO_FROM_DUMPIT_MSG + ); + if (ret < 0) { + pr_info("An error occurred in %s():\n", __func__); + return ret; + } + genlmsg_end(pre_allocated_skb, msg_head); + + // return the length of data we wrote into the pre-allocated buffer + return pre_allocated_skb->len; +} + +/** + * Regular ".doit"-callback function if a Generic Netlink with command `GNL_FOOBAR_XMPL_C_REPLY_WITH_NLMSG_ERR` is received. + * Please look into the comments where this is used as ".doit" callback above in + * `struct genl_ops gnl_foobar_xmpl_ops[]` for more information about ".doit" callbacks. +*/ +int gnl_cb_doit_reply_with_nlmsg_err(struct sk_buff *sender_skb, struct genl_info *info) { + pr_info("%s() invoked, a NLMSG_ERR response will be sent back\n", __func__); + + /* + * Generic Netlink is smart enough and sends a NLMSG_ERR reply automatically as reply + * Quote from https://lwn.net/Articles/208755/: + * "The 'doit' handler should do whatever processing is necessary and return + * zero on success, or a negative value on failure. Negative return values + * will cause a NLMSG_ERROR message to be sent while a zero return value will + * only cause a NLMSG_ERROR message to be sent if the request is received with + * the NLM_F_ACK flag set." + * + * You can find this in Linux code here: + * https://elixir.bootlin.com/linux/v5.11/source/net/netlink/af_netlink.c#L2499 + * + * One can find more information about NLMSG_ERROR responses and how to handle them + * in userland in the manpage: https://man7.org/linux/man-pages/man7/netlink.7.html + */ + return -EINVAL; +} + +/** + * Called before a dump with `gnl_cb_echo_dumpit()` starts. + * See where this is assigned in `struct genl_ops gnl_foobar_xmpl_ops[]` as + * `.start` callback for more comments. + * + * @return success (0) or error. + */ +int gnl_cb_echo_dumpit_before(struct netlink_callback *cb) { + int ret; + static int unsigned const dump_runs = 3; + pr_info("%s: dump started. acquire lock. initialize dump runs_to_go (number of receives userland can make) to %d runs\n", __func__, dump_runs); + // Lock the mutex like mutex_lock(), and return 0 if the mutex has been acquired or sleep until the mutex becomes available + // If a signal arrives while waiting for the lock then this function returns -EINTR. + ret = mutex_lock_interruptible(&dumpit_cb_progress_data.mtx); + if (ret != 0) { + pr_err("Failed to get lock!\n"); + return ret; + } + dumpit_cb_progress_data.total_runs = dump_runs; + dumpit_cb_progress_data.runs_to_go = dump_runs; + return 0; + +} + +/** + * Called before a dump with `gnl_cb_echo_dumpit()` starts. + * See where this is assigned in `struct genl_ops gnl_foobar_xmpl_ops[]` as + * `.start` callback for more comments. + * + * @return success (0) or error. + */ +int gnl_cb_echo_dumpit_before_after(struct netlink_callback *cb) { + pr_info("%s: dump done. release lock\n", __func__); + mutex_unlock(&dumpit_cb_progress_data.mtx); + return 0; +} + +/** + * Module/driver initializer. Called on module load/insertion. + * + * @return success (0) or error code. + */ +static int __init gnl_foobar_xmpl_module_init(void) { + int rc; + pr_info("Generic Netlink Example Module inserted.\n"); + + // Register family with its operations and policies + rc = genl_register_family(&gnl_foobar_xmpl_family); + if (rc != 0) { + pr_err("FAILED: genl_register_family(): %i\n", rc); + pr_err("An error occurred while inserting the generic netlink example module\n"); + return -1; + } else { + pr_info("successfully registered custom Netlink family '" FAMILY_NAME "' using Generic Netlink.\n"); + } + + mutex_init(&dumpit_cb_progress_data.mtx); + + return 0; +} + +/** + * Module/driver uninitializer. Called on module unload/removal. + * + * @return success (0) or error code. + */ +static void __exit gnl_foobar_xmpl_module_exit(void) { + int ret; + pr_info("Generic Netlink Example Module unloaded.\n"); + + // Unregister the family + ret = genl_unregister_family(&gnl_foobar_xmpl_family); + if (ret != 0) { + pr_err("genl_unregister_family() failed: %i\n", ret); + return; + } else { + pr_info("successfully unregistered custom Netlink family '" FAMILY_NAME "' using Generic Netlink.\n"); + } + + mutex_destroy(&dumpit_cb_progress_data.mtx); +} + +module_init(gnl_foobar_xmpl_module_init); +module_exit(gnl_foobar_xmpl_module_exit); \ No newline at end of file diff --git a/recipes-vrpmdv/recipes-base/vrpmdv-mon-datafile/save/rpmsg_sdb.csva b/recipes-vrpmdv/recipes-base/vrpmdv-mon-datafile/save/rpmsg_sdb.csva new file mode 100644 index 0000000..857a42c --- /dev/null +++ b/recipes-vrpmdv/recipes-base/vrpmdv-mon-datafile/save/rpmsg_sdb.csva @@ -0,0 +1,536 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (C) STMicroelectronics 2019 - All Rights Reserved + * Author: Jean-Philippe Romain + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define RPMSG_SDB_DRIVER_VERSION "1.0" + +/* + * Static global variables + */ +static const char rpmsg_sdb_driver_name[] = "stm32-rpmsg-sdb"; + +static int LastBufferId; + +struct rpmsg_sdb_ioctl_set_efd { + int bufferId, eventfd; +}; + +struct rpmsg_sdb_ioctl_get_data_size { + int bufferId; + uint32_t size; +}; + +/* ioctl numbers */ +/* _IOW means userland is writing and kernel is reading */ +/* _IOR means userland is reading and kernel is writing */ +/* _IOWR means userland and kernel can both read and write */ +#define RPMSG_SDB_IOCTL_SET_EFD _IOW('R', 0x00, struct rpmsg_sdb_ioctl_set_efd *) +#define RPMSG_SDB_IOCTL_GET_DATA_SIZE _IOWR('R', 0x01, struct rpmsg_sdb_ioctl_get_data_size *) + +struct sdb_buf_t { + int index; /* index of buffer */ + size_t size; /* buffer size */ + size_t writing_size; /* size of data written by copro */ + dma_addr_t paddr; /* physical address*/ + void *vaddr; /* virtual address */ + void *uaddr; /* mapped address for userland */ + struct eventfd_ctx *efd_ctx; /* eventfd context */ + struct list_head buflist; /* reference in the buffers list */ +}; + +struct rpmsg_sdb_t { + struct mutex mutex; /* mutex to protect the ioctls */ + struct miscdevice mdev; /* misc device ref */ + struct rpmsg_device *rpdev; /* handle rpmsg device */ + struct list_head buffer_list; /* buffer instances list */ +}; + +struct device *rpmsg_sdb_dev; + +static int rpmsg_sdb_format_txbuf_string(struct sdb_buf_t *buffer, char *bufinfo_str, size_t bufinfo_str_size) +{ + pr_debug("rpmsg_sdb(%s): Buffer index:%d, addr:%08x, size:%08x\n", + __func__, + buffer->index, + buffer->paddr, + buffer->size); + return snprintf(bufinfo_str, bufinfo_str_size, "B%dA%08xL%08x", buffer->index, buffer->paddr, buffer->size); +} + +static long rpmsg_sdb_decode_rxbuf_string(char *rxbuf_str, int *buffer_id, size_t *size) +{ + int ret = 0; + char *sub_str; + long bsize; + long bufid; + const char delimiter[2] = {'L','\0'}; + + pr_debug("rpmsg_sdb(%s): rxbuf_str:%s\n", __func__, rxbuf_str); + + /* Get first part containing the buffer id */ + sub_str = strsep(&rxbuf_str, delimiter); + + pr_debug("rpmsg_sdb(%s): sub_str:%s\n", __func__, sub_str); + + /* Save Buffer id and size: template BxLyyyyyyyy*/ + ret = kstrtol(&sub_str[1], 10, &bufid); + if (ret < 0) { + pr_err("rpmsg_sdb(ERROR): Extract of buffer id failed(%d)", ret); + goto out; + } + + ret = kstrtol(&rxbuf_str[2], 16, &bsize); + if (ret < 0) { + pr_err("rpmsg_sdb(ERROR): Extract of buffer size failed(%d)", ret); + goto out; + } + + *size = (size_t)bsize; + *buffer_id = (int)bufid; + +out: + return ret; +} + +static int rpmsg_sdb_send_buf_info(struct rpmsg_sdb_t *rpmsg_sdb, struct sdb_buf_t *buffer) +{ + int count = 0, ret = 0; + const unsigned char *tbuf; + char mybuf[32]; + int msg_size; + struct rpmsg_device *_rpdev; + + _rpdev = rpmsg_sdb->rpdev; + msg_size = rpmsg_get_buffer_size(_rpdev->ept); + + if (msg_size < 0) + return msg_size; + + count = rpmsg_sdb_format_txbuf_string(buffer, mybuf, 32); + tbuf = &mybuf[0]; + + do { + /* send a message to our remote processor */ + ret = rpmsg_send(_rpdev->ept, (void *)tbuf, + count > msg_size ? msg_size : count); + if (ret) { + dev_err(&_rpdev->dev, "rpmsg_send failed: %d\n", ret); + return ret; + } + + if (count > msg_size) { + count -= msg_size; + tbuf += msg_size; + } else { + count = 0; + } + } while (count > 0); + + return count; +} + +static int rpmsg_sdb_mmap(struct file *file, struct vm_area_struct *vma) +{ + unsigned long vsize = vma->vm_end - vma->vm_start; + unsigned long size = PAGE_ALIGN(vsize); + unsigned long NumPages = size >> PAGE_SHIFT; + unsigned long align = get_order(size); + pgprot_t prot = pgprot_noncached(vma->vm_page_prot); + struct rpmsg_sdb_t *_rpmsg_sdb; + struct sdb_buf_t *_buffer; + + if (align > CONFIG_CMA_ALIGNMENT) + align = CONFIG_CMA_ALIGNMENT; + + if (rpmsg_sdb_dev == NULL) + return -ENOMEM; + + rpmsg_sdb_dev->coherent_dma_mask = DMA_BIT_MASK(32); + rpmsg_sdb_dev->dma_mask = &rpmsg_sdb_dev->coherent_dma_mask; + + _rpmsg_sdb = container_of(file->private_data, struct rpmsg_sdb_t, + mdev); + + /* Field the last buffer entry which is the last one created */ + if (!list_empty(&_rpmsg_sdb->buffer_list)) { + _buffer = list_last_entry(&_rpmsg_sdb->buffer_list, + struct sdb_buf_t, buflist); + + _buffer->uaddr = NULL; + _buffer->size = NumPages * PAGE_SIZE; + _buffer->writing_size = -1; + _buffer->vaddr = dma_alloc_coherent(rpmsg_sdb_dev, + _buffer->size, + &_buffer->paddr, + GFP_KERNEL); + + if (!_buffer->vaddr) { + pr_err("rpmsg_sdb(ERROR): Memory allocation issue\n"); + return -ENOMEM; + } + + pr_debug("rpmsg_sdb(%s): dma_alloc_coherent done - paddr[%d]:%x - vaddr[%d]:%p\n", + __func__, + _buffer->index, + _buffer->paddr, + _buffer->index, + _buffer->vaddr); + + /* Get address for userland */ + if (remap_pfn_range(vma, vma->vm_start, + (_buffer->paddr >> PAGE_SHIFT) + vma->vm_pgoff, + size, prot)) + return -EAGAIN; + + _buffer->uaddr = (void *)vma->vm_start; + + /* Send information to remote proc */ + rpmsg_sdb_send_buf_info(_rpmsg_sdb, _buffer); + } else { + dev_err(rpmsg_sdb_dev, "No existing buffer entry exist in the list !!!"); + return -EINVAL; + } + + /* Increment for number of requested buffer */ + LastBufferId++; + + return 0; +} + +/** + * rpmsg_sdb_open - Open Session + * + * @inode: inode struct + * @file: file struct + * + * Return: + * 0 - Success + * Non-zero - Failure + */ +static int rpmsg_sdb_open(struct inode *inode, struct file *file) +{ + struct rpmsg_sdb_t *_rpmsg_sdb; + + _rpmsg_sdb = container_of(file->private_data, struct rpmsg_sdb_t, + mdev); + + /* Initialize the buffer list*/ + INIT_LIST_HEAD(&_rpmsg_sdb->buffer_list); + + mutex_init(&_rpmsg_sdb->mutex); + + return 0; +} + +/** + * rpmsg_sdb_close - Close Session + * + * @inode: inode struct + * @file: file struct + * + * Return: + * 0 - Success + * Non-zero - Failure + */ +static int rpmsg_sdb_close(struct inode *inode, struct file *file) +{ + struct rpmsg_sdb_t *_rpmsg_sdb; + struct sdb_buf_t *pos, *next; + + _rpmsg_sdb = container_of(file->private_data, struct rpmsg_sdb_t, + mdev); + + list_for_each_entry_safe(pos, next, &_rpmsg_sdb->buffer_list, buflist) { + /* Free the CMA allocation */ + pr_debug("rpmsg_sdb(%s): Free the CMA allocation: pos->size:%08x, pos->vaddr:%08x, pos->paddr:%08x\n", + __func__, + pos->size, + pos->vaddr, + pos->paddr); + + dma_free_coherent(rpmsg_sdb_dev, pos->size, pos->vaddr, + pos->paddr); + /* Remove the buffer from the list */ + list_del(&pos->buflist); + /* Free the buffer */ + kfree(pos); + } + + /* Reset LastBufferId */ + LastBufferId = 0; + + return 0; +} + +/** + * rpmsg_sdb_ioctl - IOCTL + * + * @session: ibmvmc_file_session struct + * @cmd: cmd field + * @arg: Argument field + * + * Return: + * 0 - Success + * Non-zero - Failure + */ +static long rpmsg_sdb_ioctl(struct file *file, unsigned int cmd, unsigned long arg) +{ + int idx = 0; + + struct rpmsg_sdb_t *_rpmsg_sdb; + struct sdb_buf_t *buffer, *lastbuffer; + + struct list_head *pos; + struct sdb_buf_t *datastructureptr = NULL; + + struct rpmsg_sdb_ioctl_set_efd q_set_efd; + struct rpmsg_sdb_ioctl_get_data_size q_get_dat_size; + + void __user *argp = (void __user *)arg; + + _rpmsg_sdb = container_of(file->private_data, struct rpmsg_sdb_t, + mdev); + + switch (cmd) { + case RPMSG_SDB_IOCTL_SET_EFD: + mutex_lock(&_rpmsg_sdb->mutex); + + /* Get index from the last buffer in the list */ + if (!list_empty(&_rpmsg_sdb->buffer_list)) { + lastbuffer = list_last_entry(&_rpmsg_sdb->buffer_list, struct sdb_buf_t, buflist); + idx = lastbuffer->index; + + /* Check last index was properly initiated*/ + if (lastbuffer->vaddr == NULL) { + pr_err("rpmsg_sdb(ERROR): RPMSG_SDB_IOCTL_SET_EFD - previous buffer was not allocated\n"); + mutex_unlock(&_rpmsg_sdb->mutex); + return -EBADE; + } + + /* increment this index for the next buffer creation*/ + idx++; + } + + if (copy_from_user(&q_set_efd, (struct rpmsg_sdb_ioctl_set_efd *)argp, + sizeof(struct rpmsg_sdb_ioctl_set_efd))) { + pr_err("rpmsg_sdb(ERROR): RPMSG_SDB_IOCTL_SET_EFD - copy from user failed\n"); + mutex_unlock(&_rpmsg_sdb->mutex); + return -EFAULT; + } + + /* create a new buffer which will be added in the buffer list */ + buffer = kmalloc(sizeof(struct sdb_buf_t), GFP_KERNEL); + + buffer->index = idx; + buffer->vaddr = NULL; + buffer->efd_ctx = eventfd_ctx_fdget(q_set_efd.eventfd); + list_add_tail(&buffer->buflist, &_rpmsg_sdb->buffer_list); + + mutex_unlock(&_rpmsg_sdb->mutex); + break; + + case RPMSG_SDB_IOCTL_GET_DATA_SIZE: + if (copy_from_user(&q_get_dat_size, (struct rpmsg_sdb_ioctl_get_data_size *)argp, + sizeof(struct rpmsg_sdb_ioctl_get_data_size))) { + pr_err("rpmsg_sdb(ERROR): RPMSG_SDB_IOCTL_GET_DATA_SIZE - copy from user failed\n"); + return -EFAULT; + } + + /* Get the index of the requested buffer and then look-up in the buffer list*/ + idx = q_get_dat_size.bufferId; + + list_for_each(pos, &_rpmsg_sdb->buffer_list) + { + datastructureptr = list_entry(pos, struct sdb_buf_t, buflist); + if (datastructureptr->index == idx) { + /* Get the writing size*/ + q_get_dat_size.size = datastructureptr->writing_size; + break; + } + } + + if (copy_to_user((struct rpmsg_sdb_ioctl_get_data_size *)argp, &q_get_dat_size, + sizeof(struct rpmsg_sdb_ioctl_get_data_size))) { + pr_err("rpmsg_sdb(ERROR): RPMSG_SDB_IOCTL_GET_DATA_SIZE - copy to user failed\n"); + return -EFAULT; + } + + /* Reset the writing size*/ + datastructureptr->writing_size = -1; + + break; + default: + return -EINVAL; + } + + return 0; +} + +static const struct file_operations rpmsg_sdb_fops = { + .owner = THIS_MODULE, + .unlocked_ioctl = rpmsg_sdb_ioctl, + .mmap = rpmsg_sdb_mmap, + .open = rpmsg_sdb_open, + .release = rpmsg_sdb_close, +}; + +static int rpmsg_sdb_drv_cb(struct rpmsg_device *rpdev, void *data, int len, + void *priv, u32 src) +{ + int ret = 0; + int buffer_id = 0; + size_t buffer_size; + char *rpmsg_RxBuf; + struct list_head *pos; + struct sdb_buf_t *datastructureptr = NULL; + + struct rpmsg_sdb_t *drv = dev_get_drvdata(&rpdev->dev); + + if (len == 0) { + dev_err(rpmsg_sdb_dev, "(%s) Empty lenght requested\n", __func__); + return -EINVAL; + } + + //dev_err(rpmsg_sdb_dev, "(%s) lenght: %d\n", __func__,len); + + rpmsg_RxBuf = (char *)kmalloc(len+1, GFP_KERNEL); + memcpy(rpmsg_RxBuf, data, len); + + rpmsg_RxBuf[len] = 0; + + ret = rpmsg_sdb_decode_rxbuf_string(rpmsg_RxBuf, &buffer_id, &buffer_size); + kfree(rpmsg_RxBuf); + if (ret < 0) + goto out; + + if (buffer_id > LastBufferId) { + ret = -EINVAL; + goto out; + } + + /* Signal to User space application */ + list_for_each(pos, &drv->buffer_list) + { + datastructureptr = list_entry(pos, struct sdb_buf_t, buflist); + if (datastructureptr->index == buffer_id) { + datastructureptr->writing_size = buffer_size; + + if (datastructureptr->writing_size > datastructureptr->size) { + dev_err(rpmsg_sdb_dev, "(%s) Writing size is bigger than buffer size\n", __func__); + ret = -EINVAL; + goto out; + } + + eventfd_signal(datastructureptr->efd_ctx, 1); + break; + } + /* TODO: quid if nothing find during the loop ? */ + } + +out: + return ret; +} + +static int rpmsg_sdb_drv_probe(struct rpmsg_device *rpdev) +{ + int ret = 0; + struct device *dev = &rpdev->dev; + struct rpmsg_sdb_t *rpmsg_sdb; + + rpmsg_sdb = devm_kzalloc(dev, sizeof(*rpmsg_sdb), GFP_KERNEL); + if (!rpmsg_sdb) + return -ENOMEM; + + mutex_init(&rpmsg_sdb->mutex); + + rpmsg_sdb->rpdev = rpdev; + + rpmsg_sdb->mdev.name = "rpmsg-sdb"; + rpmsg_sdb->mdev.minor = MISC_DYNAMIC_MINOR; + rpmsg_sdb->mdev.fops = &rpmsg_sdb_fops; + + dev_set_drvdata(&rpdev->dev, rpmsg_sdb); + + /* Register misc device */ + ret = misc_register(&rpmsg_sdb->mdev); + + if (ret) { + dev_err(dev, "Failed to register device\n"); + goto err_out; + } + + rpmsg_sdb_dev = rpmsg_sdb->mdev.this_device; + + dev_info(dev, "%s probed\n", rpmsg_sdb_driver_name); + +err_out: + return ret; +} + +static void rpmsg_sdb_drv_remove(struct rpmsg_device *rpmsgdev) +{ + struct rpmsg_sdb_t *drv = dev_get_drvdata(&rpmsgdev->dev); + + misc_deregister(&drv->mdev); +} + +static struct rpmsg_device_id rpmsg_driver_sdb_id_table[] = { + { .name = "rpmsg-sdb-channel" }, + { }, +}; +MODULE_DEVICE_TABLE(rpmsg, rpmsg_driver_sdb_id_table); + +static struct rpmsg_driver rpmsg_sdb_rmpsg_drv = { + .drv.name = KBUILD_MODNAME, + .drv.owner = THIS_MODULE, + .id_table = rpmsg_driver_sdb_id_table, + .probe = rpmsg_sdb_drv_probe, + .callback = rpmsg_sdb_drv_cb, + .remove = rpmsg_sdb_drv_remove, +}; + +static int __init rpmsg_sdb_drv_init(void) +{ + int ret = 0; + + /* Register rpmsg device */ + ret = register_rpmsg_driver(&rpmsg_sdb_rmpsg_drv); + + if (ret) { + pr_err("rpmsg_sdb(ERROR): Failed to register device\n"); + return ret; + } + + pr_info("rpmsg_sdb: Init done\n"); + + return ret; +} + +static void __exit rpmsg_sdb_drv_exit(void) +{ + unregister_rpmsg_driver(&rpmsg_sdb_rmpsg_drv); + pr_info("rpmsg_sdb: Exit\n"); +} + +module_init(rpmsg_sdb_drv_init); +module_exit(rpmsg_sdb_drv_exit); + + +MODULE_AUTHOR("Jean-Philippe Romain "); +MODULE_DESCRIPTION("shared data buffer over RPMSG"); +MODULE_VERSION(RPMSG_SDB_DRIVER_VERSION); +MODULE_LICENSE("GPL v2"); \ No newline at end of file diff --git a/recipes-vrpmdv/recipes-base/vrpmdv-mon-datafile/save/stm32_rpmsg_sdb (Kopie).c.old b/recipes-vrpmdv/recipes-base/vrpmdv-mon-datafile/save/stm32_rpmsg_sdb (Kopie).c.old new file mode 100644 index 0000000..5062cef --- /dev/null +++ b/recipes-vrpmdv/recipes-base/vrpmdv-mon-datafile/save/stm32_rpmsg_sdb (Kopie).c.old @@ -0,0 +1,541 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (C) STMicroelectronics 2019 - All Rights Reserved + * Author: Jean-Philippe Romain + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define RPMSG_SDB_DRIVER_VERSION "1.0" + +/* + * Static global variables + */ +static const char rpmsg_sdb_driver_name[] = "stm32-rpmsg-sdb"; + +static int LastBufferId; + +struct rpmsg_sdb_ioctl_set_efd { + int bufferId, eventfd; +}; + +struct rpmsg_sdb_ioctl_get_data_size { + int bufferId; + uint32_t size; +}; + +/* ioctl numbers */ +/* _IOW means userland is writing and kernel is reading */ +/* _IOR means userland is reading and kernel is writing */ +/* _IOWR means userland and kernel can both read and write */ +#define RPMSG_SDB_IOCTL_SET_EFD _IOW('R', 0x00, struct rpmsg_sdb_ioctl_set_efd *) +#define RPMSG_SDB_IOCTL_GET_DATA_SIZE _IOWR('R', 0x01, struct rpmsg_sdb_ioctl_get_data_size *) + +struct sdb_buf_t { + int index; /* index of buffer */ + size_t size; /* buffer size */ + size_t writing_size; /* size of data written by copro */ + dma_addr_t paddr; /* physical address*/ + void *vaddr; /* virtual address */ + void *uaddr; /* mapped address for userland */ + struct eventfd_ctx *efd_ctx; /* eventfd context */ + struct list_head buflist; /* reference in the buffers list */ +}; + +struct rpmsg_sdb_t { + struct mutex mutex; /* mutex to protect the ioctls */ + struct miscdevice mdev; /* misc device ref */ + struct rpmsg_device *rpdev; /* handle rpmsg device */ + struct list_head buffer_list; /* buffer instances list */ +}; + +struct device *rpmsg_sdb_dev; + +static int rpmsg_sdb_format_txbuf_string(struct sdb_buf_t *buffer, char *bufinfo_str, size_t bufinfo_str_size) +{ + pr_debug("rpmsg_sdb(%s): Buffer index:%d, addr:%08x, size:%08x\n", + __func__, + buffer->index, + buffer->paddr, + buffer->size); + return snprintf(bufinfo_str, bufinfo_str_size, "B%dA%08xL%08x", buffer->index, buffer->paddr, buffer->size); +} + +static long rpmsg_sdb_decode_rxbuf_string(char *rxbuf_str, int *buffer_id, size_t *size) +{ + int ret = 0; + char *sub_str; + long bsize; + long bufid; + const char delimiter[2] = {'L','\0'}; + + pr_debug("rpmsg_sdb(%s): rxbuf_str:%s\n", __func__, rxbuf_str); + + /* Get first part containing the buffer id */ + sub_str = strsep(&rxbuf_str, delimiter); + + pr_debug("rpmsg_sdb(%s): sub_str:%s\n", __func__, sub_str); + + /* Save Buffer id and size: template BxLyyyyyyyy*/ + ret = kstrtol(&sub_str[1], 10, &bufid); + if (ret < 0) { + pr_err("rpmsg_sdb(ERROR): Extract of buffer id failed(%d)", ret); + goto out; + } + + ret = kstrtol(&rxbuf_str[2], 16, &bsize); + if (ret < 0) { + pr_err("rpmsg_sdb(ERROR): Extract of buffer size failed(%d)", ret); + goto out; + } + + *size = (size_t)bsize; + *buffer_id = (int)bufid; + +out: + return ret; +} + +static int rpmsg_sdb_send_buf_info(struct rpmsg_sdb_t *rpmsg_sdb, struct sdb_buf_t *buffer) +{ + int count = 0, ret = 0; + const unsigned char *tbuf; + char mybuf[32]; + int msg_size; + struct rpmsg_device *_rpdev; + + _rpdev = rpmsg_sdb->rpdev; + msg_size = rpmsg_get_mtu(_rpdev->ept); + + if (msg_size < 0) + return msg_size; + + count = rpmsg_sdb_format_txbuf_string(buffer, mybuf, 32); + tbuf = &mybuf[0]; + + do { + /* send a message to our remote processor */ + ret = rpmsg_send(_rpdev->ept, (void *)tbuf, + count > msg_size ? msg_size : count); + if (ret) { + dev_err(&_rpdev->dev, "rpmsg_send failed: %d\n", ret); + return ret; + } + + if (count > msg_size) { + count -= msg_size; + tbuf += msg_size; + } else { + count = 0; + } + } while (count > 0); + + return count; +} + +static int rpmsg_sdb_mmap(struct file *file, struct vm_area_struct *vma) +{ + unsigned long vsize = vma->vm_end - vma->vm_start; + unsigned long size = PAGE_ALIGN(vsize); + unsigned long NumPages = size >> PAGE_SHIFT; + unsigned long align = get_order(size); + pgprot_t prot = pgprot_noncached(vma->vm_page_prot); + struct rpmsg_sdb_t *_rpmsg_sdb; + struct sdb_buf_t *_buffer; + + if (align > CONFIG_CMA_ALIGNMENT) + align = CONFIG_CMA_ALIGNMENT; + + if (rpmsg_sdb_dev == NULL) + return -ENOMEM; + + rpmsg_sdb_dev->coherent_dma_mask = DMA_BIT_MASK(32); + rpmsg_sdb_dev->dma_mask = &rpmsg_sdb_dev->coherent_dma_mask; + + _rpmsg_sdb = container_of(file->private_data, struct rpmsg_sdb_t, + mdev); + + /* Field the last buffer entry which is the last one created */ + if (!list_empty(&_rpmsg_sdb->buffer_list)) { + _buffer = list_last_entry(&_rpmsg_sdb->buffer_list, + struct sdb_buf_t, buflist); + + _buffer->uaddr = NULL; + _buffer->size = NumPages * PAGE_SIZE; + _buffer->writing_size = -1; + _buffer->vaddr = dma_alloc_coherent(rpmsg_sdb_dev, + _buffer->size, + &_buffer->paddr, + GFP_KERNEL); + + if (!_buffer->vaddr) { + pr_err("rpmsg_sdb(ERROR): Memory allocation issue\n"); + return -ENOMEM; + } + + pr_debug("rpmsg_sdb(%s): dma_alloc_coherent done - paddr[%d]:%x - vaddr[%d]:%p\n", + __func__, + _buffer->index, + _buffer->paddr, + _buffer->index, + _buffer->vaddr); + + /* Get address for userland */ + if (remap_pfn_range(vma, vma->vm_start, + (_buffer->paddr >> PAGE_SHIFT) + vma->vm_pgoff, + size, prot)) + return -EAGAIN; + + _buffer->uaddr = (void *)vma->vm_start; + + /* Send information to remote proc */ + rpmsg_sdb_send_buf_info(_rpmsg_sdb, _buffer); + } else { + dev_err(rpmsg_sdb_dev, "No existing buffer entry exist in the list !!!"); + return -EINVAL; + } + + /* Increment for number of requested buffer */ + LastBufferId++; + + return 0; +} + +/** + * rpmsg_sdb_open - Open Session + * + * @inode: inode struct + * @file: file struct + * + * Return: + * 0 - Success + * Non-zero - Failure + */ +static int rpmsg_sdb_open(struct inode *inode, struct file *file) +{ + struct rpmsg_sdb_t *_rpmsg_sdb; + + _rpmsg_sdb = container_of(file->private_data, struct rpmsg_sdb_t, + mdev); + + /* Initialize the buffer list*/ + INIT_LIST_HEAD(&_rpmsg_sdb->buffer_list); + + mutex_init(&_rpmsg_sdb->mutex); + + return 0; +} + +/** + * rpmsg_sdb_close - Close Session + * + * @inode: inode struct + * @file: file struct + * + * Return: + * 0 - Success + * Non-zero - Failure + */ +static int rpmsg_sdb_close(struct inode *inode, struct file *file) +{ + struct rpmsg_sdb_t *_rpmsg_sdb; + struct sdb_buf_t *pos, *next; + + _rpmsg_sdb = container_of(file->private_data, struct rpmsg_sdb_t, + mdev); + + list_for_each_entry_safe(pos, next, &_rpmsg_sdb->buffer_list, buflist) { + /* Free the CMA allocation */ + pr_debug("rpmsg_sdb(%s): Free the CMA allocation: pos->size:%08x, pos->vaddr:%08x, pos->paddr:%08x\n", + __func__, + pos->size, + pos->vaddr, + pos->paddr); + + dma_free_coherent(rpmsg_sdb_dev, pos->size, pos->vaddr, + pos->paddr); + /* Remove the buffer from the list */ + list_del(&pos->buflist); + /* Free the buffer */ + kfree(pos); + } + + /* Reset LastBufferId */ + LastBufferId = 0; + + return 0; +} + +/** + * rpmsg_sdb_ioctl - IOCTL + * + * @session: ibmvmc_file_session struct + * @cmd: cmd field + * @arg: Argument field + * + * Return: + * 0 - Success + * Non-zero - Failure + */ +static long rpmsg_sdb_ioctl(struct file *file, unsigned int cmd, unsigned long arg) +{ + int idx = 0; + + struct rpmsg_sdb_t *_rpmsg_sdb; + struct sdb_buf_t *buffer, *lastbuffer; + + struct list_head *pos; + struct sdb_buf_t *datastructureptr = NULL; + + struct rpmsg_sdb_ioctl_set_efd q_set_efd; + struct rpmsg_sdb_ioctl_get_data_size q_get_dat_size; + + void __user *argp = (void __user *)arg; + + _rpmsg_sdb = container_of(file->private_data, struct rpmsg_sdb_t, + mdev); + + switch (cmd) { + case RPMSG_SDB_IOCTL_SET_EFD: + mutex_lock(&_rpmsg_sdb->mutex); + + /* Get index from the last buffer in the list */ + if (!list_empty(&_rpmsg_sdb->buffer_list)) { + lastbuffer = list_last_entry(&_rpmsg_sdb->buffer_list, struct sdb_buf_t, buflist); + idx = lastbuffer->index; + + /* Check last index was properly initiated*/ + if (lastbuffer->vaddr == NULL) { + pr_err("rpmsg_sdb(ERROR): RPMSG_SDB_IOCTL_SET_EFD - previous buffer was not allocated\n"); + mutex_unlock(&_rpmsg_sdb->mutex); + return -EBADE; + } + + /* increment this index for the next buffer creation*/ + idx++; + } + + if (copy_from_user(&q_set_efd, (struct rpmsg_sdb_ioctl_set_efd *)argp, + sizeof(struct rpmsg_sdb_ioctl_set_efd))) { + pr_err("rpmsg_sdb(ERROR): RPMSG_SDB_IOCTL_SET_EFD - copy from user failed\n"); + mutex_unlock(&_rpmsg_sdb->mutex); + return -EFAULT; + } + + /* create a new buffer which will be added in the buffer list */ + buffer = kmalloc(sizeof(struct sdb_buf_t), GFP_KERNEL); + + buffer->index = idx; + buffer->vaddr = NULL; + buffer->efd_ctx = eventfd_ctx_fdget(q_set_efd.eventfd); + list_add_tail(&buffer->buflist, &_rpmsg_sdb->buffer_list); + + mutex_unlock(&_rpmsg_sdb->mutex); + break; + + case RPMSG_SDB_IOCTL_GET_DATA_SIZE: + if (copy_from_user(&q_get_dat_size, (struct rpmsg_sdb_ioctl_get_data_size *)argp, + sizeof(struct rpmsg_sdb_ioctl_get_data_size))) { + pr_err("rpmsg_sdb(ERROR): RPMSG_SDB_IOCTL_GET_DATA_SIZE - copy from user failed\n"); + return -EFAULT; + } + + /* Get the index of the requested buffer and then look-up in the buffer list*/ + idx = q_get_dat_size.bufferId; + + list_for_each(pos, &_rpmsg_sdb->buffer_list) + { + datastructureptr = list_entry(pos, struct sdb_buf_t, buflist); + if (datastructureptr->index == idx) { + /* Get the writing size*/ + q_get_dat_size.size = datastructureptr->writing_size; + break; + } + } + + if (copy_to_user((struct rpmsg_sdb_ioctl_get_data_size *)argp, &q_get_dat_size, + sizeof(struct rpmsg_sdb_ioctl_get_data_size))) { + pr_err("rpmsg_sdb(ERROR): RPMSG_SDB_IOCTL_GET_DATA_SIZE - copy to user failed\n"); + return -EFAULT; + } + + /* Reset the writing size*/ + datastructureptr->writing_size = -1; + + break; + default: + return -EINVAL; + } + + return 0; +} + +static const struct file_operations rpmsg_sdb_fops = { + .owner = THIS_MODULE, + .unlocked_ioctl = rpmsg_sdb_ioctl, + .mmap = rpmsg_sdb_mmap, + .open = rpmsg_sdb_open, + .release = rpmsg_sdb_close, +}; + +static int rpmsg_sdb_drv_cb(struct rpmsg_device *rpdev, void *data, int len, + void *priv, u32 src) +{ + int ret = 0; + int buffer_id = 0; + size_t buffer_size; + char *rpmsg_RxBuf; + struct list_head *pos; + struct sdb_buf_t *datastructureptr = NULL; + + struct rpmsg_sdb_t *drv = dev_get_drvdata(&rpdev->dev); + + if (len == 0) { + dev_err(rpmsg_sdb_dev, "(%s) Empty lenght requested\n", __func__); + return -EINVAL; + } + + //dev_err(rpmsg_sdb_dev, "(%s) lenght: %d\n", __func__,len); + + rpmsg_RxBuf = (char *)kmalloc(len+1, GFP_KERNEL); + memcpy(rpmsg_RxBuf, data, len); + + rpmsg_RxBuf[len] = 0; + + ret = rpmsg_sdb_decode_rxbuf_string(rpmsg_RxBuf, &buffer_id, &buffer_size); + kfree(rpmsg_RxBuf); + if (ret < 0) + goto out; + + if (buffer_id > LastBufferId) { + ret = -EINVAL; + goto out; + } + + /* Signal to User space application */ + list_for_each(pos, &drv->buffer_list) + { + datastructureptr = list_entry(pos, struct sdb_buf_t, buflist); + if (datastructureptr->index == buffer_id) { + datastructureptr->writing_size = buffer_size; + + if (datastructureptr->writing_size > datastructureptr->size) { + dev_err(rpmsg_sdb_dev, "(%s) Writing size is bigger than buffer size\n", __func__); + ret = -EINVAL; + goto out; + } + + eventfd_signal(datastructureptr->efd_ctx, 1); + break; + } + /* TODO: quid if nothing find during the loop ? */ + } + +out: + return ret; +} + +static int rpmsg_sdb_drv_probe(struct rpmsg_device *rpdev) +{ + int ret = 0; + struct device *dev = &rpdev->dev; + struct rpmsg_sdb_t *rpmsg_sdb; + + pr_info("rpmsg_sdb: registering startetd\n"); + + rpmsg_sdb = devm_kzalloc(dev, sizeof(*rpmsg_sdb), GFP_KERNEL); + if (!rpmsg_sdb) + return -ENOMEM; + + mutex_init(&rpmsg_sdb->mutex); + + rpmsg_sdb->rpdev = rpdev; + + rpmsg_sdb->mdev.name = "rpmsg-sdb"; + rpmsg_sdb->mdev.minor = MISC_DYNAMIC_MINOR; + rpmsg_sdb->mdev.fops = &rpmsg_sdb_fops; + + pr_info("rpmsg_sdb: Set Driver data\n"); + dev_set_drvdata(&rpdev->dev, rpmsg_sdb); + + /* Register misc device */ + ret = misc_register(&rpmsg_sdb->mdev); + + if (ret) { + dev_err(dev, "Failed to register device\n"); + pr_info("rpmsg_sdb: Failed to register device\n"); + goto err_out; + } + + rpmsg_sdb_dev = rpmsg_sdb->mdev.this_device; + + pr_info("rpmsg_sdb: Failed to register device\n"); + dev_info(dev, "%s probed\n", rpmsg_sdb_driver_name); + +err_out: + return ret; +} + +static void rpmsg_sdb_drv_remove(struct rpmsg_device *rpmsgdev) +{ + struct rpmsg_sdb_t *drv = dev_get_drvdata(&rpmsgdev->dev); + + misc_deregister(&drv->mdev); +} + +static struct rpmsg_device_id rpmsg_driver_sdb_id_table[] = { + { .name = "rpmsg-sdb-channel" }, + { }, +}; +MODULE_DEVICE_TABLE(rpmsg, rpmsg_driver_sdb_id_table); + +static struct rpmsg_driver rpmsg_sdb_rmpsg_drv = { + .drv.name = KBUILD_MODNAME, + .drv.owner = THIS_MODULE, + .id_table = rpmsg_driver_sdb_id_table, + .probe = rpmsg_sdb_drv_probe, + .callback = rpmsg_sdb_drv_cb, + .remove = rpmsg_sdb_drv_remove, +}; + +static int __init rpmsg_sdb_drv_init(void) +{ + int ret = 0; + + /* Register rpmsg device */ + ret = register_rpmsg_driver(&rpmsg_sdb_rmpsg_drv); + + if (ret) { + pr_err("rpmsg_sdb(ERROR): Failed to register device\n"); + return ret; + } + + pr_info("rpmsg_sdb: Init done\n"); + + return ret; +} + +static void __exit rpmsg_sdb_drv_exit(void) +{ + unregister_rpmsg_driver(&rpmsg_sdb_rmpsg_drv); + pr_info("rpmsg_sdb: Exit\n"); +} + +module_init(rpmsg_sdb_drv_init); +module_exit(rpmsg_sdb_drv_exit); + + +MODULE_AUTHOR("Jean-Philippe Romain "); +MODULE_DESCRIPTION("shared data buffer over RPMSG"); +MODULE_VERSION(RPMSG_SDB_DRIVER_VERSION); +MODULE_LICENSE("GPL v2"); diff --git a/recipes-vrpmdv/recipes-base/vrpmdv-mon-datafile/save/ttyrpmsg.csave b/recipes-vrpmdv/recipes-base/vrpmdv-mon-datafile/save/ttyrpmsg.csave new file mode 100644 index 0000000..ec89035 --- /dev/null +++ b/recipes-vrpmdv/recipes-base/vrpmdv-mon-datafile/save/ttyrpmsg.csave @@ -0,0 +1,287 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2021 STMicroelectronics - All Rights Reserved + * + * The rpmsg tty driver implements serial communication on the RPMsg bus to makes + * possible for user-space programs to send and receive rpmsg messages as a standard + * tty protocol. + * + * The remote processor can instantiate a new tty by requesting a "rpmsg-tty" RPMsg service. + * The "rpmsg-tty" service is directly used for data exchange. No flow control is implemented yet. + */ + +#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt + +#include +#include +#include +#include +#include + +#define RPMSG_TTY_NAME "ttyRPMSG" +#define MAX_TTY_RPMSG 32 + +static DEFINE_IDR(tty_idr); /* tty instance id */ +static DEFINE_MUTEX(idr_lock); /* protects tty_idr */ + +static struct tty_driver *rpmsg_tty_driver; + +struct rpmsg_tty_port { + struct tty_port port; /* TTY port data */ + int id; /* TTY rpmsg index */ + struct rpmsg_device *rpdev; /* rpmsg device */ +}; + +static int rpmsg_tty_cb(struct rpmsg_device *rpdev, void *data, int len, void *priv, u32 src) +{ + struct rpmsg_tty_port *cport = dev_get_drvdata(&rpdev->dev); + int copied; + + if (!len) + return -EINVAL; + copied = tty_insert_flip_string(&cport->port, data, len); + if (copied != len) + dev_err_ratelimited(&rpdev->dev, "Trunc buffer: available space is %d\n", copied); + tty_flip_buffer_push(&cport->port); + + return 0; +} + +static int rpmsg_tty_install(struct tty_driver *driver, struct tty_struct *tty) +{ + struct rpmsg_tty_port *cport = idr_find(&tty_idr, tty->index); + struct tty_port *port; + + tty->driver_data = cport; + + port = tty_port_get(&cport->port); + return tty_port_install(port, driver, tty); +} + +static void rpmsg_tty_cleanup(struct tty_struct *tty) +{ + tty_port_put(tty->port); +} + +static int rpmsg_tty_open(struct tty_struct *tty, struct file *filp) +{ + return tty_port_open(tty->port, tty, filp); +} + +static void rpmsg_tty_close(struct tty_struct *tty, struct file *filp) +{ + return tty_port_close(tty->port, tty, filp); +} + +static int rpmsg_tty_write(struct tty_struct *tty, const u8 *buf, int len) +{ + struct rpmsg_tty_port *cport = tty->driver_data; + struct rpmsg_device *rpdev; + int msg_max_size, msg_size; + int ret; + + rpdev = cport->rpdev; + + msg_max_size = rpmsg_get_mtu(rpdev->ept); + if (msg_max_size < 0) + return msg_max_size; + + msg_size = min(len, msg_max_size); + + /* + * Use rpmsg_trysend instead of rpmsg_send to send the message so the caller is not + * hung until a rpmsg buffer is available. In such case rpmsg_trysend returns -ENOMEM. + */ + ret = rpmsg_trysend(rpdev->ept, (void *)buf, msg_size); + if (ret) { + dev_dbg_ratelimited(&rpdev->dev, "rpmsg_send failed: %d\n", ret); + return ret; + } + + return msg_size; +} + +static unsigned int rpmsg_tty_write_room(struct tty_struct *tty) +{ + struct rpmsg_tty_port *cport = tty->driver_data; + int size; + + size = rpmsg_get_mtu(cport->rpdev->ept); + if (size < 0) + return 0; + + return size; +} + +static void rpmsg_tty_hangup(struct tty_struct *tty) +{ + tty_port_hangup(tty->port); +} + +static const struct tty_operations rpmsg_tty_ops = { + .install = rpmsg_tty_install, + .open = rpmsg_tty_open, + .close = rpmsg_tty_close, + .write = rpmsg_tty_write, + .write_room = rpmsg_tty_write_room, + .hangup = rpmsg_tty_hangup, + .cleanup = rpmsg_tty_cleanup, +}; + +static struct rpmsg_tty_port *rpmsg_tty_alloc_cport(void) +{ + struct rpmsg_tty_port *cport; + int ret; + + cport = kzalloc(sizeof(*cport), GFP_KERNEL); + if (!cport) + return ERR_PTR(-ENOMEM); + + mutex_lock(&idr_lock); + ret = idr_alloc(&tty_idr, cport, 0, MAX_TTY_RPMSG, GFP_KERNEL); + mutex_unlock(&idr_lock); + + if (ret < 0) { + kfree(cport); + return ERR_PTR(ret); + } + + cport->id = ret; + + return cport; +} + +static void rpmsg_tty_destruct_port(struct tty_port *port) +{ + struct rpmsg_tty_port *cport = container_of(port, struct rpmsg_tty_port, port); + + mutex_lock(&idr_lock); + idr_remove(&tty_idr, cport->id); + mutex_unlock(&idr_lock); + + kfree(cport); +} + +static const struct tty_port_operations rpmsg_tty_port_ops = { + .destruct = rpmsg_tty_destruct_port, +}; + + +static int rpmsg_tty_probe(struct rpmsg_device *rpdev) +{ + struct rpmsg_tty_port *cport; + struct device *dev = &rpdev->dev; + struct device *tty_dev; + int ret; + + cport = rpmsg_tty_alloc_cport(); + if (IS_ERR(cport)) + return dev_err_probe(dev, PTR_ERR(cport), "Failed to alloc tty port\n"); + + tty_port_init(&cport->port); + cport->port.ops = &rpmsg_tty_port_ops; + + tty_dev = tty_port_register_device(&cport->port, rpmsg_tty_driver, + cport->id, dev); + if (IS_ERR(tty_dev)) { + ret = dev_err_probe(dev, PTR_ERR(tty_dev), "Failed to register tty port\n"); + tty_port_put(&cport->port); + return ret; + } + + cport->rpdev = rpdev; + + dev_set_drvdata(dev, cport); + + dev_dbg(dev, "New channel: 0x%x -> 0x%x: " RPMSG_TTY_NAME "%d\n", + rpdev->src, rpdev->dst, cport->id); + + return 0; +} + +static void rpmsg_tty_remove(struct rpmsg_device *rpdev) +{ + struct rpmsg_tty_port *cport = dev_get_drvdata(&rpdev->dev); + + dev_dbg(&rpdev->dev, "Removing rpmsg tty device %d\n", cport->id); + + /* User hang up to release the tty */ + tty_port_tty_hangup(&cport->port, false); + + tty_unregister_device(rpmsg_tty_driver, cport->id); + + tty_port_put(&cport->port); +} + +static struct rpmsg_device_id rpmsg_driver_tty_id_table[] = { + { .name = "rpmsg-tty" }, + { }, +}; +MODULE_DEVICE_TABLE(rpmsg, rpmsg_driver_tty_id_table); + +static struct rpmsg_driver rpmsg_tty_rpmsg_drv = { + .drv.name = KBUILD_MODNAME, + .id_table = rpmsg_driver_tty_id_table, + .probe = rpmsg_tty_probe, + .callback = rpmsg_tty_cb, + .remove = rpmsg_tty_remove, +}; + +static int __init rpmsg_tty_init(void) +{ + int ret; + + rpmsg_tty_driver = tty_alloc_driver(MAX_TTY_RPMSG, TTY_DRIVER_REAL_RAW | + TTY_DRIVER_DYNAMIC_DEV); + if (IS_ERR(rpmsg_tty_driver)) + return PTR_ERR(rpmsg_tty_driver); + + rpmsg_tty_driver->driver_name = "rpmsg_tty"; + rpmsg_tty_driver->name = RPMSG_TTY_NAME; + rpmsg_tty_driver->major = 0; + rpmsg_tty_driver->type = TTY_DRIVER_TYPE_CONSOLE; + + /* Disable unused mode by default */ + rpmsg_tty_driver->init_termios = tty_std_termios; + rpmsg_tty_driver->init_termios.c_lflag &= ~(ECHO | ICANON); + rpmsg_tty_driver->init_termios.c_oflag &= ~(OPOST | ONLCR); + + tty_set_operations(rpmsg_tty_driver, &rpmsg_tty_ops); + + ret = tty_register_driver(rpmsg_tty_driver); + if (ret < 0) { + pr_err("Couldn't install driver: %d\n", ret); + goto error_put; + } + + ret = register_rpmsg_driver(&rpmsg_tty_rpmsg_drv); + if (ret < 0) { + pr_err("Couldn't register driver: %d\n", ret); + goto error_unregister; + } + + return 0; + +error_unregister: + tty_unregister_driver(rpmsg_tty_driver); + +error_put: + tty_driver_kref_put(rpmsg_tty_driver); + + return ret; +} + +static void __exit rpmsg_tty_exit(void) +{ + unregister_rpmsg_driver(&rpmsg_tty_rpmsg_drv); + tty_unregister_driver(rpmsg_tty_driver); + tty_driver_kref_put(rpmsg_tty_driver); + idr_destroy(&tty_idr); +} + +module_init(rpmsg_tty_init); +module_exit(rpmsg_tty_exit); + +MODULE_AUTHOR("Arnaud Pouliquen "); +MODULE_DESCRIPTION("remote processor messaging tty driver"); +MODULE_LICENSE("GPL v2"); \ No newline at end of file diff --git a/recipes-vrpmdv/recipes-base/vrpmdv-mon-datafile/save/vrpmdv-mon-datafile (Kopie).c.save b/recipes-vrpmdv/recipes-base/vrpmdv-mon-datafile/save/vrpmdv-mon-datafile (Kopie).c.save new file mode 100644 index 0000000..844a67d --- /dev/null +++ b/recipes-vrpmdv/recipes-base/vrpmdv-mon-datafile/save/vrpmdv-mon-datafile (Kopie).c.save @@ -0,0 +1,553 @@ +/* Copyright 2024 Markus Lehr + * + * + * This Software is owned by Markus Lehr. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, + * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A + * PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +// ################################################################################################## +/* + * This is a Linux kernel module/driver called "vrpmdv-monitoring-cmd " which holds the family ID + * and functions to handle the monitoring in a Generic Netlink in the kernel. + * "It registers a Netlink family called "vrpmdv-monitoring_cmd". + * + * + * You can find some more interesting documentation about Generic Netlink here: + * "Generic Netlink HOW-TO based on Jamal's original doc" https://lwn.net/Articles/208755/ + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define VRPMDV_MON_DRIVER_VERSION "1.0" + +/* + * Static global variables + */ +static const char rpmsg_sdb_driver_name[] = "vrpmdv-mon-datafile"; + +static int LastBufferId; + +struct rpmsg_sdb_ioctl_set_efd { + int bufferId, eventfd; +}; + +struct rpmsg_sdb_ioctl_get_data_size { + int bufferId; + uint32_t size; +}; + +/* ioctl numbers */ +/* _IOW means userland is writing and kernel is reading */ +/* _IOR means userland is reading and kernel is writing */ +/* _IOWR means userland and kernel can both read and write */ +#define RPMSG_SDB_IOCTL_SET_EFD _IOW('R', 0x00, struct rpmsg_sdb_ioctl_set_efd *) +#define RPMSG_SDB_IOCTL_GET_DATA_SIZE _IOWR('R', 0x01, struct rpmsg_sdb_ioctl_get_data_size *) + +struct sdb_buf_t { + int index; /* index of buffer */ + size_t size; /* buffer size */ + size_t writing_size; /* size of data written by copro */ + dma_addr_t paddr; /* physical address*/ + void *vaddr; /* virtual address */ + void *uaddr; /* mapped address for userland */ + struct eventfd_ctx *efd_ctx; /* eventfd context */ + struct list_head buflist; /* reference in the buffers list */ +}; + +struct rpmsg_sdb_t { + struct mutex mutex; /* mutex to protect the ioctls */ + struct miscdevice mdev; /* misc device ref */ + struct rpmsg_device *rpdev; /* handle rpmsg device */ + struct list_head buffer_list; /* buffer instances list */ +}; + +struct device *rpmsg_sdb_dev; + +static int rpmsg_sdb_format_txbuf_string(struct sdb_buf_t *buffer, char *bufinfo_str, size_t bufinfo_str_size) +{ + pr_debug("rpmsg_sdb(%s): Buffer index:%d, addr:%08x, size:%08x\n", + __func__, + buffer->index, + buffer->paddr, + buffer->size); + return snprintf(bufinfo_str, bufinfo_str_size, "B%dA%08xL%08x", buffer->index, buffer->paddr, buffer->size); +} + +static long rpmsg_sdb_decode_rxbuf_string(char *rxbuf_str, int *buffer_id, size_t *size) +{ + int ret = 0; + char *sub_str; + long bsize; + long bufid; + const char delimiter[2] = {'L','\0'}; + + pr_debug("rpmsg_sdb(%s): rxbuf_str:%s\n", __func__, rxbuf_str); + + /* Get first part containing the buffer id */ + sub_str = strsep(&rxbuf_str, delimiter); + + pr_debug("rpmsg_sdb(%s): sub_str:%s\n", __func__, sub_str); + + /* Save Buffer id and size: template BxLyyyyyyyy*/ + ret = kstrtol(&sub_str[1], 10, &bufid); + if (ret < 0) { + pr_err("rpmsg_sdb(ERROR): Extract of buffer id failed(%d)", ret); + goto out; + } + + ret = kstrtol(&rxbuf_str[2], 16, &bsize); + if (ret < 0) { + pr_err("rpmsg_sdb(ERROR): Extract of buffer size failed(%d)", ret); + goto out; + } + + *size = (size_t)bsize; + *buffer_id = (int)bufid; + +out: + return ret; +} + +static int rpmsg_sdb_send_buf_info(struct rpmsg_sdb_t *rpmsg_sdb, struct sdb_buf_t *buffer) +{ + int count = 0, ret = 0; + const unsigned char *tbuf; + char mybuf[32]; + int msg_size; + struct rpmsg_device *_rpdev; + + _rpdev = rpmsg_sdb->rpdev; + msg_size = rpmsg_get_mtu(_rpdev->ept); + + if (msg_size < 0) + return msg_size; + + count = rpmsg_sdb_format_txbuf_string(buffer, mybuf, 32); + tbuf = &mybuf[0]; + + do { + /* send a message to our remote processor */ + ret = rpmsg_send(_rpdev->ept, (void *)tbuf, + count > msg_size ? msg_size : count); + if (ret) { + dev_err(&_rpdev->dev, "rpmsg_send failed: %d\n", ret); + return ret; + } + + if (count > msg_size) { + count -= msg_size; + tbuf += msg_size; + } else { + count = 0; + } + } while (count > 0); + + return count; +} + +static int rpmsg_sdb_mmap(struct file *file, struct vm_area_struct *vma) +{ + unsigned long vsize = vma->vm_end - vma->vm_start; + unsigned long size = PAGE_ALIGN(vsize); + unsigned long NumPages = size >> PAGE_SHIFT; + unsigned long align = get_order(size); + pgprot_t prot = pgprot_noncached(vma->vm_page_prot); + struct rpmsg_sdb_t *_rpmsg_sdb; + struct sdb_buf_t *_buffer; + + if (align > CONFIG_CMA_ALIGNMENT) + align = CONFIG_CMA_ALIGNMENT; + + if (rpmsg_sdb_dev == NULL) + return -ENOMEM; + + rpmsg_sdb_dev->coherent_dma_mask = DMA_BIT_MASK(32); + rpmsg_sdb_dev->dma_mask = &rpmsg_sdb_dev->coherent_dma_mask; + + _rpmsg_sdb = container_of(file->private_data, struct rpmsg_sdb_t, + mdev); + + /* Field the last buffer entry which is the last one created */ + if (!list_empty(&_rpmsg_sdb->buffer_list)) { + _buffer = list_last_entry(&_rpmsg_sdb->buffer_list, + struct sdb_buf_t, buflist); + + _buffer->uaddr = NULL; + _buffer->size = NumPages * PAGE_SIZE; + _buffer->writing_size = -1; + _buffer->vaddr = dma_alloc_coherent(rpmsg_sdb_dev, + _buffer->size, + &_buffer->paddr, + GFP_KERNEL); + + if (!_buffer->vaddr) { + pr_err("rpmsg_sdb(ERROR): Memory allocation issue\n"); + return -ENOMEM; + } + + pr_debug("rpmsg_sdb(%s): dma_alloc_coherent done - paddr[%d]:%x - vaddr[%d]:%p\n", + __func__, + _buffer->index, + _buffer->paddr, + _buffer->index, + _buffer->vaddr); + + /* Get address for userland */ + if (remap_pfn_range(vma, vma->vm_start, + (_buffer->paddr >> PAGE_SHIFT) + vma->vm_pgoff, + size, prot)) + return -EAGAIN; + + _buffer->uaddr = (void *)vma->vm_start; + + /* Send information to remote proc */ + rpmsg_sdb_send_buf_info(_rpmsg_sdb, _buffer); + } else { + dev_err(rpmsg_sdb_dev, "No existing buffer entry exist in the list !!!"); + return -EINVAL; + } + + /* Increment for number of requested buffer */ + LastBufferId++; + + return 0; +} + +/** + * rpmsg_sdb_open - Open Session + * + * @inode: inode struct + * @file: file struct + * + * Return: + * 0 - Success + * Non-zero - Failure + */ +static int rpmsg_sdb_open(struct inode *inode, struct file *file) +{ + struct rpmsg_sdb_t *_rpmsg_sdb; + + _rpmsg_sdb = container_of(file->private_data, struct rpmsg_sdb_t, + mdev); + + /* Initialize the buffer list*/ + INIT_LIST_HEAD(&_rpmsg_sdb->buffer_list); + + mutex_init(&_rpmsg_sdb->mutex); + + return 0; +} + +/** + * rpmsg_sdb_close - Close Session + * + * @inode: inode struct + * @file: file struct + * + * Return: + * 0 - Success + * Non-zero - Failure + */ +static int rpmsg_sdb_close(struct inode *inode, struct file *file) +{ + struct rpmsg_sdb_t *_rpmsg_sdb; + struct sdb_buf_t *pos, *next; + + _rpmsg_sdb = container_of(file->private_data, struct rpmsg_sdb_t, + mdev); + + list_for_each_entry_safe(pos, next, &_rpmsg_sdb->buffer_list, buflist) { + /* Free the CMA allocation */ + pr_debug("rpmsg_sdb(%s): Free the CMA allocation: pos->size:%08x, pos->vaddr:%08x, pos->paddr:%08x\n", + __func__, + pos->size, + pos->vaddr, + pos->paddr); + + dma_free_coherent(rpmsg_sdb_dev, pos->size, pos->vaddr, + pos->paddr); + /* Remove the buffer from the list */ + list_del(&pos->buflist); + /* Free the buffer */ + kfree(pos); + } + + /* Reset LastBufferId */ + LastBufferId = 0; + + return 0; +} + +/** + * rpmsg_sdb_ioctl - IOCTL + * + * @session: ibmvmc_file_session struct + * @cmd: cmd field + * @arg: Argument field + * + * Return: + * 0 - Success + * Non-zero - Failure + */ +static long rpmsg_sdb_ioctl(struct file *file, unsigned int cmd, unsigned long arg) +{ + int idx = 0; + + struct rpmsg_sdb_t *_rpmsg_sdb; + struct sdb_buf_t *buffer, *lastbuffer; + + struct list_head *pos; + struct sdb_buf_t *datastructureptr = NULL; + + struct rpmsg_sdb_ioctl_set_efd q_set_efd; + struct rpmsg_sdb_ioctl_get_data_size q_get_dat_size; + + void __user *argp = (void __user *)arg; + + _rpmsg_sdb = container_of(file->private_data, struct rpmsg_sdb_t, + mdev); + + switch (cmd) { + case RPMSG_SDB_IOCTL_SET_EFD: + mutex_lock(&_rpmsg_sdb->mutex); + + /* Get index from the last buffer in the list */ + if (!list_empty(&_rpmsg_sdb->buffer_list)) { + lastbuffer = list_last_entry(&_rpmsg_sdb->buffer_list, struct sdb_buf_t, buflist); + idx = lastbuffer->index; + + /* Check last index was properly initiated*/ + if (lastbuffer->vaddr == NULL) { + pr_err("rpmsg_sdb(ERROR): RPMSG_SDB_IOCTL_SET_EFD - previous buffer was not allocated\n"); + mutex_unlock(&_rpmsg_sdb->mutex); + return -EBADE; + } + + /* increment this index for the next buffer creation*/ + idx++; + } + + if (copy_from_user(&q_set_efd, (struct rpmsg_sdb_ioctl_set_efd *)argp, + sizeof(struct rpmsg_sdb_ioctl_set_efd))) { + pr_err("rpmsg_sdb(ERROR): RPMSG_SDB_IOCTL_SET_EFD - copy from user failed\n"); + mutex_unlock(&_rpmsg_sdb->mutex); + return -EFAULT; + } + + /* create a new buffer which will be added in the buffer list */ + buffer = kmalloc(sizeof(struct sdb_buf_t), GFP_KERNEL); + + buffer->index = idx; + buffer->vaddr = NULL; + buffer->efd_ctx = eventfd_ctx_fdget(q_set_efd.eventfd); + list_add_tail(&buffer->buflist, &_rpmsg_sdb->buffer_list); + + mutex_unlock(&_rpmsg_sdb->mutex); + break; + + case RPMSG_SDB_IOCTL_GET_DATA_SIZE: + if (copy_from_user(&q_get_dat_size, (struct rpmsg_sdb_ioctl_get_data_size *)argp, + sizeof(struct rpmsg_sdb_ioctl_get_data_size))) { + pr_err("rpmsg_sdb(ERROR): RPMSG_SDB_IOCTL_GET_DATA_SIZE - copy from user failed\n"); + return -EFAULT; + } + + /* Get the index of the requested buffer and then look-up in the buffer list*/ + idx = q_get_dat_size.bufferId; + + list_for_each(pos, &_rpmsg_sdb->buffer_list) + { + datastructureptr = list_entry(pos, struct sdb_buf_t, buflist); + if (datastructureptr->index == idx) { + /* Get the writing size*/ + q_get_dat_size.size = datastructureptr->writing_size; + break; + } + } + + if (copy_to_user((struct rpmsg_sdb_ioctl_get_data_size *)argp, &q_get_dat_size, + sizeof(struct rpmsg_sdb_ioctl_get_data_size))) { + pr_err("rpmsg_sdb(ERROR): RPMSG_SDB_IOCTL_GET_DATA_SIZE - copy to user failed\n"); + return -EFAULT; + } + + /* Reset the writing size*/ + datastructureptr->writing_size = -1; + + break; + default: + return -EINVAL; + } + + return 0; +} + +static const struct file_operations rpmsg_sdb_fops = { + .owner = THIS_MODULE, + .unlocked_ioctl = rpmsg_sdb_ioctl, + .mmap = rpmsg_sdb_mmap, + .open = rpmsg_sdb_open, + .release = rpmsg_sdb_close, +}; + +static int rpmsg_sdb_drv_cb(struct rpmsg_device *rpdev, void *data, int len, + void *priv, u32 src) +{ + int ret = 0; + int buffer_id = 0; + size_t buffer_size; + char *rpmsg_RxBuf; + struct list_head *pos; + struct sdb_buf_t *datastructureptr = NULL; + + struct rpmsg_sdb_t *drv = dev_get_drvdata(&rpdev->dev); + + if (len == 0) { + dev_err(rpmsg_sdb_dev, "(%s) Empty lenght requested\n", __func__); + return -EINVAL; + } + + //dev_err(rpmsg_sdb_dev, "(%s) lenght: %d\n", __func__,len); + + rpmsg_RxBuf = (char *)kmalloc(len+1, GFP_KERNEL); + memcpy(rpmsg_RxBuf, data, len); + + rpmsg_RxBuf[len] = 0; + + ret = rpmsg_sdb_decode_rxbuf_string(rpmsg_RxBuf, &buffer_id, &buffer_size); + kfree(rpmsg_RxBuf); + if (ret < 0) + goto out; + + if (buffer_id > LastBufferId) { + ret = -EINVAL; + goto out; + } + + /* Signal to User space application */ + list_for_each(pos, &drv->buffer_list) + { + datastructureptr = list_entry(pos, struct sdb_buf_t, buflist); + if (datastructureptr->index == buffer_id) { + datastructureptr->writing_size = buffer_size; + + if (datastructureptr->writing_size > datastructureptr->size) { + dev_err(rpmsg_sdb_dev, "(%s) Writing size is bigger than buffer size\n", __func__); + ret = -EINVAL; + goto out; + } + + eventfd_signal(datastructureptr->efd_ctx, 1); + break; + } + /* TODO: quid if nothing find during the loop ? */ + } + +out: + return ret; +} + +static int rpmsg_sdb_drv_probe(struct rpmsg_device *rpdev) +{ + int ret = 0; + struct device *dev = &rpdev->dev; + struct rpmsg_sdb_t *rpmsg_sdb; + + rpmsg_sdb = devm_kzalloc(dev, sizeof(*rpmsg_sdb), GFP_KERNEL); + if (!rpmsg_sdb) + return -ENOMEM; + + mutex_init(&rpmsg_sdb->mutex); + + rpmsg_sdb->rpdev = rpdev; + + rpmsg_sdb->mdev.name = "rpmsg-sdb"; + rpmsg_sdb->mdev.minor = MISC_DYNAMIC_MINOR; + rpmsg_sdb->mdev.fops = &rpmsg_sdb_fops; + + dev_set_drvdata(&rpdev->dev, rpmsg_sdb); + + /* Register misc device */ + ret = misc_register(&rpmsg_sdb->mdev); + + if (ret) { + dev_err(dev, "Failed to register device\n"); + goto err_out; + } + + rpmsg_sdb_dev = rpmsg_sdb->mdev.this_device; + + dev_info(dev, "%s probed\n", rpmsg_sdb_driver_name); + +err_out: + return ret; +} + +static void rpmsg_sdb_drv_remove(struct rpmsg_device *rpmsgdev) +{ + struct rpmsg_sdb_t *drv = dev_get_drvdata(&rpmsgdev->dev); + + misc_deregister(&drv->mdev); +} + +static struct rpmsg_device_id rpmsg_driver_sdb_id_table[] = { + { .name = "rpmsg-sdb-channel" }, + { }, +}; +MODULE_DEVICE_TABLE(rpmsg, rpmsg_driver_sdb_id_table); + +static struct rpmsg_driver rpmsg_sdb_rmpsg_drv = { + .drv.name = KBUILD_MODNAME, + .drv.owner = THIS_MODULE, + .id_table = rpmsg_driver_sdb_id_table, + .probe = rpmsg_sdb_drv_probe, + .callback = rpmsg_sdb_drv_cb, + .remove = rpmsg_sdb_drv_remove, +}; + +static int __init rpmsg_sdb_drv_init(void) +{ + int ret = 0; + + /* Register rpmsg device */ + ret = register_rpmsg_driver(&rpmsg_sdb_rmpsg_drv); + + if (ret) { + pr_err("rpmsg_sdb(ERROR): Failed to register device\n"); + return ret; + } + + pr_info("rpmsg_sdb: Init done\n"); + + return ret; +} + +static void __exit rpmsg_sdb_drv_exit(void) +{ + unregister_rpmsg_driver(&rpmsg_sdb_rmpsg_drv); + pr_info("rpmsg_sdb: Exit\n"); +} + +module_init(rpmsg_sdb_drv_init); +module_exit(rpmsg_sdb_drv_exit); + + +MODULE_AUTHOR("Jean-Philippe Romain "); +MODULE_DESCRIPTION("shared data buffer over RPMSG"); +MODULE_VERSION(RPMSG_SDB_DRIVER_VERSION); +MODULE_LICENSE("GPL v2"); diff --git a/recipes-vrpmdv/recipes-base/vrpmdv-mon-datafile/save/vrpmdv-mon-datafile copy.c b/recipes-vrpmdv/recipes-base/vrpmdv-mon-datafile/save/vrpmdv-mon-datafile copy.c new file mode 100644 index 0000000..ebe1af1 --- /dev/null +++ b/recipes-vrpmdv/recipes-base/vrpmdv-mon-datafile/save/vrpmdv-mon-datafile copy.c @@ -0,0 +1,552 @@ +/* Copyright 2024 Markus Lehr + * + * + * This Software is owned by Markus Lehr. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, + * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A + * PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +// ################################################################################################## +/* + * This is a Linux kernel module/driver called "vrpmdv-monitoring-cmd " which holds the family ID + * and functions to handle the monitoring in a Generic Netlink in the kernel. + * "It registers a Netlink family called "vrpmdv-monitoring_cmd". + * + * + * You can find some more interesting documentation about Generic Netlink here: + * "Generic Netlink HOW-TO based on Jamal's original doc" https://lwn.net/Articles/208755/ + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define VRPMDV_MON_DRIVER_VERSION "1.0" + +/* + * Static global variables + */ +static const char vrpmdv_mon_datafile[] = "vrpmdv-mon-datafile"; + +static int LastBufferId; + +struct rpmsg_sdb_ioctl_set_efd { + int bufferId, eventfd; +}; + +struct rpmsg_sdb_ioctl_get_data_size { + int bufferId; + uint32_t size; +}; + +/* ioctl numbers */ +/* _IOW means userland is writing and kernel is reading */ +/* _IOR means userland is reading and kernel is writing */ +/* _IOWR means userland and kernel can both read and write */ +#define RPMSG_SDB_IOCTL_SET_EFD _IOW('R', 0x00, struct rpmsg_sdb_ioctl_set_efd *) +#define RPMSG_SDB_IOCTL_GET_DATA_SIZE _IOWR('R', 0x01, struct rpmsg_sdb_ioctl_get_data_size *) + +struct sdb_buf_t { + int index; /* index of buffer */ + size_t size; /* buffer size */ + size_t writing_size; /* size of data written by copro */ + dma_addr_t paddr; /* physical address*/ + void *vaddr; /* virtual address */ + void *uaddr; /* mapped address for userland */ + struct eventfd_ctx *efd_ctx; /* eventfd context */ + struct list_head buflist; /* reference in the buffers list */ +}; + +struct rpmsg_sdb_t { + struct mutex mutex; /* mutex to protect the ioctls */ + struct miscdevice mdev; /* misc device ref */ + struct rpmsg_device *rpdev; /* handle rpmsg device */ + struct list_head buffer_list; /* buffer instances list */ +}; + +struct device *rpmsg_sdb_dev; + +static int rpmsg_sdb_format_txbuf_string(struct sdb_buf_t *buffer, char *bufinfo_str, size_t bufinfo_str_size) +{ + pr_debug("vrpmdv-mon-datafile(%s): Buffer index:%d, addr:%08x, size:%08x\n", + __func__, + buffer->index, + buffer->paddr, + buffer->size); + return snprintf(bufinfo_str, bufinfo_str_size, "B%dA%08xL%08x", buffer->index, buffer->paddr, buffer->size); +} + +static long rpmsg_sdb_decode_rxbuf_string(char *rxbuf_str, int *buffer_id, size_t *size) +{ + int ret = 0; + char *sub_str; + long bsize; + long bufid; + const char delimiter[2] = {'L','\0'}; + + pr_debug("vrpmdv-mon-datafile(%s): rxbuf_str:%s\n", __func__, rxbuf_str); + + /* Get first part containing the buffer id */ + sub_str = strsep(&rxbuf_str, delimiter); + + pr_debug("vrpmdv-mon-datafile(%s): sub_str:%s\n", __func__, sub_str); + + /* Save Buffer id and size: template BxLyyyyyyyy*/ + ret = kstrtol(&sub_str[1], 10, &bufid); + if (ret < 0) { + pr_err("vrpmdv-mon-datafile(ERROR): Extract of buffer id failed(%d)", ret); + goto out; + } + + ret = kstrtol(&rxbuf_str[2], 16, &bsize); + if (ret < 0) { + pr_err("vrpmdv-mon-datafile(ERROR): Extract of buffer size failed(%d)", ret); + goto out; + } + + *size = (size_t)bsize; + *buffer_id = (int)bufid; + +out: + return ret; +} + +static int rpmsg_sdb_send_buf_info(struct rpmsg_sdb_t *rpmsg_sdb, struct sdb_buf_t *buffer) +{ + int count = 0, ret = 0; + const unsigned char *tbuf; + char mybuf[32]; + int msg_size; + struct rpmsg_device *_rpdev; + + _rpdev = rpmsg_sdb->rpdev; + msg_size = rpmsg_get_mtu(_rpdev->ept); + + if (msg_size < 0) + return msg_size; + + count = rpmsg_sdb_format_txbuf_string(buffer, mybuf, 32); + tbuf = &mybuf[0]; + + do { + /* send a message to our remote processor */ + ret = rpmsg_send(_rpdev->ept, (void *)tbuf, + count > msg_size ? msg_size : count); + if (ret) { + dev_err(&_rpdev->dev, "vrpmdv-mon-datafile failed: %d\n", ret); + return ret; + } + + if (count > msg_size) { + count -= msg_size; + tbuf += msg_size; + } else { + count = 0; + } + } while (count > 0); + + return count; +} + +static int rpmsg_sdb_mmap(struct file *file, struct vm_area_struct *vma) +{ + unsigned long vsize = vma->vm_end - vma->vm_start; + unsigned long size = PAGE_ALIGN(vsize); + unsigned long NumPages = size >> PAGE_SHIFT; + unsigned long align = get_order(size); + pgprot_t prot = pgprot_noncached(vma->vm_page_prot); + struct rpmsg_sdb_t *_rpmsg_sdb; + struct sdb_buf_t *_buffer; + + if (align > CONFIG_CMA_ALIGNMENT) + align = CONFIG_CMA_ALIGNMENT; + + if (rpmsg_sdb_dev == NULL) + return -ENOMEM; + + rpmsg_sdb_dev->coherent_dma_mask = DMA_BIT_MASK(32); + rpmsg_sdb_dev->dma_mask = &rpmsg_sdb_dev->coherent_dma_mask; + + _rpmsg_sdb = container_of(file->private_data, struct rpmsg_sdb_t, + mdev); + + /* Field the last buffer entry which is the last one created */ + if (!list_empty(&_rpmsg_sdb->buffer_list)) { + _buffer = list_last_entry(&_rpmsg_sdb->buffer_list, + struct sdb_buf_t, buflist); + + _buffer->uaddr = NULL; + _buffer->size = NumPages * PAGE_SIZE; + _buffer->writing_size = -1; + _buffer->vaddr = dma_alloc_coherent(rpmsg_sdb_dev, + _buffer->size, + &_buffer->paddr, + GFP_KERNEL); + + if (!_buffer->vaddr) { + pr_err("vrpmdv-mon-datafile(ERROR): Memory allocation issue\n"); + return -ENOMEM; + } + + pr_debug("vrpmdv-mon-datafile(%s): dma_alloc_coherent done - paddr[%d]:%x - vaddr[%d]:%p\n", + __func__, + _buffer->index, + _buffer->paddr, + _buffer->index, + _buffer->vaddr); + + /* Get address for userland */ + if (remap_pfn_range(vma, vma->vm_start, + (_buffer->paddr >> PAGE_SHIFT) + vma->vm_pgoff, + size, prot)) + return -EAGAIN; + + _buffer->uaddr = (void *)vma->vm_start; + + /* Send information to remote proc */ + rpmsg_sdb_send_buf_info(_rpmsg_sdb, _buffer); + } else { + dev_err(rpmsg_sdb_dev, "No existing buffer entry exist in the list !!!"); + return -EINVAL; + } + + /* Increment for number of requested buffer */ + LastBufferId++; + + return 0; +} + +/** + * rpmsg_sdb_open - Open Session + * + * @inode: inode struct + * @file: file struct + * + * Return: + * 0 - Success + * Non-zero - Failure + */ +static int rpmsg_sdb_open(struct inode *inode, struct file *file) +{ + struct rpmsg_sdb_t *_rpmsg_sdb; + + _rpmsg_sdb = container_of(file->private_data, struct rpmsg_sdb_t, + mdev); + + /* Initialize the buffer list*/ + INIT_LIST_HEAD(&_rpmsg_sdb->buffer_list); + + mutex_init(&_rpmsg_sdb->mutex); + + return 0; +} + +/** + * rpmsg_sdb_close - Close Session + * + * @inode: inode struct + * @file: file struct + * + * Return: + * 0 - Success + * Non-zero - Failure + */ +static int rpmsg_sdb_close(struct inode *inode, struct file *file) +{ + struct rpmsg_sdb_t *_rpmsg_sdb; + struct sdb_buf_t *pos, *next; + + _rpmsg_sdb = container_of(file->private_data, struct rpmsg_sdb_t,mdev); + + list_for_each_entry_safe(pos, next, &_rpmsg_sdb->buffer_list, buflist) { + /* Free the CMA allocation */ + pr_debug("vrpmdv-mon-datafile(%s): Free the CMA allocation: pos->size:%08x, pos->vaddr:%08x, pos->paddr:%08x\n", + __func__, + pos->size, + pos->vaddr, + pos->paddr); + + dma_free_coherent(rpmsg_sdb_dev, pos->size, pos->vaddr, + pos->paddr); + /* Remove the buffer from the list */ + list_del(&pos->buflist); + /* Free the buffer */ + kfree(pos); + } + + /* Reset LastBufferId */ + LastBufferId = 0; + + return 0; +} + +/** + * rpmsg_sdb_ioctl - IOCTL + * + * @session: ibmvmc_file_session struct + * @cmd: cmd field + * @arg: Argument field + * + * Return: + * 0 - Success + * Non-zero - Failure + */ +static long rpmsg_sdb_ioctl(struct file *file, unsigned int cmd, unsigned long arg) +{ + int idx = 0; + + struct rpmsg_sdb_t *_rpmsg_sdb; + struct sdb_buf_t *buffer, *lastbuffer; + + struct list_head *pos; + struct sdb_buf_t *datastructureptr = NULL; + + struct rpmsg_sdb_ioctl_set_efd q_set_efd; + struct rpmsg_sdb_ioctl_get_data_size q_get_dat_size; + + void __user *argp = (void __user *)arg; + + _rpmsg_sdb = container_of(file->private_data, struct rpmsg_sdb_t, + mdev); + + switch (cmd) { + case RPMSG_SDB_IOCTL_SET_EFD: + mutex_lock(&_rpmsg_sdb->mutex); + + /* Get index from the last buffer in the list */ + if (!list_empty(&_rpmsg_sdb->buffer_list)) { + lastbuffer = list_last_entry(&_rpmsg_sdb->buffer_list, struct sdb_buf_t, buflist); + idx = lastbuffer->index; + + /* Check last index was properly initiated*/ + if (lastbuffer->vaddr == NULL) { + pr_err("vrpmdv-mon-datafile(ERROR): RPMSG_SDB_IOCTL_SET_EFD - previous buffer was not allocated\n"); + mutex_unlock(&_rpmsg_sdb->mutex); + return -EBADE; + } + + /* increment this index for the next buffer creation*/ + idx++; + } + + if (copy_from_user(&q_set_efd, (struct rpmsg_sdb_ioctl_set_efd *)argp, + sizeof(struct rpmsg_sdb_ioctl_set_efd))) { + pr_err("vrpmdv-mon-datafile(ERROR): RPMSG_SDB_IOCTL_SET_EFD - copy from user failed\n"); + mutex_unlock(&_rpmsg_sdb->mutex); + return -EFAULT; + } + + /* create a new buffer which will be added in the buffer list */ + buffer = kmalloc(sizeof(struct sdb_buf_t), GFP_KERNEL); + + buffer->index = idx; + buffer->vaddr = NULL; + buffer->efd_ctx = eventfd_ctx_fdget(q_set_efd.eventfd); + list_add_tail(&buffer->buflist, &_rpmsg_sdb->buffer_list); + + mutex_unlock(&_rpmsg_sdb->mutex); + break; + + case RPMSG_SDB_IOCTL_GET_DATA_SIZE: + if (copy_from_user(&q_get_dat_size, (struct rpmsg_sdb_ioctl_get_data_size *)argp, + sizeof(struct rpmsg_sdb_ioctl_get_data_size))) { + pr_err("vrpmdv-mon-datafile(ERROR): RPMSG_SDB_IOCTL_GET_DATA_SIZE - copy from user failed\n"); + return -EFAULT; + } + + /* Get the index of the requested buffer and then look-up in the buffer list*/ + idx = q_get_dat_size.bufferId; + + list_for_each(pos, &_rpmsg_sdb->buffer_list) + { + datastructureptr = list_entry(pos, struct sdb_buf_t, buflist); + if (datastructureptr->index == idx) { + /* Get the writing size*/ + q_get_dat_size.size = datastructureptr->writing_size; + break; + } + } + + if (copy_to_user((struct rpmsg_sdb_ioctl_get_data_size *)argp, &q_get_dat_size, + sizeof(struct rpmsg_sdb_ioctl_get_data_size))) { + pr_err("vrpmdv-mon-datafile(ERROR): RPMSG_SDB_IOCTL_GET_DATA_SIZE - copy to user failed\n"); + return -EFAULT; + } + + /* Reset the writing size*/ + datastructureptr->writing_size = -1; + + break; + default: + return -EINVAL; + } + + return 0; +} + +static const struct file_operations rpmsg_sdb_fops = { + .owner = THIS_MODULE, + .unlocked_ioctl = rpmsg_sdb_ioctl, + .mmap = rpmsg_sdb_mmap, + .open = rpmsg_sdb_open, + .release = rpmsg_sdb_close, +}; + +static int rpmsg_sdb_drv_cb(struct rpmsg_device *rpdev, void *data, int len, + void *priv, u32 src) +{ + int ret = 0; + int buffer_id = 0; + size_t buffer_size; + char *rpmsg_RxBuf; + struct list_head *pos; + struct sdb_buf_t *datastructureptr = NULL; + + struct rpmsg_sdb_t *drv = dev_get_drvdata(&rpdev->dev); + + if (len == 0) { + dev_err(rpmsg_sdb_dev, "(%s) Empty lenght requested\n", __func__); + return -EINVAL; + } + + //dev_err(rpmsg_sdb_dev, "(%s) lenght: %d\n", __func__,len); + + rpmsg_RxBuf = (char *)kmalloc(len+1, GFP_KERNEL); + memcpy(rpmsg_RxBuf, data, len); + + rpmsg_RxBuf[len] = 0; + + ret = rpmsg_sdb_decode_rxbuf_string(rpmsg_RxBuf, &buffer_id, &buffer_size); + kfree(rpmsg_RxBuf); + if (ret < 0) + goto out; + + if (buffer_id > LastBufferId) { + ret = -EINVAL; + goto out; + } + + /* Signal to User space application */ + list_for_each(pos, &drv->buffer_list) + { + datastructureptr = list_entry(pos, struct sdb_buf_t, buflist); + if (datastructureptr->index == buffer_id) { + datastructureptr->writing_size = buffer_size; + + if (datastructureptr->writing_size > datastructureptr->size) { + dev_err(rpmsg_sdb_dev, "(%s) Writing size is bigger than buffer size\n", __func__); + ret = -EINVAL; + goto out; + } + + eventfd_signal(datastructureptr->efd_ctx, 1); + break; + } + /* TODO: quid if nothing find during the loop ? */ + } + +out: + return ret; +} + +static int rpmsg_sdb_drv_probe(struct rpmsg_device *rpdev) +{ + int ret = 0; + struct device *dev = &rpdev->dev; + struct rpmsg_sdb_t *rpmsg_sdb; + + rpmsg_sdb = devm_kzalloc(dev, sizeof(*rpmsg_sdb), GFP_KERNEL); + if (!rpmsg_sdb) + return -ENOMEM; + + mutex_init(&rpmsg_sdb->mutex); + + rpmsg_sdb->rpdev = rpdev; + + rpmsg_sdb->mdev.name = "vrpmdv-mon-datafile"; //rpmsg-sdb + rpmsg_sdb->mdev.minor = MISC_DYNAMIC_MINOR; + rpmsg_sdb->mdev.fops = &rpmsg_sdb_fops; + + dev_set_drvdata(&rpdev->dev, rpmsg_sdb); + + /* Register misc device */ + ret = misc_register(&rpmsg_sdb->mdev); + + if (ret) { + dev_err(dev, "Failed to register device\n"); + goto err_out; + } + + rpmsg_sdb_dev = rpmsg_sdb->mdev.this_device; + + dev_info(dev, "%s probed\n", vrpmdv_mon_datafile); + +err_out: + return ret; +} + +static void rpmsg_sdb_drv_remove(struct rpmsg_device *rpmsgdev) +{ + struct rpmsg_sdb_t *drv = dev_get_drvdata(&rpmsgdev->dev); + + misc_deregister(&drv->mdev); +} + +static struct rpmsg_device_id rpmsg_driver_sdb_id_table[] = { + { .name = "vrpmdv-mon-datafile" }, + { }, +}; +MODULE_DEVICE_TABLE(rpmsg, rpmsg_driver_sdb_id_table); + +static struct rpmsg_driver rpmsg_sdb_rmpsg_drv = { + .drv.name = KBUILD_MODNAME, + .drv.owner = THIS_MODULE, + .id_table = rpmsg_driver_sdb_id_table, + .probe = rpmsg_sdb_drv_probe, + .callback = rpmsg_sdb_drv_cb, + .remove = rpmsg_sdb_drv_remove, +}; + +static int __init rpmsg_sdb_drv_init(void) +{ + int ret = 0; + + /* Register rpmsg device */ + ret = register_rpmsg_driver(&rpmsg_sdb_rmpsg_drv); + + if (ret) { + pr_err("vrpmdv-mon-datafile(ERROR): Failed to register device\n"); + return ret; + } + + pr_info("vrpmdv-mon-datafile: Init done\n"); + + return ret; +} + +static void __exit rpmsg_sdb_drv_exit(void) +{ + unregister_rpmsg_driver(&rpmsg_sdb_rmpsg_drv); + pr_info("vrpmdv-mon-datafile: Exit\n"); +} + +module_init(rpmsg_sdb_drv_init); +module_exit(rpmsg_sdb_drv_exit); + + +MODULE_AUTHOR("Markus Lehr "); +MODULE_DESCRIPTION("shared data buffer over RPMSG"); +MODULE_VERSION(VRPMDV_MON_DRIVER_VERSION); +MODULE_LICENSE("GPL v2"); diff --git a/recipes-vrpmdv/recipes-base/vrpmdv-mon-datafile/save/vrpmdv-mon-datafile-before-DMA-Change.c b/recipes-vrpmdv/recipes-base/vrpmdv-mon-datafile/save/vrpmdv-mon-datafile-before-DMA-Change.c new file mode 100644 index 0000000..b76446c --- /dev/null +++ b/recipes-vrpmdv/recipes-base/vrpmdv-mon-datafile/save/vrpmdv-mon-datafile-before-DMA-Change.c @@ -0,0 +1,706 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (C) STMicroelectronics 2019 - All Rights Reserved + * Author: Jean-Philippe Romain + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define RPMSG_SDB_DRIVER_VERSION "1.0" + +/* + * Static global variables + */ +static const char rpmsg_sdb_driver_name[] = "vrpmdv-mon-datafile"; + +static int LastBufferId; + +struct rpmsg_sdb_ioctl_set_efd { + int bufferId, eventfd; +}; + +struct rpmsg_sdb_ioctl_get_data_size { + int bufferId; + uint32_t size; +}; + +/* ioctl numbers */ +/* _IOW means userland is writing and kernel is reading */ +/* _IOR means userland is reading and kernel is writing */ +/* _IOWR means userland and kernel can both read and write */ +#define RPMSG_SDB_IOCTL_SET_EFD _IOW('R', 0x00, struct rpmsg_sdb_ioctl_set_efd *) +#define RPMSG_SDB_IOCTL_GET_DATA_SIZE _IOWR('R', 0x01, struct rpmsg_sdb_ioctl_get_data_size *) + +struct sdb_buf_t { + int index; /* index of buffer */ + size_t size; /* buffer size */ + size_t writing_size; /* size of data written by copro */ + dma_addr_t paddr; /* physical address*/ + void *vaddr; /* virtual address */ + void *uaddr; /* mapped address for userland */ + struct eventfd_ctx *efd_ctx; /* eventfd context */ + struct list_head buflist; /* reference in the buffers list */ +}; + +struct rpmsg_sdb_t { + struct mutex mutex; /* mutex to protect the ioctls */ + struct miscdevice mdev; /* misc device ref */ + struct rpmsg_device *rpdev; /* handle rpmsg device */ + struct list_head buffer_list; /* buffer instances list */ +}; + +struct device *rpmsg_sdb_dev; + +struct vRCMDeviceData { + uint32_t packageNo; //current package Number + uint32_t packageCount; //complete package Number + uint32_t dataQuantity; //number of uint32_t in data + uint32_t data[]; //the data +}; + +static int rpmsg_sdb_format_txbuf_string(struct sdb_buf_t *buffer, char *bufinfo_str, size_t bufinfo_str_size) +{ + pr_info("rpmsg_sdb(%s): Buffer index:%d, addr:%08x, size:%08x\n", + __func__, + buffer->index, + buffer->paddr, + buffer->size); + return snprintf(bufinfo_str, bufinfo_str_size, "B%dA%08xL%08x", buffer->index, buffer->paddr, buffer->size); +} + +static long rpmsg_sdb_decode_rxbuf_string(char *rxbuf_str, int *buffer_id, size_t *size) +{ + int ret = 0; + char *sub_str; + long bsize; + long bufid; + const char delimiter[2] = {'L','\0'}; + //__u32* data = (__u32*) rxbuf_str; + struct vRCMDeviceData* pdata = (struct vRCMDeviceData*) rxbuf_str; + + + //pr_info("rpmsg_sdb(%s): rxbuf_str:%s\n", __func__, rxbuf_str); + pr_info("rpmsg_sdb(%s): packageno:%d\n", __func__, pdata->packageNo); + pr_info("rpmsg_sdb(%s): packageCount:%d\n", __func__, pdata->packageCount); + pr_info("rpmsg_sdb(%s): dataquantity:%d\n", __func__, pdata->dataQuantity); + pr_info("rpmsg_sdb(%s): data:%d\n", __func__, (pdata->data)[0]); + // pr_info("rpmsg_sdb(%s): rxbuf_str:%d\n", __func__, data[0]); + // pr_info("rpmsg_sdb(%s): rxbuf_str:%d\n", __func__, data[1]); + // pr_info("rpmsg_sdb(%s): rxbuf_str:%d\n", __func__, data[2]); + + + + /* Get first part containing the buffer id */ +// sub_str = strsep(&rxbuf_str, delimiter); + +// // pr_info("rpmsg_sdb(%s): sub_str:%s\n", __func__, sub_str); + +// /* Save Buffer id and size: template BxLyyyyyyyy*/ +// ret = kstrtol(&sub_str[1], 10, &bufid); +// if (ret < 0) { +// // pr_info("rpmsg_sdb(ERROR): Extract of buffer id failed(%d)", ret); +// goto out; +// } + +// ret = kstrtol(&rxbuf_str[2], 16, &bsize); +// if (ret < 0) { +// // pr_info("rpmsg_sdb(ERROR): Extract of buffer size failed(%d)", ret); +// goto out; +// } + +// *size = (size_t)bsize; +// *buffer_id = (int)bufid; + +// out: + return ret; +} + +static int rpmsg_sdb_send_buf_info(struct rpmsg_sdb_t *rpmsg_sdb, struct sdb_buf_t *buffer) +{ + int count = 0, ret = 0; + const unsigned char *tbuf; + char mybuf[32]; + int msg_size; + struct rpmsg_device *_rpdev; + + pr_info("rpmsg_sdb(%s): start rpmsg_sdb_send_buf_info\n", __func__); + _rpdev = rpmsg_sdb->rpdev; + msg_size = rpmsg_get_mtu(_rpdev->ept); + + pr_info("rpmsg_sdb(%s): checked msg site:%d\n", __func__, msg_size); + if (msg_size < 0) + return msg_size; + + pr_info("rpmsg_sdb(%s): Call rpmsg_sdb_format_txbuf_string\n", __func__); + count = rpmsg_sdb_format_txbuf_string(buffer, mybuf, 32); + tbuf = &mybuf[0]; + + do { + /* send a message to our remote processor */ + pr_info("rpmsg_sdb(%s): send a message to our remote processor\n", __func__); + ret = rpmsg_send(_rpdev->ept, (void *)tbuf, + count > msg_size ? msg_size : count); + if (ret) { + dev_err(&_rpdev->dev, "rpmsg_send failed: %d\n", ret); + pr_info("rpmsg_sdb(%s): error by send a message to our remote processor\n", __func__); + return ret; + } + else { + pr_info("rpmsg_sdb(%s): send succesfully a message to our remote processor\n", __func__); + } + + if (count > msg_size) { + count -= msg_size; + tbuf += msg_size; + } else { + count = 0; + } + } while (count > 0); + + return count; +} + +static int rpmsg_sdb_mmap(struct file *file, struct vm_area_struct *vma) +{ + unsigned long vsize = vma->vm_end - vma->vm_start; + unsigned long size = PAGE_ALIGN(vsize); + unsigned long NumPages = size >> PAGE_SHIFT; + unsigned long align = get_order(size); + pgprot_t prot = pgprot_noncached(vma->vm_page_prot); + struct rpmsg_sdb_t *_rpmsg_sdb; + struct sdb_buf_t *_buffer; + + pr_info("rpmsg_sdb(%s): start rpmsg_sdb_mmap\n", __func__); + if (align > CONFIG_CMA_ALIGNMENT) + align = CONFIG_CMA_ALIGNMENT; + + if (rpmsg_sdb_dev == NULL) + return -ENOMEM; + + pr_info("rpmsg_sdb(%s): start rpmsg_sdb_mmap - coherent_dma_mask\n", __func__); + rpmsg_sdb_dev->coherent_dma_mask = DMA_BIT_MASK(32); + rpmsg_sdb_dev->dma_mask = &rpmsg_sdb_dev->coherent_dma_mask; + + _rpmsg_sdb = container_of(file->private_data, struct rpmsg_sdb_t, + mdev); + + /* Field the last buffer entry which is the last one created */ + if (!list_empty(&_rpmsg_sdb->buffer_list)) { + pr_info("rpmsg_sdb(%s): start rpmsg_sdb_mmap - bufferlist not empty\n", __func__); + _buffer = list_last_entry(&_rpmsg_sdb->buffer_list, + struct sdb_buf_t, buflist); + + _buffer->uaddr = NULL; + _buffer->size = NumPages * PAGE_SIZE; + _buffer->writing_size = -1; + _buffer->vaddr = dma_alloc_coherent(rpmsg_sdb_dev, + _buffer->size, + &_buffer->paddr, + GFP_KERNEL); + + + if (!_buffer->vaddr) { + pr_info("rpmsg_sdb(ERROR): Memory allocation issue\n"); + return -ENOMEM; + } + + pr_info("rpmsg_sdb(%s): dma_alloc_coherent done - paddr[%d]:%x - vaddr[%d]:%p\n", + __func__, + _buffer->index, + _buffer->paddr, + _buffer->index, + _buffer->vaddr); + + /* Get address for userland */ + if (remap_pfn_range(vma, vma->vm_start, + (_buffer->paddr >> PAGE_SHIFT) + vma->vm_pgoff, + size, prot)) { + + pr_info("rpmsg_sdb(%s): remap_pfn_range could not be done\n"); + return -EAGAIN; + } + + + _buffer->uaddr = (void *)vma->vm_start; + pr_info("rpmsg_sdb(%s): _buffer->uaddr = %p\n", __func__, _buffer->uaddr); + + /* Send information to remote proc */ + pr_info("rpmsg_sdb(%s): Send information to remote proc\n", __func__); + rpmsg_sdb_send_buf_info(_rpmsg_sdb, _buffer); + } else { + dev_err(rpmsg_sdb_dev, "No existing buffer entry exist in the list !!!"); + pr_debug("rpmsg_sdb(%s): No existing buffer entry exist in the list !!!\n", __func__); + return -EINVAL; + } + + /* Increment for number of requested buffer */ + LastBufferId++; + + return 0; +} + +/** + * rpmsg_sdb_open - Open Session + * + * @inode: inode struct + * @file: file struct + * + * Return: + * 0 - Success + * Non-zero - Failure + */ +static int rpmsg_sdb_open(struct inode *inode, struct file *file) +{ + struct rpmsg_sdb_t *_rpmsg_sdb; + + _rpmsg_sdb = container_of(file->private_data, struct rpmsg_sdb_t, + mdev); + + /* Initialize the buffer list*/ + pr_debug("rpmsg_sdb(%s): Init bufferlist", __func__); + pr_info("rpmsg_sdb(%s): start Init bufferlist", __func__); + INIT_LIST_HEAD(&_rpmsg_sdb->buffer_list); + pr_info("rpmsg_sdb(%s): success Init bufferlist", __func__); + + mutex_init(&_rpmsg_sdb->mutex); + + return 0; +} + +/** + * rpmsg_sdb_close - Close Session + * + * @inode: inode struct + * @file: file struct + * + * Return: + * 0 - Success + * Non-zero - Failure + */ +static int rpmsg_sdb_close(struct inode *inode, struct file *file) +{ + struct rpmsg_sdb_t *_rpmsg_sdb; + struct sdb_buf_t *pos, *next; + + _rpmsg_sdb = container_of(file->private_data, struct rpmsg_sdb_t, + mdev); + + list_for_each_entry_safe(pos, next, &_rpmsg_sdb->buffer_list, buflist) { + /* Free the CMA allocation */ + pr_info("rpmsg_sdb(%s): Free the CMA allocation 3", __func__); + dma_free_coherent(rpmsg_sdb_dev, pos->size, pos->vaddr, pos->paddr); + /* Remove the buffer from the list */ + list_del(&pos->buflist); + /* Free the buffer */ + kfree(pos); + } + + pr_info("rpmsg_sdb(%s): Free the CMA allocation 4 - done", __func__); + /* Reset LastBufferId */ + LastBufferId = 0; + + return 0; +} + +/** + * rpmsg_sdb_ioctl - IOCTL + * + * @session: ibmvmc_file_session struct + * @cmd: cmd field + * @arg: Argument field + * + * Return: + * 0 - Success + * Non-zero - Failure + */ +static long rpmsg_sdb_ioctl(struct file *file, unsigned int cmd, unsigned long arg) +{ + int idx = 0; + + struct rpmsg_sdb_t *_rpmsg_sdb; + struct sdb_buf_t *buffer, *lastbuffer; + + struct list_head *pos; + struct sdb_buf_t *datastructureptr = NULL; + + struct rpmsg_sdb_ioctl_set_efd q_set_efd; + struct rpmsg_sdb_ioctl_get_data_size q_get_dat_size; + + void __user *argp = (void __user *)arg; + + _rpmsg_sdb = container_of(file->private_data, struct rpmsg_sdb_t, + mdev); + + switch (cmd) { + case RPMSG_SDB_IOCTL_SET_EFD: + mutex_lock(&_rpmsg_sdb->mutex); + + /* Get index from the last buffer in the list */ + pr_info("mon-datafile: set EFD\n"); + if (!list_empty(&_rpmsg_sdb->buffer_list)) { + lastbuffer = list_last_entry(&_rpmsg_sdb->buffer_list, struct sdb_buf_t, buflist); + idx = lastbuffer->index; + + /* Check last index was properly initiated*/ + if (lastbuffer->vaddr == NULL) { + // pr_err("rpmsg_sdb(ERROR): RPMSG_SDB_IOCTL_SET_EFD - previous buffer was not allocated\n"); + pr_info("rpmsg_sdb(ERROR): RPMSG_SDB_IOCTL_SET_EFD - previous buffer was not allocated\n"); + mutex_unlock(&_rpmsg_sdb->mutex); + return -EBADE; + } + + /* increment this index for the next buffer creation*/ + idx++; + } + + if (copy_from_user(&q_set_efd, (struct rpmsg_sdb_ioctl_set_efd *)argp, + sizeof(struct rpmsg_sdb_ioctl_set_efd))) { + // pr_err("rpmsg_sdb(ERROR): RPMSG_SDB_IOCTL_SET_EFD - copy from user failed\n"); + pr_info("rpmsg_sdb(ERROR): RPMSG_SDB_IOCTL_SET_EFD - copy from user failed\n"); + + mutex_unlock(&_rpmsg_sdb->mutex); + return -EFAULT; + } + + /* create a new buffer which will be added in the buffer list */ + buffer = kmalloc(sizeof(struct sdb_buf_t), GFP_KERNEL); + + buffer->index = idx; + buffer->vaddr = NULL; + buffer->efd_ctx = eventfd_ctx_fdget(q_set_efd.eventfd); + list_add_tail(&buffer->buflist, &_rpmsg_sdb->buffer_list); + + pr_info("rpmsg_sdb(SUCCES): RPMSG_SDB_IOCTL_SET_EFD \n"); + + mutex_unlock(&_rpmsg_sdb->mutex); + break; + + case RPMSG_SDB_IOCTL_GET_DATA_SIZE: + pr_info("mon-datafile: get datasize\n"); + if (copy_from_user(&q_get_dat_size, (struct rpmsg_sdb_ioctl_get_data_size *)argp, + sizeof(struct rpmsg_sdb_ioctl_get_data_size))) { + pr_err("rpmsg_sdb(ERROR): RPMSG_SDB_IOCTL_GET_DATA_SIZE - copy from user failed\n"); + return -EFAULT; + } + + /* Get the index of the requested buffer and then look-up in the buffer list*/ + idx = q_get_dat_size.bufferId; + + list_for_each(pos, &_rpmsg_sdb->buffer_list) + { + datastructureptr = list_entry(pos, struct sdb_buf_t, buflist); + if (datastructureptr->index == idx) { + /* Get the writing size*/ + q_get_dat_size.size = datastructureptr->writing_size; + break; + } + } + + if (copy_to_user((struct rpmsg_sdb_ioctl_get_data_size *)argp, &q_get_dat_size, + sizeof(struct rpmsg_sdb_ioctl_get_data_size))) { + pr_err("rpmsg_sdb(ERROR): RPMSG_SDB_IOCTL_GET_DATA_SIZE - copy to user failed\n"); + return -EFAULT; + } + + /* Reset the writing size*/ + datastructureptr->writing_size = -1; + + break; + default: + return -EINVAL; + } + + return 0; +} + +static const struct file_operations rpmsg_sdb_fops = { + .owner = THIS_MODULE, + .unlocked_ioctl = rpmsg_sdb_ioctl, + .mmap = rpmsg_sdb_mmap, + .open = rpmsg_sdb_open, + .release = rpmsg_sdb_close, +}; + +static int rpmsg_sdb_drv_cb(struct rpmsg_device *rpdev, void *data, int len, + void *priv, u32 src) +{ + int ret = 0; + int buffer_id = 0; + size_t buffer_size; + char *rpmsg_RxBuf; + struct list_head *pos; + struct sdb_buf_t *datastructureptr = NULL; + + //pr_info("mon-datafile: receive msg from Copro: %s, len:%d\n", __func__, len); + + // struct rpmsg_sdb_t { + // struct mutex mutex; /* mutex to protect the ioctls */ + // struct miscdevice mdev; /* misc device ref */ + // struct rpmsg_device *rpdev; /* handle rpmsg device */ + // struct list_head buffer_list; /* buffer instances list */ + // }; + + + rpmsg_RxBuf = (char *)kmalloc(len+1, GFP_KERNEL); + memcpy(rpmsg_RxBuf, data, len); + + rpmsg_RxBuf[len] = 0; + + // ret = rpmsg_sdb_decode_rxbuf_string(rpmsg_RxBuf, &buffer_id, &buffer_size); + + // if (ret < 0) + // goto out; + + // if (buffer_id > LastBufferId) { + // ret = -EINVAL; + // goto out; + // } + + struct vRCMDeviceData* pdata = (struct vRCMDeviceData*) rpmsg_RxBuf; + + + //pr_info("rpmsg_sdb(%s): rxbuf_str:%s\n", __func__, rxbuf_str); + // pr_info("rpmsg_sdb(%s): packageno:%d\n", __func__, pdata->packageNo); + // pr_info("rpmsg_sdb(%s): packageCount:%d\n", __func__, pdata->packageCount); + // pr_info("rpmsg_sdb(%s): dataquantity:%d\n", __func__, pdata->dataQuantity); + // pr_info("rpmsg_sdb(%s): data:%d\n", __func__, (pdata->data)[0]); + + + struct rpmsg_sdb_t *drv = dev_get_drvdata(&rpdev->dev); + + if (len == 0) { + dev_err(rpmsg_sdb_dev, "(%s) Empty lenght requested\n", __func__); + return -EINVAL; + } + + if (drv == NULL) { + dev_err(rpmsg_sdb_dev, "(%s) no driver found\n", __func__); + return -EINVAL; + } + + //copy data to structure + //1. get buffer + + // struct vRCMDeviceData* pdata = (struct vRCMDeviceData*) kmalloc(len+1, GFP_KERNEL); + // memcpy(pdata, data, len); + + // if (ret < 0) + // goto out; + + // if (buffer_id > LastBufferId) { + // ret = -EINVAL; + // goto out; + // } + + +/** + rpmsg_RxBuf = (char *)kmalloc(len+1, GFP_KERNEL); + memcpy(rpmsg_RxBuf, data, len); + + rpmsg_RxBuf[len] = 0; + + ret = rpmsg_sdb_decode_rxbuf_string(rpmsg_RxBuf, &buffer_id, &buffer_size); + kfree(rpmsg_RxBuf); + if (ret < 0) + goto out; + + if (buffer_id > LastBufferId) { + ret = -EINVAL; + goto out; + } +*/ + /* Signal to User space application */ + list_for_each(pos, &drv->buffer_list) + { + datastructureptr = list_entry(pos, struct sdb_buf_t, buflist); + + + /** + * struct vRCMDeviceData { + uint32_t packageNo; //current package Number + uint32_t packageCount; //complete package Number + uint32_t dataQuantity; //number of uint32_t in data + uint32_t data[]; //the data + }; + */ + //copy data to buffer + + + // struct sdb_buf_t { + // int index; /* index of buffer */ + // size_t size; /* buffer size */ + // size_t writing_size; /* size of data written by copro */ + // dma_addr_t paddr; /* physical address*/ + // void *vaddr; /* virtual address */ + // void *uaddr; /* mapped address for userland */ + // struct eventfd_ctx *efd_ctx; /* eventfd context */ + // struct list_head buflist; /* reference in the buffers list */ + // }; + + //get the buffer as array of struct vRCMDeviceData + struct vRCMDeviceData* vrBuff = (struct vRCMDeviceData*) (datastructureptr->vaddr); + struct vRCMDeviceData* startAdress = &(vrBuff[pdata->packageNo]); + // pr_info("rpmsg_sdb(%s): startAdress:%d\n", __func__, startAdress); + + if (virt_addr_valid(startAdress)) { + // pr_info("rpmsg_sdb(%s): startAdress:%d is valid\n", __func__, startAdress); + memcpy(startAdress, rpmsg_RxBuf, len); + } + else { + pr_info("rpmsg_sdb(%s): startAdress[%d]:%p is invalid!!\n", __func__, startAdress); + } + + + // if (datastructureptr->index == buffer_id) { + // datastructureptr->writing_size = buffer_size; + + // if (datastructureptr->writing_size > datastructureptr->size) { + // dev_err(rpmsg_sdb_dev, "(%s) Writing size is bigger than buffer size\n", __func__); + // ret = -EINVAL; + // goto out; + // } + + if ((pdata != NULL) && (pdata->packageNo == pdata->packageCount)) { + pr_info("rpmsg_sdb(%s): signal bufferfull!\n", __func__); + eventfd_signal(datastructureptr->efd_ctx, 1); + break; + + } + + } + + + /* Signal to User space application */ +/** list_for_each(pos, &drv->buffer_list) + { + datastructureptr = list_entry(pos, struct sdb_buf_t, buflist); + if (datastructureptr->index == buffer_id) { + datastructureptr->writing_size = buffer_size; + + if (datastructureptr->writing_size > datastructureptr->size) { + dev_err(rpmsg_sdb_dev, "(%s) Writing size is bigger than buffer size\n", __func__); + ret = -EINVAL; + goto out; + } + + eventfd_signal(datastructureptr->efd_ctx, 1); + break; + } + } +*/ + +out: + kfree(rpmsg_RxBuf); + kfree(pdata); + return ret; +} + +static int rpmsg_sdb_drv_probe(struct rpmsg_device *rpdev) +{ + int ret = 0; + struct device *dev = &rpdev->dev; + struct rpmsg_sdb_t *rpmsg_sdb; + + pr_info("mon-datafile: registering started\n"); + + rpmsg_sdb = devm_kzalloc(dev, sizeof(*rpmsg_sdb), GFP_KERNEL); + if (!rpmsg_sdb) + return -ENOMEM; + + mutex_init(&rpmsg_sdb->mutex); + + rpmsg_sdb->rpdev = rpdev; + + rpmsg_sdb->mdev.name = "mon-datafile";//"rpmsg-sdb"; + rpmsg_sdb->mdev.minor = MISC_DYNAMIC_MINOR; + rpmsg_sdb->mdev.fops = &rpmsg_sdb_fops; + + pr_info("mon-datafile: Set Driver data\n"); + dev_set_drvdata(&rpdev->dev, rpmsg_sdb); + + /* Register misc device */ + ret = misc_register(&rpmsg_sdb->mdev); + + if (ret) { + dev_err(dev, "Failed to register device\n"); + pr_info("mon-datafile: Failed to register device\n"); + goto err_out; + } + + rpmsg_sdb_dev = rpmsg_sdb->mdev.this_device; + + //pr_info("rpmsg_sdb: Failed to register device\n"); + dev_info(dev, "%s probed\n", rpmsg_sdb_driver_name); + +err_out: + return ret; +} + +static void rpmsg_sdb_drv_remove(struct rpmsg_device *rpmsgdev) +{ + struct rpmsg_sdb_t *drv = dev_get_drvdata(&rpmsgdev->dev); + + misc_deregister(&drv->mdev); +} + +static struct rpmsg_device_id rpmsg_driver_sdb_id_table[] = { + { .name = "vrpmdv-mon-datafile" }, + { }, +}; +MODULE_DEVICE_TABLE(rpmsg, rpmsg_driver_sdb_id_table); + +//static struct rpmsg_driver rpmsg_sdb_rmpsg_drv = { +static struct rpmsg_driver vrpmdv_monitoring_data = { + .drv.name = KBUILD_MODNAME, + .drv.owner = THIS_MODULE, + .id_table = rpmsg_driver_sdb_id_table, + .probe = rpmsg_sdb_drv_probe, + .callback = rpmsg_sdb_drv_cb, + .remove = rpmsg_sdb_drv_remove, +}; + +module_rpmsg_driver(vrpmdv_monitoring_data); + + +// static int __init rpmsg_sdb_drv_init(void) +// { +// int ret = 0; + +// /* Register rpmsg device */ +// ret = register_rpmsg_driver(&rpmsg_sdb_rmpsg_drv); + +// if (ret) { +// pr_err("rpmsg_sdb(ERROR): Failed to register device\n"); +// return ret; +// } + +// pr_info("rpmsg_sdb: Init done\n"); + +// return ret; +// } + +// static void __exit rpmsg_sdb_drv_exit(void) +// { +// unregister_rpmsg_driver(&rpmsg_sdb_rmpsg_drv); +// pr_info("rpmsg_sdb: Exit\n"); +// } + +// module_init(rpmsg_sdb_drv_init); +// module_exit(rpmsg_sdb_drv_exit); + + +MODULE_AUTHOR("Markus Lehr "); +MODULE_DESCRIPTION("shared data buffer over RPMSG"); +MODULE_VERSION(RPMSG_SDB_DRIVER_VERSION); +MODULE_LICENSE("GPL v2"); diff --git a/recipes-vrpmdv/recipes-base/vrpmdv-mon-datafile/save/vrpmdv-mon-datafile.c.old b/recipes-vrpmdv/recipes-base/vrpmdv-mon-datafile/save/vrpmdv-mon-datafile.c.old new file mode 100644 index 0000000..e62b109 --- /dev/null +++ b/recipes-vrpmdv/recipes-base/vrpmdv-mon-datafile/save/vrpmdv-mon-datafile.c.old @@ -0,0 +1,28 @@ +/* Copyright 2024 Markus Lehr + * + * + * This Software is owned by Markus Lehr. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, + * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A + * PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +// ################################################################################################## +/* + * This is a Linux kernel module/driver called "vrpmdv-monitoring-cmd " which holds the family ID + * and functions to handle the monitoring in a Generic Netlink in the kernel. + * "It registers a Netlink family called "vrpmdv-monitoring_cmd". + * + * + * You can find some more interesting documentation about Generic Netlink here: + * "Generic Netlink HOW-TO based on Jamal's original doc" https://lwn.net/Articles/208755/ + */ + + +MODULE_AUTHOR("Markus Lehr "); +MODULE_DESCRIPTION("shared data buffer over RPMSG"); +MODULE_VERSION(VRPMDV_MON_DRIVER_VERSION); +MODULE_LICENSE("GPL v2"); diff --git a/recipes-vrpmdv/recipes-base/vrpmdv-mon-datafile/save/vrpmdv-monitoring-controler.cold b/recipes-vrpmdv/recipes-base/vrpmdv-mon-datafile/save/vrpmdv-monitoring-controler.cold new file mode 100644 index 0000000..12438fe --- /dev/null +++ b/recipes-vrpmdv/recipes-base/vrpmdv-mon-datafile/save/vrpmdv-monitoring-controler.cold @@ -0,0 +1,804 @@ +/* Copyright 2024 Markus Lehr + * + * + * This Software is owned by Markus Lehr. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, + * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A + * PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +// ################################################################################################## +/* + * This is a Linux kernel module/driver called "vrpmdv-monitoring-cmd " which holds the family ID + * and functions to handle the monitoring in a Generic Netlink in the kernel. + * "It registers a Netlink family called "vrpmdv-monitoring_cmd". + * + * + * You can find some more interesting documentation about Generic Netlink here: + * "Generic Netlink HOW-TO based on Jamal's original doc" https://lwn.net/Articles/208755/ + */ + + +#include +#include + +// basic definitions for kernel module development +#include +// definitions for generic netlink families, policies etc; +// transitive dependencies for basic netlink, sockets etc +#include +// required for locking inside the .dumpit callback demonstration +#include +#include + + +// data/vars/enums/properties that describes our protocol that we implement +// on top of generic netlink (like functions we want to trigger on the receiving side) +//#include "vrpmdv-monitoring-cmd.h" + + +/* ######################## CONVENIENT LOGGING MACROS ######################## */ +// (Re)definition of some convenient logging macros from . You can see the logging +// messages when printing the kernel log, e.g. with `$ sudo dmesg`. +// See https://elixir.bootlin.com/linux/latest/source/include/linux/printk.h + +// with this redefinition we can easily prefix all log messages from pr_* logging macros +#ifdef pr_fmt +#undef pr_fmt +#endif +#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt +/* ########################################################################### */ + + +#define MSG "hello Monitoring!" + +static int count = 100; +module_param(count, int, 0644); + +struct instance_data { + int rx_count; +}; + + +// std::chrono::seconds timeoutPeriod = 5; +// auto timePoint = std::chrono::system_clock::now() + timeoutPeriod; + + +/** ----- NETLINK Driver defintion ------------------*/ + + +/** + * Generic Netlink will create a Netlink family with this name. Kernel will asign + * a numeric ID and afterwards we can talk to the family with its ID. To get + * the ID we use Generic Netlink in the userland and pass the family name. + * + * Short for: Generic Netlink VRPMDV Monitoring gnl_foobar_mcmd + */ +#define FAMILY_NAME "gnl-vrpmdv-mcmd" + +/** + * These are the attributes that we want to share in gnl_foobar_xmpl. + * You can understand an attribute as a semantic type. This is + * the payload of Netlink messages. + * GNl: Generic Netlink + */ +enum GNL_VRPMDV_XMPL_ATTRIBUTE { + /** + * 0 is never used (=> UNSPEC), you can also see this in other family definitions in Linux code. + * We do the same, although I'm not sure, if this is really enforced by code. + */ + GNL_VRPMDV_MCMD_A_UNSPEC, + /** We expect a MSG to be a null-terminated C-string. */ + GNL_VRPMDV_MCMD_A_MSG, + /** Unused marker field to get the length/count of enum entries. No real attribute. */ + __GNL_VRPMDV_MCMD_A_MAX, +}; +/** + * Number of elements in `enum GNL_VRPMDV_MCMD_COMMAND`. + */ +#define GNL_VRPMDV_MCMD_ATTRIBUTE_ENUM_LEN (__GNL_VRPMDV_MCMD_A_MAX) +/** + * The number of actual usable attributes in `enum GNL_VRPMDV_MCMD_ATTRIBUTE`. + * This is `GNL_VRPMDV_MCMD_ATTRIBUTE_ENUM_LEN` - 1 because "UNSPEC" is never used. + */ +#define GNL_VRPMDV_MCMD_ATTRIBUTE_COUNT (GNL_VRPMDV_MCMD_ATTRIBUTE_ENUM_LEN - 1) + +/** + * Enumeration of all commands (functions) that our custom protocol on top + * of generic netlink supports. This can be understood as the action that + * we want to trigger on the receiving side. + */ +enum GNL_VRPMDV_MCMD_COMMAND { + /** + * 0 is never used (=> UNSPEC), you can also see this in other family definitions in Linux code. + * We do the same, although I'm not sure, if this is really enforced by code. + */ + GNL_VRPMDV_MCMD_C_UNSPEC, + + // first real command is "1" (>0) + /** + * When this command is received, we expect the attribute `GNL_VRPMDV_MCMD_ATTRIBUTE::GNL_VRPMDV_MCMD_A_MSG` to + * be present in the Generic Netlink request message. The kernel reads the message from the packet and + * sent it to the copro. THe result will be return by creating a new Generic Netlink response message + * with an corresponding attribute/payload. + * + * This command/signaling mechanism is independent of the Netlink flag `NLM_F_ECHO (0x08)`. We use it as + * "echo specific data" instead of return a 1:1 copy of the package, which you could do with + * `NLM_F_ECHO (0x08)` for example. + */ + GNL_VRPMDV_MCMD_C_MSG, + + /** + * Provokes a NLMSG_ERR answer to this request as described in netlink manpage + * (https://man7.org/linux/man-pages/man7/netlink.7.html). + */ + GNL_VRPMDV_MCMD_C_REPLY_WITH_NLMSG_ERR, + + /** Unused marker field to get the length/count of enum entries. No real attribute. */ + __GNL_VRPMDV_MCMD_C_MAX, +}; +/** + * Number of elements in `enum GNL_VRPMDV_MCMD_COMMAND`. + */ +#define GNL_VRPMDV_MCMD_COMMAND_ENUM_LEN (__GNL_VRPMDV_MCMD_C_MAX) +/** + * The number of actual usable commands in `enum GNL_FOOBAR_XMPL_COMMAND`. + * This is `GNL_VRPMDV_MCMD_COMMAND_ENUM_LEN` - 1 because "UNSPEC" is never used. + */ +#define GNL_VRPMDV_MCMD_COMMAND_COUNT (GNL_VRPMDV_MCMD_COMMAND_ENUM_LEN - 1) + +#define NODATARECEIVED 0 +#define DATARECEIVED 1 + +/** + * Data structure required for our .doit callback handler to + * know about the progress of an ongoing cmd execution. + * See the cmd callback handler how it is used. + */ +// struct { +// // from +// /** +// * rpmsg wait for response from copro side. +// */ +// struct mutex sendMTX; +// /** +// * rpmsg wait for response from copro side. +// */ +// struct mutex receiveCV; +// /** +// * Wait Queue: if it is signaled we have received data from copro +// */ +// wait_queue_head_t receive_queue; +// /** +// * Waitflag: 0= no data received, 1 = data received +// */ +// int receive_queue_flag = NODATARECEIVED; +// /** +// * Condition vaiable signal we have received data from copro +// */ +// // std::condition_variable cv; +// // /** +// // * Number that describes how many packets we need to send until we are done +// // * during an ongoing dumpit process. 0 = done. +// // */ +// // int unsigned runs_to_go; +// // /** +// // * Number that describes how many packets per dump are sent in total. +// // * Constant per dump. +// // */ +// // int unsigned total_runs; + +// //the rpmsg device which sends the data to the copro +// struct rpmsg_device *rpdev; /* handle rpmsg device */ +// } cmd_cb_progress_data; + + +struct rpmsg_vrpmdv_mon_t{ + // from + /** + * rpmsg wait for response from copro side. + */ + struct mutex sendMTX; + /** + * rpmsg wait for response from copro side. + */ + struct mutex receiveCV; + /** + * Wait Queue: if it is signaled we have received data from copro + */ + wait_queue_head_t receive_queue; + /** + * Waitflag: 0= no data received, 1 = data received + */ + int receive_queue_flag; + //the rpmsg device which sends the data to the copro + struct rpmsg_device* rpdev; /* handle rpmsg device */ +}; + +struct rpmsg_vrpmdv_mon_t vrpmdv_mon; + + // struct mutex mutex; /* mutex to protect the ioctls */ + // struct miscdevice mdev; /* misc device ref */ + // struct rpmsg_device *rpdev; /* handle rpmsg device */ + // struct list_head buffer_list; /* buffer instances list */ + + + +// Documentation is on the implementation of this function. +int gnl_cb_vrpmdv_doit(struct sk_buff *sender_skb, struct genl_info *info); + +// Documentation is on the implementation of this function. +int gnl_cb_doit_reply_with_nlmsg_err(struct sk_buff *sender_skb, struct genl_info *info); + +/** + * The length of `struct genl_ops gnl_foobar_xmpl_ops[]`. Not necessarily + * the number of commands in `enum GNlFoobarXmplCommand`. It depends on your application logic. + * For example, you can use the same command multiple times and - dependent by flag - + * invoke a different callback handler. In our simple example we just use one .doit callback + * per operation/command. + */ +#define GNL_VRPMDV_OPS_LEN (GNL_VRPMDV_MCMD_COMMAND_COUNT) + +/** + * Array with all operations that our protocol on top of Generic Netlink + * supports. An operation is the glue between a command ("cmd" field in `struct genlmsghdr` of + * received Generic Netlink message) and the corresponding ".doit" callback function. + * See: https://elixir.bootlin.com/linux/v5.11/source/include/net/genetlink.h#L148 + */ +struct genl_ops gnl_vrpmdv_mcmd_ops[GNL_VRPMDV_OPS_LEN] = { + { + /* The "cmd" field in `struct genlmsghdr` of received Generic Netlink message */ + .cmd = GNL_VRPMDV_MCMD_C_MSG, + /* TODO Use case ? */ + .flags = 0, + /* TODO Use case ? */ + .internal_flags = 0, + /* Callback handler when a request with the specified ".cmd" above is received. + * Always validates the payload except one set NO_STRICT_VALIDATION flag in ".validate" + * See: https://elixir.bootlin.com/linux/v5.11/source/net/netlink/genetlink.c#L717 + * + * Quote from: https://lwn.net/Articles/208755 + * "The 'doit' handler should do whatever processing is necessary and return + * zero on success, or a negative value on failure. Negative return values + * will cause a NLMSG_ERROR message to be sent while a zero return value will + * only cause a NLMSG_ERROR message to be sent if the request is received with + * the NLM_F_ACK flag set." + * + * You can find this in Linux code here: + * https://elixir.bootlin.com/linux/v5.11/source/net/netlink/af_netlink.c#L2499 + * + * One can find more information about NLMSG_ERROR responses and how to handle them + * in userland in the manpage: https://man7.org/linux/man-pages/man7/netlink.7.html + * + */ + .doit = gnl_cb_vrpmdv_doit, + /* This callback is similar in use to the standard Netlink 'dumpit' callback. + * The 'dumpit' callback is invoked when a Generic Netlink message is received + * with the NLM_F_DUMP flag set. + * + * A dump can be understand as a "GET ALL DATA OF THE GIVEN ENTITY", i.e. + * the userland can receive as long as the .dumpit callback returns data. + * + * .dumpit is not mandatory, but either it or .doit must be provided, see + * https://elixir.bootlin.com/linux/v5.11/source/net/netlink/genetlink.c#L367 + * + * To be honest I don't know in what use case one should use .dumpit and why + * it is useful, because you can achieve the same also with .doit handlers. + * Anyway, this is just an example/tutorial. + * + * Quote from: https://lwn.net/Articles/208755 + * "The main difference between a 'dumpit' handler and a 'doit' handler is + * that a 'dumpit' handler does not allocate a message buffer for a response; + * a pre-allocated sk_buff is passed to the 'dumpit' handler as the first + * parameter. The 'dumpit' handler should fill the message buffer with the + * appropriate response message and return the size of the sk_buff, + * i.e. sk_buff->len, and the message buffer will automatically be sent to the + * Generic Netlink client that initiated the request. As long as the 'dumpit' + * handler returns a value greater than zero it will be called again with a + * newly allocated message buffer to fill, when the handler has no more data + * to send it should return zero; error conditions are indicated by returning + * a negative value. If necessary, state can be preserved in the + * netlink_callback parameter which is passed to the 'dumpit' handler; the + * netlink_callback parameter values will be preserved across handler calls + * for a single request." + * + * You can see the check for the NLM_F_DUMP-flag here: + * https://elixir.bootlin.com/linux/v5.11/source/net/netlink/genetlink.c#L780 + */ + .dumpit = NULL, //gnl_cb_echo_dumpit, + /* Start callback for dumps. Can be used to lock data structures. */ + .start = NULL, //gnl_cb_echo_dumpit_before, + /* Completion callback for dumps. Can be used for cleanup after a dump and releasing locks. */ + .done = NULL, //gnl_cb_echo_dumpit_before_after, + /* + 0 (= "validate strictly") or value `enum genl_validate_flags` + * see: https://elixir.bootlin.com/linux/v5.11/source/include/net/genetlink.h#L108 + */ + .validate = 0, + }, + { + .cmd = GNL_VRPMDV_MCMD_C_REPLY_WITH_NLMSG_ERR, + .flags = 0, + .internal_flags = 0, + .doit = gnl_cb_doit_reply_with_nlmsg_err, + // .dumpit is not required, only optional; application specific/dependent on your use case + // in a real application you probably have different .dumpit handlers per operation/command + .dumpit = NULL, + // in a real application you probably have different .start handlers per operation/command + .start = NULL, + // in a real application you probably have different .done handlers per operation/command + .done = NULL, + .validate = 0, + } +}; + + +/** + * Attribute policy: defines which attribute has which type (e.g int, char * etc). + * This get validated for each received Generic Netlink message, if not deactivated + * in `gnl_foobar_xmpl_ops[].validate`. + * See https://elixir.bootlin.com/linux/v5.11/source/net/netlink/genetlink.c#L717 + */ +static struct nla_policy gnl_vrpmdv_mcmd_policy[GNL_VRPMDV_MCMD_ATTRIBUTE_ENUM_LEN] = { + // In case you are seeing this syntax for the first time (I also learned this just after a few years of + // coding with C myself): The following static array initiations are equivalent: + // `int a[2] = {1, 2}` <==> `int a[2] = {[0] => 1, [1] => 2}`. + + [GNL_VRPMDV_MCMD_A_UNSPEC] = {.type = NLA_UNSPEC}, + + // You can set this to NLA_U32 for testing and send an ECHO message from the userland + // It will fail in this case and you see a entry in the kernel log. + + // `enum GNL_FOOBAR_XMPL_ATTRIBUTE::GNL_FOOBAR_XMPL_A_MSG` is a null-terminated C-String + [GNL_VRPMDV_MCMD_A_MSG] = {.type = NLA_NUL_STRING}, +}; + + + +/** + * Definition of the Netlink family we want to register using Generic Netlink functionality + */ +static struct genl_family gnl_vrpmdv_mcmd_family = { + // automatically assign an id + .id = 0, + // we don't use custom additional header info / user specific header + .hdrsize = 0, + // The name of this family, used by userspace application to get the numeric ID + .name = FAMILY_NAME, + // family specific version number; can be used to evolve application over time (multiple versions) + .version = 1, + // delegates all incoming requests to callback functions + .ops = gnl_vrpmdv_mcmd_ops, + // length of array `gnl_foobar_xmpl_ops` + .n_ops = GNL_VRPMDV_OPS_LEN, + // attribute policy (for validation of messages). Enforced automatically, except ".validate" in + // corresponding ".ops"-field is set accordingly. + .policy = gnl_vrpmdv_mcmd_policy, + // Number of attributes / bounds check for policy (array length) + .maxattr = GNL_VRPMDV_MCMD_ATTRIBUTE_ENUM_LEN, + // Owning Kernel module of the Netlink family we register. + .module = THIS_MODULE, + + // Actually not necessary because this memory region would be zeroed anyway during module load, + // but this way one sees all possible options. + + // if your application must handle multiple netlink calls in parallel (where one should not block the next + // from starting), set this to true! otherwise all netlink calls are mutually exclusive + .parallel_ops = 0, + // set to true if the family can handle network namespaces and should be presented in all of them + .netnsok = 0, + // called before an operation's doit callback, it may do additional, common, filtering and return an error + .pre_doit = NULL, + // called after an operation's doit callback, it may undo operations done by pre_doit, for example release locks + .post_doit = NULL, +}; + + + +/** + * Regular ".doit"-callback function if a Generic Netlink with command `GNL_VRPMDV_MCMD_C_MSG` is received. + * Please look into the comments where this is used as ".doit" callback above in + * `struct genl_ops gnl_vrpmdv_mcmd_ops[]` for more information about ".doit" callbacks. +*/ +int gnl_cb_vrpmdv_doit(struct sk_buff *sender_skb, struct genl_info *info) { + struct nlattr *na; + struct sk_buff *reply_skb; + int rc; + void *msg_head; + char *recv_msg; + + pr_info("%s() invoked\n", __func__); + + if (info == NULL) { + // should never happen + pr_err("An error occurred in %s():\n", __func__); + return -EINVAL; + } + + /* + * For each attribute there is an index in info->attrs which points to a nlattr structure + * in this structure the data is stored. + */ + na = info->attrs[GNL_VRPMDV_MCMD_A_MSG]; + + if (!na) { + pr_err("no info->attrs[%i]\n", GNL_VRPMDV_MCMD_A_MSG); + return -EINVAL; // we return here because we expect to recv a msg + } + + recv_msg = (char *) nla_data(na); + if (recv_msg == NULL) { + pr_err("error while receiving data\n"); + } else { + pr_info("received: '%s'\n", recv_msg); + } + + //aquire lock for cmd repmsg channel + // std::lock sendlk(cmd_cb_progress_data.sendmtx); + + //send the message to the copro over RPMSG + rc = rpmsg_send(vrpmdv_mon.rpdev->ept, recv_msg, strlen(recv_msg)); + if (rc) { + pr_err("rpmsg_send failed: %d\n", rc); + return rc; + } + + // struct rpmsg_vrpmdv_mon_t *drv = dev_get_drvdata(&rpdev->dev); + + { + pr_info("wait for response\n"); + // wait until receive_queue_flag=1 , that means we have received data from Copro + wait_event_interruptible(vrpmdv_mon.receive_queue, vrpmdv_mon.receive_queue_flag != 0 ); + pr_info("received data \n"); + //Copy data + vrpmdv_mon.receive_queue_flag = NODATARECEIVED; + + + + // std::unique_lock lk(cmd_cb_progress_data.receivemtx); + // if (myCondVar.wait_until(uLock, timePoint) == std::cv_status::timeout) + // { + // dev_err(&cmd_cb_progress_data.rpdev, "rpmsg_send failed, timeout: \n"); + // return -1: + // } + + pr_info("get response: '%s'\n", recv_msg); + } + + + + // Send a message back after we receive the reply from rpmsg channel + // --------------------- + + // Allocate some memory, since the size is not yet known use NLMSG_GOODSIZE + reply_skb = genlmsg_new(NLMSG_GOODSIZE, GFP_KERNEL); + if (reply_skb == NULL) { + pr_err("An error occurred in %s():\n", __func__); + return -ENOMEM; + } + + // Create the message headers + + // Add header to netlink message; + // afterwards the buffer looks like this: + // ---------------------------------- + // | netlink header | + // | generic netlink header | + // | | + // ---------------------------------- + // msg_head = genlmsg_put(reply_skb, // buffer for netlink message: struct sk_buff * + // // According to my findings: this is not used for routing + // // This can be used in an application specific way to target + // // different endpoints within the same user application + // // but general rule: just put sender port id here + // info->snd_portid, // sending port (not process) id: int + // info->snd_seq + 1, // sequence number: int (might be used by receiver, but not mandatory) + // &gnl_vrpmdv_mcmd_family, // struct genl_family * + // 0, // flags for Netlink header: int; application specific and not mandatory + // // The command/operation (u8) from `enum GNL_FOOBAR_XMPL_COMMAND` for Generic Netlink header + // GNL_VRPMDV_MCMD_C_MSG + // ); + + msg_head = genlmsg_put_reply(reply_skb, // buffer for netlink message: struct sk_buff * + info, // info + &gnl_vrpmdv_mcmd_family, // struct genl_family * + 0, // flags for Netlink header: int; application specific and not mandatory + // The command/operation (u8) from `enum GNL_FOOBAR_XMPL_COMMAND` for Generic Netlink header + info->genlhdr->cmd + ); + + if (msg_head == NULL) { + rc = ENOMEM; + pr_err("An error occurred in %s():\n", __func__); + return -rc; + } + + // Add a GNL_VRPMDV_MCMD_A_MSG attribute (actual value/payload to be sent) + // echo the value we just received + rc = nla_put_string(reply_skb, GNL_VRPMDV_MCMD_A_MSG, recv_msg); + if (rc != 0) { + pr_err("An error occurred in %s():\n", __func__); + return -rc; + } + + // Finalize the message: + // Corrects the netlink message header (length) to include the appended + // attributes. Only necessary if attributes have been added to the message. + genlmsg_end(reply_skb, msg_head); + + // Send the message back + rc = genlmsg_reply(reply_skb, info); + // same as genlmsg_unicast(genl_info_net(info), reply_skb, info->snd_portid) + // see https://elixir.bootlin.com/linux/v5.8.9/source/include/net/genetlink.h#L326 + + if (rc != 0) { + pr_err("An error occurred in %s():\n", __func__); + return -rc; + } + return 0; +} + +/** + * Regular ".doit"-callback function if a Generic Netlink with command `GNL_FOOBAR_XMPL_C_REPLY_WITH_NLMSG_ERR` is received. + * Please look into the comments where this is used as ".doit" callback above in + * `struct genl_ops gnl_foobar_xmpl_ops[]` for more information about ".doit" callbacks. +*/ +int gnl_cb_doit_reply_with_nlmsg_err(struct sk_buff *sender_skb, struct genl_info *info) { + pr_info("%s() invoked, a NLMSG_ERR response will be sent back\n", __func__); + + /* + * Generic Netlink is smart enough and sends a NLMSG_ERR reply automatically as reply + * Quote from https://lwn.net/Articles/208755/: + * "The 'doit' handler should do whatever processing is necessary and return + * zero on success, or a negative value on failure. Negative return values + * will cause a NLMSG_ERROR message to be sent while a zero return value will + * only cause a NLMSG_ERROR message to be sent if the request is received with + * the NLM_F_ACK flag set." + * + * You can find this in Linux code here: + * https://elixir.bootlin.com/linux/v5.11/source/net/netlink/af_netlink.c#L2499 + * + * One can find more information about NLMSG_ERROR responses and how to handle them + * in userland in the manpage: https://man7.org/linux/man-pages/man7/netlink.7.html + */ + return -EINVAL; +} + + + +/** ----- NETLINK Driver defintion ------------------*/ + + + + + +/** + * callback that is called after the copro send data + * we have to copy it in a buffer for the netlink and later send it back to the userland + * +*/ +static int vrpmdv_monitoring_cb(struct rpmsg_device *rpdev, void *data, int len, + void *priv, u32 src) +{ + int ret = 0; + struct instance_data *idata = dev_get_drvdata(&rpdev->dev); + + dev_info(&rpdev->dev, "incoming msg %d (src: 0x%x)\n", + ++idata->rx_count, src); + + print_hex_dump_debug(__func__, DUMP_PREFIX_NONE, 16, 1, data, len, + true); + + vrpmdv_mon.receive_queue_flag= DATARECEIVED; + wake_up_interruptible(&(vrpmdv_mon.receive_queue)); + + // /* samples should not live forever */ + // if (idata->rx_count >= count) { + // dev_info(&rpdev->dev, "goodbye!\n"); + // return 0; + // } + + /* send a new message now */ + // ret = rpmsg_send(rpdev->ept, MSG, strlen(MSG)); + // if (ret) + // dev_err(&rpdev->dev, "rpmsg_send failed: %d\n", ret); + + return ret; +} + +static int vrpmdv_monitoring_probe(struct rpmsg_device *rpdev) +{ + int rc; + + // int ret; + // struct instance_data *idata; + + dev_info(&rpdev->dev, "new channel: 0x%x -> 0x%x!\n", + rpdev->src, rpdev->dst); + + // idata = devm_kzalloc(&rpdev->dev, sizeof(*idata), GFP_KERNEL); + // if (!idata) + // return -ENOMEM; + + // dev_set_drvdata(&rpdev->dev, idata); + + // /* send a message to our remote processor to */ + // ret = rpmsg_send(rpdev->ept, MSG, strlen(MSG)); + // if (ret) { + // dev_err(&rpdev->dev, "vrpmdv_monitoring_controler_send failed: %d\n", ret); + // return ret; + // } + + // return 0; + + // struct device *dev; + // dev = &rpdev->dev; + // struct rpmsg_vrpmdv_mon_t *rpmsg_vrpmdv_mon; + + // rpmsg_vrpmdv_mon = devm_kzalloc(dev, sizeof(*rpmsg_vrpmdv_mon), GFP_KERNEL); + // if (!rpmsg_vrpmdv_mon) + // return -ENOMEM; + + mutex_init(&(vrpmdv_mon.sendMTX)); + init_waitqueue_head (&(vrpmdv_mon.receive_queue)); + vrpmdv_mon.rpdev = rpdev; + + // dev_set_drvdata(&rpdev->dev, rpmsg_vrpmdv_mon); + pr_info("RPMSG CMD Device set.\n"); + + + /** NEU **/ + // if (cmd_cb_progress_data.rpdev == NULL) { + // cmd_cb_progress_data.rpdev = rpdev; + // pr_info("RPMSG CMD Device set.\n"); + // } + // else { + // pr_info("Error: RPMSG CMD Device already set. Don't set it twice\n"); + // } + + pr_info("Generic Netlink VRPMDV-Monitroring_Controler Module started.\n"); + + // Register family with its operations and policies + rc = genl_register_family(&gnl_vrpmdv_mcmd_family); + if (rc != 0) { + pr_err("FAILED: genl_register_family(): %i\n", rc); + pr_err("An error occurred while inserting the generic netlink example module\n"); + return -1; + } else { + pr_info("successfully registered custom Netlink family '" FAMILY_NAME "' using Generic Netlink.\n"); + } + + return 0; + + + +} + +static void vrpmdv_monitoring_remove(struct rpmsg_device *rpdev) +{ + int ret; + pr_info("Generic Netlink Example Module unloaded.\n"); + + // Unregister the family + ret = genl_unregister_family(&gnl_vrpmdv_mcmd_family); + if (ret != 0) { + pr_err("genl_unregister_family() failed: %i\n", ret); + return; + } else { + pr_info("successfully unregistered custom Netlink family '" FAMILY_NAME "' using Generic Netlink.\n"); + } + + mutex_destroy(&(vrpmdv_mon.sendMTX)); + wake_up_interruptible(&(vrpmdv_mon.receive_queue)); + + dev_info(&rpdev->dev, "vrpmdv-monitoring controler driver is removed\n"); + +} + +static struct rpmsg_device_id vrpmdv_monitoring_controler_id_table[] = { + { .name = "vrpmdv-monitoring-controler" }, + { }, +}; +MODULE_DEVICE_TABLE(rpmsg, vrpmdv_monitoring_controler_id_table); + +static struct rpmsg_driver vrpmdv_monitoring_controler = { + .drv.name = KBUILD_MODNAME, + .id_table = vrpmdv_monitoring_controler_id_table, + .probe = vrpmdv_monitoring_probe, + .callback = vrpmdv_monitoring_cb, + .remove = vrpmdv_monitoring_remove, +}; +module_rpmsg_driver(vrpmdv_monitoring_controler); + + +// static struct rpmsg_driver vrpmdv_monitoring_data = { +// .drv.name = KBUILD_MODNAME, +// .id_table = vrpmdv_monitoring_controler_id_table, +// .probe = vrpmdv_monitoring_probe, +// .callback = vrpmdv_monitoring_cb, +// .remove = vrpmdv_monitoring_remove, +// }; + +// module_rpmsg_driver(vrpmdv_monitoring_data); + +MODULE_DESCRIPTION("Remote processor messaging vrpmdv monitoring controler"); +MODULE_LICENSE("GPL v2"); + + + +// /** +// * Module/driver initializer. Called on module load/insertion. +// * +// * @return success (0) or error code. +// */ +// static int __init gnl_foobar_xmpl_module_init(void) { +// int rc; +// pr_info("Generic Netlink Example Module inserted.\n"); + +// // Register family with its operations and policies +// rc = genl_register_family(&gnl_foobar_xmpl_family); +// if (rc != 0) { +// pr_err("FAILED: genl_register_family(): %i\n", rc); +// pr_err("An error occurred while inserting the generic netlink example module\n"); +// return -1; +// } else { +// pr_info("successfully registered custom Netlink family '" FAMILY_NAME "' using Generic Netlink.\n"); +// } + +// mutex_init(&dumpit_cb_progress_data.mtx); + +// return 0; +// } + +// /** +// * Module/driver uninitializer. Called on module unload/removal. +// * +// * @return success (0) or error code. +// */ +// static void __exit gnl_foobar_xmpl_module_exit(void) { +// int ret; +// pr_info("Generic Netlink Example Module unloaded.\n"); + +// // Unregister the family +// ret = genl_unregister_family(&gnl_foobar_xmpl_family); +// if (ret != 0) { +// pr_err("genl_unregister_family() failed: %i\n", ret); +// return; +// } else { +// pr_info("successfully unregistered custom Netlink family '" FAMILY_NAME "' using Generic Netlink.\n"); +// } + +// mutex_destroy(&dumpit_cb_progress_data.mtx); +// } + + +// ---- + +// static int __init rpmsg_sdb_drv_init(void) +// { +// int ret = 0; + +// /* Register rpmsg device */ +// ret = register_rpmsg_driver(&rpmsg_sdb_rmpsg_drv); + +// if (ret) { +// pr_err("rpmsg_sdb(ERROR): Failed to register device\n"); +// return ret; +// } + +// pr_info("rpmsg_sdb: Init done\n"); + +// return ret; +// } + +// static void __exit rpmsg_sdb_drv_exit(void) +// { +// unregister_rpmsg_driver(&rpmsg_sdb_rmpsg_drv); +// pr_info("rpmsg_sdb: Exit\n"); +// } + +// module_init(rpmsg_sdb_drv_init); +// module_exit(rpmsg_sdb_drv_exit); diff --git a/recipes-vrpmdv/recipes-base/vrpmdv-mon-datafile/save/vrpmdv-monitoring-driver copy.bb.old b/recipes-vrpmdv/recipes-base/vrpmdv-mon-datafile/save/vrpmdv-monitoring-driver copy.bb.old new file mode 100644 index 0000000..6aeebb9 --- /dev/null +++ b/recipes-vrpmdv/recipes-base/vrpmdv-mon-datafile/save/vrpmdv-monitoring-driver copy.bb.old @@ -0,0 +1,24 @@ +SUMMARY = "VRPMDV Monitoring Driver" +LICENSE = "CLOSED" +# LICENSE = "GPL-2.0-only" +# LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/GPL-2.0-only;md5=801f80980d171dd6425610833a22dbe6" + +inherit module + +SRC_URI = "file://Makefile \ + file://stm32_rpmsg_sdb.c \ + " +# file://75-rpmsg-sdb.rules \ +S = "${WORKDIR}" + +# The inherit of module.bbclass will automatically name module packages with +# "kernel-module-" prefix as required by the oe-core build environment. + +# do_install:append() { + # udev rules for rpmsg-sdb + # install -d ${D}${sysconfdir}/udev/rules.d/ + # install -m 0644 ${WORKDIR}/75-rpmsg-sdb.rules ${D}${sysconfdir}/udev/rules.d/75-rpmsg-sdb.rules +# } +#FILES:${PN} += "${sysconfdir}/udev/rules.d/" + +RPROVIDES:${PN} += "kernel-module-vrpmdv-monitoring-driver" \ No newline at end of file diff --git a/recipes-vrpmdv/recipes-base/vrpmdv-mon-datafile/save/vrpmdv-monitoring-driver copy1.bb.old b/recipes-vrpmdv/recipes-base/vrpmdv-mon-datafile/save/vrpmdv-monitoring-driver copy1.bb.old new file mode 100644 index 0000000..2f245db --- /dev/null +++ b/recipes-vrpmdv/recipes-base/vrpmdv-mon-datafile/save/vrpmdv-monitoring-driver copy1.bb.old @@ -0,0 +1,26 @@ +SUMMARY = "VRPMDV Monitoring Driver" +LICENSE = "GPL-2.0-only" +LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/GPL-2.0-only;md5=801f80980d171dd6425610833a22dbe6" + +inherit module + +SRC_URI = "file://Makefile \ + file://vrpmdv-monitoring.c \ + file://75-vrpmdv-monitoring.rules \ + " + +S = "${WORKDIR}" + +# The inherit of module.bbclass will automatically name module packages with +# "kernel-module-" prefix as required by the oe-core build environment. + +do_install:append() { + # udev rules for vrpmdv-monitoring + install -d ${D}${sysconfdir}/udev/rules.d/ + install -m 0644 ${WORKDIR}/75-vrpmdv-monitoring.rules ${D}${sysconfdir}/udev/rules.d/75-vrpmdv-monitoring.rules +} + +FILES:${PN} += "${sysconfdir}/udev/rules.d/" + + +RPROVIDES:${PN} += "kernel-module-vrpmdv-monitoring" \ No newline at end of file diff --git a/recipes-vrpmdv/recipes-base/vrpmdv-mon-datafile/save/vrpmdv-monitoring-driverv2.bb.old b/recipes-vrpmdv/recipes-base/vrpmdv-mon-datafile/save/vrpmdv-monitoring-driverv2.bb.old new file mode 100644 index 0000000..03bdb32 --- /dev/null +++ b/recipes-vrpmdv/recipes-base/vrpmdv-mon-datafile/save/vrpmdv-monitoring-driverv2.bb.old @@ -0,0 +1,26 @@ +SUMMARY = "VRPMDV Monitoring Driver" +LICENSE = "GPL-2.0-only" +LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/GPL-2.0-only;md5=801f80980d171dd6425610833a22dbe6" + +inherit module + +SRC_URI = "file://Makefile \ + file://vrpmdv-monitoring.c \ + file://75-vrpmdv-monitoring.rules \ + " + +S = "${WORKDIR}" + +# The inherit of module.bbclass will automatically name module packages with +# "kernel-module-" prefix as required by the oe-core build environment. + +do_install:append() { + # udev rules for vrpmdv-monitoring + install -d ${D}${sysconfdir}/udev/rules.d/ + install -m 0644 ${WORKDIR}/75-vrpmdv-monitoring.rules ${D}${sysconfdir}/udev/rules.d/75-vrpmdv-monitoring.rules +} + +FILES:${PN} += "${sysconfdir}/udev/rules.d/" +FILES:${PN} += "${base_libdir}/modules/" + +RPROVIDES:${PN} += "vrpmdv-monitoring" diff --git a/recipes-vrpmdv/recipes-base/vrpmdv-mon-datafile/vrpmdv-mon-datafile.bb b/recipes-vrpmdv/recipes-base/vrpmdv-mon-datafile/vrpmdv-mon-datafile.bb new file mode 100644 index 0000000..c80b221 --- /dev/null +++ b/recipes-vrpmdv/recipes-base/vrpmdv-mon-datafile/vrpmdv-mon-datafile.bb @@ -0,0 +1,25 @@ +SUMMARY = "VRPMDV Monitoring Controler" +LICENSE = "GPL-2.0-only" +LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/GPL-2.0-only;md5=801f80980d171dd6425610833a22dbe6" + +inherit module + +SRC_URI = "file://Makefile \ + file://vrpmdv-mon-datafile.c \ + file://75-mon-datafile.rules \ + " + +S = "${WORKDIR}" + +# The inherit of module.bbclass will automatically name module packages with +# "kernel-module-" prefix as required by the oe-core build environment. + +do_install:append() { + # udev rules for rpmsg-sdb + install -d ${D}${sysconfdir}/udev/rules.d/ + install -m 0644 ${WORKDIR}/75-mon-datafile.rules ${D}${sysconfdir}/udev/rules.d/75-mon-datafile.rules +} +FILES:${PN} += "${sysconfdir}/udev/rules.d/" + + +RPROVIDES:${PN} += "kernel-module-vrpmdv-mon-datafile" diff --git a/recipes-vrpmdv/recipes-base/vrpmdv-mon-tty/.vscode/settings.json b/recipes-vrpmdv/recipes-base/vrpmdv-mon-tty/.vscode/settings.json new file mode 100644 index 0000000..a644266 --- /dev/null +++ b/recipes-vrpmdv/recipes-base/vrpmdv-mon-tty/.vscode/settings.json @@ -0,0 +1,8 @@ +{ + "files.associations": { + "rpmsg.h": "c", + "types.h": "c", + "ioctl.h": "c", + "wait.h": "c" + } +} \ No newline at end of file diff --git a/recipes-vrpmdv/recipes-base/vrpmdv-mon-tty/Create-Kernel-Driver.odt b/recipes-vrpmdv/recipes-base/vrpmdv-mon-tty/Create-Kernel-Driver.odt new file mode 100644 index 0000000000000000000000000000000000000000..cee5ccfb8a2a2416490d82af7db60d68015b3e7e GIT binary patch literal 314929 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 z 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