[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