From 7b35e02ea55fe41131e6575e00a57d54d3470c91 Mon Sep 17 00:00:00 2001 From: Victor Smirnov <53015676+vityaman@users.noreply.github.com> Date: Tue, 18 Nov 2025 07:56:46 +0300 Subject: [PATCH 1/9] Create vtkm/README.md Signed-off-by: Victor Smirnov <53015676+vityaman@users.noreply.github.com> --- lab/vtkm/README.md | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 lab/vtkm/README.md diff --git a/lab/vtkm/README.md b/lab/vtkm/README.md new file mode 100644 index 0000000..14089d2 --- /dev/null +++ b/lab/vtkm/README.md @@ -0,0 +1,26 @@ +# Базовый трек. Лабораторная работа 3 + +## Задание + +Разработать комплекс программ на пользовательском уровне и уровне ярда, который собирает +информацию на стороне ядра и передает информацию на уровень пользователя, и выводит ее в +удобном для чтения человеком виде. Программа на уровне пользователя получает на вход +аргумент(ы) командной строки (не адрес!), позволяющие идентифицировать из системных таблиц +необходимый путь до целевой структуры, осуществляет передачу на уровень ядра, получает +информацию из данной структуры и распечатывает структуру в стандартный вывод. Загружаемый +модуль ядра принимает запрос через указанный в задании интерфейс, определяет путь до целевой +структуры по переданному запросу и возвращает результат на уровень пользователя. + +Интерфейс передачи между программой пользователя и ядром и целевая структура задается +преподавателем. Интерфейс передачи может быть один из следующих: +- `syscall` - интерфейс системных вызовов. +- `ioctl` - передача параметров через управляющий вызов к файлу/устройству. +- `procfs` - файловая система `/proc`, передача параметров через запись в файл. +- `debugfs` - отладочная файловая система `/sys/kernel/debug`, передача параметров через + запись в файл. + +Целевая структура может быть задана двумя способами: + +- Именем структуры в заголовочных файлах Linux +- Файлом в каталоге `/proc`. В этом случае необходимо определить целевую структуру по пути + файла в `/proc` и выводимым данным. From f0e784fc1647e1eff30f6476228bf911dfc2ca7f Mon Sep 17 00:00:00 2001 From: Victor Smirnov <53015676+vityaman@users.noreply.github.com> Date: Tue, 18 Nov 2025 07:58:27 +0300 Subject: [PATCH 2/9] Create .clang-format Signed-off-by: Victor Smirnov <53015676+vityaman@users.noreply.github.com> --- lab/vtkm/.clang-format | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 lab/vtkm/.clang-format diff --git a/lab/vtkm/.clang-format b/lab/vtkm/.clang-format new file mode 100644 index 0000000..dd99110 --- /dev/null +++ b/lab/vtkm/.clang-format @@ -0,0 +1,16 @@ +BasedOnStyle: Google + +AccessModifierOffset: -2 + +AllowShortFunctionsOnASingleLine: None +AllowShortIfStatementsOnASingleLine: false +AllowShortLoopsOnASingleLine: false + +DerivePointerAlignment: false +BreakConstructorInitializers: BeforeComma +AlignAfterOpenBracket: BlockIndent + +BinPackArguments: false +BinPackParameters: false + +AlignArrayOfStructures: Right From 33d3286d6d707cc3f4dfb6c30efba9e1103e86e0 Mon Sep 17 00:00:00 2001 From: Victor Smirnov <53015676+vityaman@users.noreply.github.com> Date: Tue, 18 Nov 2025 08:00:25 +0300 Subject: [PATCH 3/9] Create vtkm.c Signed-off-by: Victor Smirnov <53015676+vityaman@users.noreply.github.com> --- lab/vtkm/src/vtkm.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 lab/vtkm/src/vtkm.c diff --git a/lab/vtkm/src/vtkm.c b/lab/vtkm/src/vtkm.c new file mode 100644 index 0000000..b0667cd --- /dev/null +++ b/lab/vtkm/src/vtkm.c @@ -0,0 +1,23 @@ +#include +#include +#include + +#define MODULE_NAME "vtkm" + +MODULE_LICENSE("GPL"); +MODULE_AUTHOR("secs-dev"); +MODULE_DESCRIPTION("A simple kernel module"); + +#define LOG(fmt, ...) pr_info("[" MODULE_NAME "]: " fmt, ##__VA_ARGS__) + +static int __init vtkm_init(void) { + LOG("VTKM joined the kernel\n"); + return 0; +} + +static void __exit vtkm_exit(void) { + LOG("VTKM left the kernel\n"); +} + +module_init(vtkm_init); +module_exit(vtkm_exit); From 05b474bcfd75013189dcb169772062177f9a07ce Mon Sep 17 00:00:00 2001 From: Victor Smirnov <53015676+vityaman@users.noreply.github.com> Date: Tue, 18 Nov 2025 08:02:46 +0300 Subject: [PATCH 4/9] Create .clang-tidy Signed-off-by: Victor Smirnov <53015676+vityaman@users.noreply.github.com> --- lab/vtkm/.clang-tidy | 53 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 lab/vtkm/.clang-tidy diff --git a/lab/vtkm/.clang-tidy b/lab/vtkm/.clang-tidy new file mode 100644 index 0000000..cb95dc5 --- /dev/null +++ b/lab/vtkm/.clang-tidy @@ -0,0 +1,53 @@ +--- +Checks: '-*, + readability-*' +HeaderFileExtensions: + - h +ImplementationFileExtensions: + - c +HeaderFilterRegex: '' +FormatStyle: '.clang-format' +SystemHeaders: false +CheckOptions: + - key: readability-identifier-naming.ClassCase + value: lower_case + - key: readability-identifier-naming.ClassMemberCase + value: lower_case + - key: readability-identifier-naming.ConstexprVariableCase + value: lower_case + - key: readability-identifier-naming.EnumCase + value: lower_case + - key: readability-identifier-naming.EnumConstantCase + value: lower_case + - key: readability-identifier-naming.FunctionCase + value: lower_case + - key: readability-identifier-naming.GlobalConstantCase + value: lower_case + - key: readability-identifier-naming.StaticConstantCase + value: lower_case + - key: readability-identifier-naming.StaticVariableCase + value: lower_case + - key: readability-identifier-naming.MacroDefinitionCase + value: UPPER_CASE + - key: readability-identifier-naming.MacroDefinitionIgnoredRegexp + value: '^[A-Z]+(_[A-Z]+)*_$' + - key: readability-identifier-naming.MemberCase + value: lower_case + - key: readability-identifier-naming.PrivateMemberSuffix + value: '_' + - key: readability-identifier-naming.PublicMemberSuffix + value: '' + - key: readability-identifier-naming.NamespaceCase + value: lower_case + - key: readability-identifier-naming.ParameterCase + value: lower_case + - key: readability-identifier-naming.TypeAliasCase + value: lower_case + - key: readability-identifier-naming.TypedefCase + value: lower_case + - key: readability-identifier-naming.TypedefCaseSuffix + value: '_t' + - key: readability-identifier-naming.VariableCase + value: lower_case + - key: readability-identifier-naming.IgnoreMainLikeFunctions + value: 1 From 16ea0f912bda91341aba9d7790b57577202fbbc5 Mon Sep 17 00:00:00 2001 From: Victor Smirnov <53015676+vityaman@users.noreply.github.com> Date: Tue, 18 Nov 2025 08:03:21 +0300 Subject: [PATCH 5/9] Create .gitignore Signed-off-by: Victor Smirnov <53015676+vityaman@users.noreply.github.com> --- lab/vtkm/.gitignore | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 lab/vtkm/.gitignore diff --git a/lab/vtkm/.gitignore b/lab/vtkm/.gitignore new file mode 100644 index 0000000..9ff45b6 --- /dev/null +++ b/lab/vtkm/.gitignore @@ -0,0 +1,18 @@ +# Linux kernel module +*.mod.cmd +*.mod.o.cmd +*.ko.cmd +*.o.cmd +*.ko +*.mod +*.mod.c +*.mod.o +*.o +.Module.symvers.cmd +.modules.order.cmd +Module.symvers +modules.order + +# Clangd +compile_commands.json +.cache/ From 84e8d9afed51b296c5e4654873ce546bdb383be7 Mon Sep 17 00:00:00 2001 From: Victor Smirnov <53015676+vityaman@users.noreply.github.com> Date: Tue, 18 Nov 2025 08:03:56 +0300 Subject: [PATCH 6/9] Create Makefile Signed-off-by: Victor Smirnov <53015676+vityaman@users.noreply.github.com> --- lab/vtkm/Makefile | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 lab/vtkm/Makefile diff --git a/lab/vtkm/Makefile b/lab/vtkm/Makefile new file mode 100644 index 0000000..3a2eadc --- /dev/null +++ b/lab/vtkm/Makefile @@ -0,0 +1,12 @@ +obj-m += source/vtfs.o + +PWD := $(CURDIR) +KDIR = /lib/modules/`uname -r`/build +EXTRA_CFLAGS = -Wall -g + +all: + make -C $(KDIR) M=$(PWD) modules + +clean: + make -C $(KDIR) M=$(PWD) clean + rm -rf .cache From dc9867a2a83c47e53161ac7a246578bb1047763c Mon Sep 17 00:00:00 2001 From: Victor Smirnov <53015676+vityaman@users.noreply.github.com> Date: Tue, 18 Nov 2025 08:06:34 +0300 Subject: [PATCH 7/9] Create vtkm.yml Signed-off-by: Victor Smirnov <53015676+vityaman@users.noreply.github.com> --- .github/workflows/vtkm.yml | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 .github/workflows/vtkm.yml diff --git a/.github/workflows/vtkm.yml b/.github/workflows/vtkm.yml new file mode 100644 index 0000000..5c0452e --- /dev/null +++ b/.github/workflows/vtkm.yml @@ -0,0 +1,25 @@ +name: Test VT Kernel Module + +on: + push: + branches: + - main + pull_request: + paths: + - 'lab/vtkm/**' + +jobs: + build: + runs-on: ubuntu-latest + defaults: + run: + working-directory: ./lab/vtkm + steps: + - uses: actions/checkout@v4 + - name: Clang Format + run: | + find . -path ./build -prune -o \ + \( -iname '*.c' -o -iname '*.h' -o -iname '*.cpp' -o -iname '*.hpp' \) \ + -exec clang-format --style=file --dry-run --verbose {} \; + - name: Build + run: make From 91e0ad35548907334778a9a5a148f981f5559c6b Mon Sep 17 00:00:00 2001 From: Victor Smirnov <53015676+vityaman@users.noreply.github.com> Date: Tue, 18 Nov 2025 08:07:39 +0300 Subject: [PATCH 8/9] Update Makefile Signed-off-by: Victor Smirnov <53015676+vityaman@users.noreply.github.com> --- lab/vtkm/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lab/vtkm/Makefile b/lab/vtkm/Makefile index 3a2eadc..b0d6ba1 100644 --- a/lab/vtkm/Makefile +++ b/lab/vtkm/Makefile @@ -1,4 +1,4 @@ -obj-m += source/vtfs.o +obj-m += source/vtkm.o PWD := $(CURDIR) KDIR = /lib/modules/`uname -r`/build From 0640e2ad93ce17cfc24549a4af67e3571723aa7c Mon Sep 17 00:00:00 2001 From: Victor Smirnov <53015676+vityaman@users.noreply.github.com> Date: Tue, 18 Nov 2025 08:08:36 +0300 Subject: [PATCH 9/9] Update Makefile Signed-off-by: Victor Smirnov <53015676+vityaman@users.noreply.github.com> --- lab/vtkm/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lab/vtkm/Makefile b/lab/vtkm/Makefile index b0d6ba1..355c262 100644 --- a/lab/vtkm/Makefile +++ b/lab/vtkm/Makefile @@ -1,4 +1,4 @@ -obj-m += source/vtkm.o +obj-m += src/vtkm.o PWD := $(CURDIR) KDIR = /lib/modules/`uname -r`/build