[bootlin/training-materials updates] master: preempt-rt: labs: update lab data (d5d59a4a)
Maxime Chevallier
maxime.chevallier at bootlin.com
Wed Jan 18 18:52:05 CET 2023
Repository : https://github.com/bootlin/training-materials
On branch : master
Link : https://github.com/bootlin/training-materials/commit/d5d59a4ae96b160e13d1deb253be872882cdf0d7
>---------------------------------------------------------------
commit d5d59a4ae96b160e13d1deb253be872882cdf0d7
Author: Maxime Chevallier <maxime.chevallier at bootlin.com>
Date: Wed Jan 18 11:03:38 2023 +0100
preempt-rt: labs: update lab data
Signed-off-by: Maxime Chevallier <maxime.chevallier at bootlin.com>
>---------------------------------------------------------------
d5d59a4ae96b160e13d1deb253be872882cdf0d7
...1-package-Introduce-libtraceevent-package.patch | 79 +++++++++++++++
...0002-package-Introduce-libtracefs-package.patch | 84 ++++++++++++++++
...linux-tools-Add-support-for-the-rtla-tool.patch | 65 +++++++++++++
lab-data/preempt-rt/lab3/Makefile | 12 ++-
lab-data/preempt-rt/lab3/crc/Makefile | 4 +
lab-data/preempt-rt/lab3/crc/crc_test | Bin 0 -> 25632 bytes
lab-data/preempt-rt/lab3/crc_test.c | 106 +++++++++++++++++++++
7 files changed, 345 insertions(+), 5 deletions(-)
diff --git a/lab-data/preempt-rt/buildroot-patches/0001-package-Introduce-libtraceevent-package.patch b/lab-data/preempt-rt/buildroot-patches/0001-package-Introduce-libtraceevent-package.patch
new file mode 100644
index 00000000..1867186f
--- /dev/null
+++ b/lab-data/preempt-rt/buildroot-patches/0001-package-Introduce-libtraceevent-package.patch
@@ -0,0 +1,79 @@
+From 293e39b370f7a669d394764618d9a370204e7a21 Mon Sep 17 00:00:00 2001
+From: Maxime Chevallier <maxime.chevallier at bootlin.com>
+Date: Wed, 18 Jan 2023 09:37:16 +0100
+Subject: [PATCH 1/3] package: Introduce libtraceevent package
+
+Signed-off-by: Maxime Chevallier <maxime.chevallier at bootlin.com>
+---
+ package/Config.in | 1 +
+ package/libtraceevent/Config.in | 4 +++
+ package/libtraceevent/libtraceevent.mk | 34 ++++++++++++++++++++++++++
+ 3 files changed, 39 insertions(+)
+ create mode 100644 package/libtraceevent/Config.in
+ create mode 100644 package/libtraceevent/libtraceevent.mk
+
+diff --git a/package/Config.in b/package/Config.in
+index 682faf3697..4624ab7496 100644
+--- a/package/Config.in
++++ b/package/Config.in
+@@ -117,6 +117,7 @@ menu "Debugging, profiling and benchmark"
+ source "package/kyua/Config.in"
+ source "package/latencytop/Config.in"
+ source "package/libbpf/Config.in"
++ source "package/libtraceevent/Config.in"
+ source "package/lmbench/Config.in"
+ source "package/lsof/Config.in"
+ source "package/ltp-testsuite/Config.in"
+diff --git a/package/libtraceevent/Config.in b/package/libtraceevent/Config.in
+new file mode 100644
+index 0000000000..8ca8a4eb10
+--- /dev/null
++++ b/package/libtraceevent/Config.in
+@@ -0,0 +1,4 @@
++config BR2_PACKAGE_LIBTRACEEVENT
++ bool "libtraceevebt"
++ help
++ libtraceevent
+diff --git a/package/libtraceevent/libtraceevent.mk b/package/libtraceevent/libtraceevent.mk
+new file mode 100644
+index 0000000000..f671062be4
+--- /dev/null
++++ b/package/libtraceevent/libtraceevent.mk
+@@ -0,0 +1,34 @@
++################################################################################
++#
++# libtraceevent
++#
++################################################################################
++
++LIBTRACEEVENT_VERSION = 1.7.1
++LIBTRACEEVENT_SOURCE = libtraceevent-$(LIBTRACEEVENT_VERSION).tar.gz
++LIBTRACEEVENT_SITE = https://git.kernel.org/pub/scm/libs/libtrace/libtraceevent.git/snapshot
++LIBTRACEEVENT_INSTALL_STAGING = YES
++LIBTRACEEVENT_LICENSE = GPL-2.0, LGPL-2.1
++LIBTRACEEVENT_LICENSE_FILES = LICENSES/GPL-2.0 LICENSES/LGPL-2.1
++
++define LIBTRACEEVENT_BUILD_CMDS
++ $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D)
++endef
++
++define LIBTRACEEVENT_INSTALL_STAGING_CMDS
++ $(TARGET_MAKE_ENV) $(MAKE1) -C $(@D) $(TARGET_CONFIGURE_OPTS) \
++ DESTDIR=$(STAGING_DIR) \
++ pkgconfig_dir="/usr/lib/pkgconfig" \
++ prefix="/usr" \
++ install
++endef
++
++define LIBTRACEEVENT_INSTALL_TARGET_CMDS
++ $(TARGET_MAKE_ENV) $(MAKE1) -C $(@D) $(TARGET_CONFIGURE_OPTS) \
++ DESTDIR=$(TARGET_DIR) \
++ pkgconfig_dir="" \
++ prefix="/usr" \
++ install
++endef
++
++$(eval $(generic-package))
+--
+2.39.0
+
diff --git a/lab-data/preempt-rt/buildroot-patches/0002-package-Introduce-libtracefs-package.patch b/lab-data/preempt-rt/buildroot-patches/0002-package-Introduce-libtracefs-package.patch
new file mode 100644
index 00000000..2c8fe0d0
--- /dev/null
+++ b/lab-data/preempt-rt/buildroot-patches/0002-package-Introduce-libtracefs-package.patch
@@ -0,0 +1,84 @@
+From f91cb89114ff9694c0944354bfc2c73014a2dabf Mon Sep 17 00:00:00 2001
+From: Maxime Chevallier <maxime.chevallier at bootlin.com>
+Date: Wed, 18 Jan 2023 09:37:43 +0100
+Subject: [PATCH 2/3] package: Introduce libtracefs package
+
+Signed-off-by: Maxime Chevallier <maxime.chevallier at bootlin.com>
+---
+ package/Config.in | 1 +
+ package/libtracefs/Config.in | 5 +++++
+ package/libtracefs/libtracefs.mk | 38 ++++++++++++++++++++++++++++++++
+ 3 files changed, 44 insertions(+)
+ create mode 100644 package/libtracefs/Config.in
+ create mode 100644 package/libtracefs/libtracefs.mk
+
+diff --git a/package/Config.in b/package/Config.in
+index 4624ab7496..30dd98db73 100644
+--- a/package/Config.in
++++ b/package/Config.in
+@@ -118,6 +118,7 @@ menu "Debugging, profiling and benchmark"
+ source "package/latencytop/Config.in"
+ source "package/libbpf/Config.in"
+ source "package/libtraceevent/Config.in"
++ source "package/libtracefs/Config.in"
+ source "package/lmbench/Config.in"
+ source "package/lsof/Config.in"
+ source "package/ltp-testsuite/Config.in"
+diff --git a/package/libtracefs/Config.in b/package/libtracefs/Config.in
+new file mode 100644
+index 0000000000..03000ea459
+--- /dev/null
++++ b/package/libtracefs/Config.in
+@@ -0,0 +1,5 @@
++config BR2_PACKAGE_LIBTRACEFS
++ bool "libtracefs"
++ select BR2_PACKAGE_LIBTRACEEVENT
++ help
++ libtracefs
+diff --git a/package/libtracefs/libtracefs.mk b/package/libtracefs/libtracefs.mk
+new file mode 100644
+index 0000000000..5d6501deaf
+--- /dev/null
++++ b/package/libtracefs/libtracefs.mk
+@@ -0,0 +1,38 @@
++################################################################################
++#
++# libtracefs
++#
++################################################################################
++
++LIBTRACEFS_VERSION = 1.6.4
++LIBTRACEFS_SOURCE = libtracefs-$(LIBTRACEFS_VERSION).tar.gz
++LIBTRACEFS_SITE = https://git.kernel.org/pub/scm/libs/libtrace/libtracefs.git/snapshot
++LIBTRACEFS_INSTALL_STAGING = YES
++LIBTRACEFS_LICENSE = GPL-2.0, LGPL-2.1
++LIBTRACEFS_LICENSE_FILES = LICENSES/GPL-2.0 LICENSES/LGPL-2.1
++
++LIBTRACEFS_DEPENDENCIES = host-pkgconf libtraceevent
++
++LIBTRACEFS_CFLAGS = $(TARGET_CFLAGS)
++LIBTRACEFS_CFLAGS += $($(HOST_DIR)/bin/pkg-config --cflags libtraceevent)
++
++define LIBTRACEFS_BUILD_CMDS
++ $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) \
++ CFLAGS="$(LIBTRACEFS_CFLAGS)" \
++ $(MAKE) -C $(@D)
++endef
++
++define LIBTRACEFS_INSTALL_STAGING_CMDS
++ $(TARGET_MAKE_ENV) $(MAKE1) -C $(@D) $(TARGET_CONFIGURE_OPTS) \
++ DESTDIR=$(STAGING_DIR) \
++ pkgconfig_dir="/usr/lib/pkgconfig" prefix="/usr" \
++ install
++endef
++
++define LIBTRACEFS_INSTALL_TARGET_CMDS
++ $(TARGET_MAKE_ENV) $(MAKE1) -C $(@D) $(TARGET_CONFIGURE_OPTS) \
++ DESTDIR=$(TARGET_DIR) pkgconfig_dir="" prefix="/usr" \
++ install
++endef
++
++$(eval $(generic-package))
+--
+2.39.0
+
diff --git a/lab-data/preempt-rt/buildroot-patches/0003-package-linux-tools-Add-support-for-the-rtla-tool.patch b/lab-data/preempt-rt/buildroot-patches/0003-package-linux-tools-Add-support-for-the-rtla-tool.patch
new file mode 100644
index 00000000..af53d6dc
--- /dev/null
+++ b/lab-data/preempt-rt/buildroot-patches/0003-package-linux-tools-Add-support-for-the-rtla-tool.patch
@@ -0,0 +1,65 @@
+From 6d119252b88ce163bdee6da594180caf27f3fdc0 Mon Sep 17 00:00:00 2001
+From: Maxime Chevallier <maxime.chevallier at bootlin.com>
+Date: Wed, 18 Jan 2023 09:38:08 +0100
+Subject: [PATCH 3/3] package/linux-tools: Add support for the rtla tool
+
+Signed-off-by: Maxime Chevallier <maxime.chevallier at bootlin.com>
+---
+ package/linux-tools/Config.in | 7 ++++++
+ package/linux-tools/linux-tool-rtla.mk.in | 26 +++++++++++++++++++++++
+ 2 files changed, 33 insertions(+)
+ create mode 100644 package/linux-tools/linux-tool-rtla.mk.in
+
+diff --git a/package/linux-tools/Config.in b/package/linux-tools/Config.in
+index 8a0b6d5802..be1712d4e6 100644
+--- a/package/linux-tools/Config.in
++++ b/package/linux-tools/Config.in
+@@ -102,6 +102,13 @@ config BR2_PACKAGE_LINUX_TOOLS_PERF_NEEDS_HOST_PYTHON3
+
+ endif
+
++config BR2_PACKAGE_LINUX_TOOLS_RTLA
++ bool "rtla"
++ select BR2_PACKAGE_LINUX_TOOLS
++ select BR2_PACKAGE_LIBTRACEFS
++ help
++ Install the RTLA suite
++
+ config BR2_PACKAGE_LINUX_TOOLS_SELFTESTS
+ bool"selftests"
+ depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS # bash
+diff --git a/package/linux-tools/linux-tool-rtla.mk.in b/package/linux-tools/linux-tool-rtla.mk.in
+new file mode 100644
+index 0000000000..8c480ecbb7
+--- /dev/null
++++ b/package/linux-tools/linux-tool-rtla.mk.in
+@@ -0,0 +1,26 @@
++################################################################################
++#
++# rtla
++#
++################################################################################
++
++LINUX_TOOLS += rtla
++
++RTLA_DEPENDENCIES = host-pkgconf libtracefs
++RTLA_MAKE_OPTS = $(LINUX_MAKE_FLAGS) \
++ CC=$(TARGET_CC) \
++ LDFLAGS="$(TARGET_LDFLAGS)" \
++ CFLAGS="$(TARGET_CFLAGS) $($(HOST_DIR)/bin/pkg-config --cflags libtracefs)"
++ PKG_CONFIG_PATH=$(STAGING_DIR)/usr/lib/pkgconfig
++
++define RTLA_BUILD_CMDS
++ $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(RTLA_MAKE_OPTS) \
++ $(MAKE) -C $(LINUX_DIR)/tools/tracing rtla
++endef
++
++define RTLA_INSTALL_TARGET_CMDS
++ $(TARGET_MAKE_ENV) $(MAKE) -C $(LINUX_DIR)/tools/tracing \
++ $(RTLA_MAKE_OPTS) \
++ DESTDIR=$(TARGET_DIR) \
++ rtla_install
++endef
+--
+2.39.0
+
diff --git a/lab-data/preempt-rt/lab3/Makefile b/lab-data/preempt-rt/lab3/Makefile
index d1fd59c3..69446cd4 100644
--- a/lab-data/preempt-rt/lab3/Makefile
+++ b/lab-data/preempt-rt/lab3/Makefile
@@ -1,13 +1,15 @@
-all: pgflt gpiotest
+CC?=$(CROSS_COMPILE)gcc
-pgflt: pgflt.c
- $(CROSS_COMPILE)gcc -O0 -o$@ $^ -lrt
+all: crc_test gpiotest
+
+crc_test: crc_test.c
+ $(CC) -O0 -o$@ $^ -lrt
gpiotest: gpiotest.c
- $(CROSS_COMPILE)gcc -O0 -o$@ $^ -lrt -lgpiod
+ $(CC) -O0 -o$@ $^ -lrt -lgpiod
clean:
- rm -f pgflt
+ rm -f crc_test
rm -f gpiotest
.PHONY: clean
diff --git a/lab-data/preempt-rt/lab3/crc/Makefile b/lab-data/preempt-rt/lab3/crc/Makefile
new file mode 100644
index 00000000..447de688
--- /dev/null
+++ b/lab-data/preempt-rt/lab3/crc/Makefile
@@ -0,0 +1,4 @@
+CC=${CROSS_COMPILE}gcc
+
+crc_test: crc_test.c
+ ${CC} $< -o $@
diff --git a/lab-data/preempt-rt/lab3/crc/crc_test b/lab-data/preempt-rt/lab3/crc/crc_test
new file mode 100755
index 00000000..7ed07c39
Binary files /dev/null and b/lab-data/preempt-rt/lab3/crc/crc_test differ
diff --git a/lab-data/preempt-rt/lab3/crc_test.c b/lab-data/preempt-rt/lab3/crc_test.c
new file mode 100644
index 00000000..d865170d
--- /dev/null
+++ b/lab-data/preempt-rt/lab3/crc_test.c
@@ -0,0 +1,106 @@
+#include <time.h>
+#include <fcntl.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdint.h>
+#include <string.h>
+#include <unistd.h>
+#include <stdbool.h>
+#include <inttypes.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+
+#include <malloc.h>
+#include <sys/mman.h>
+
+#define DATA_SIZE (16 * 1024 * 1024)
+
+#define SEC_TO_NSEC 1000000000ULL
+
+static uint64_t timespec_to_nano(struct timespec *spec)
+{
+ return spec->tv_sec * SEC_TO_NSEC + spec->tv_nsec;
+}
+
+uint32_t crc32_for_byte(uint32_t r)
+{
+ for (int j = 0; j < 8; ++j)
+ r = (r & 1 ? 0 : (uint32_t)0xEDB88320L) ^ r >> 1;
+
+ return r ^ (uint32_t)0xFF000000L;
+}
+
+static uint32_t crc_table[0x100];
+
+static void init_crc_table(void)
+{
+ size_t i;
+
+ for (i = 0; i < 0x100; i++)
+ crc_table[i] = crc32_for_byte(i);
+}
+
+static uint32_t crc32(const void *data, size_t n_bytes)
+{
+ uint32_t crc = 0;
+ size_t i;
+
+ for (i = 0; i < n_bytes; i++)
+ crc = crc_table[(uint8_t)crc ^ ((uint8_t *)data)[i]] ^ crc >> 8;
+
+ return crc;
+}
+
+void init_rt() {
+ char *buff;
+
+ mlockall(MCL_CURRENT | MCL_FUTURE);
+ mallopt(M_TRIM_THRESHOLD, -1);
+ mallopt(M_MMAP_MAX, 0);
+
+ buff= malloc(2 * DATA_SIZE);
+ memset(buff, 0, 2 * DATA_SIZE);
+ free(buff);
+
+}
+
+int main(int argc, char **argv)
+{
+ int fd;
+ int i = 0;
+ uint32_t crc;
+ char *data;
+ ssize_t ret;
+ uint64_t start_nano, end_nano;
+ struct timespec start = {0, 0}, end = {0, 0};
+
+ init_crc_table();
+
+ //init_rt();
+
+ data = malloc(DATA_SIZE);
+ while (1) {
+
+
+ clock_gettime(CLOCK_MONOTONIC, &start);
+ start_nano = timespec_to_nano(&start);
+
+ if (!data) {
+ fprintf(stderr, "Failed to allocate %d bytes\n", DATA_SIZE);
+ return EXIT_FAILURE;
+ }
+
+ memset(data, i++, DATA_SIZE);
+ crc = crc32(data, DATA_SIZE);
+
+ clock_gettime(CLOCK_MONOTONIC, &end);
+ end_nano = timespec_to_nano(&end);
+
+
+ printf("Computed crc 0x%" PRIx32 " in %" PRIu64 " nano\n", crc, end_nano - start_nano);
+ sleep(1);
+ }
+ free(data);
+
+ return 0;
+}
More information about the training-materials-updates
mailing list