Были ли удалены jprobes из ядра v4?
E сть jprobe_example.c
в ст. Но это отсутствует в v4. Я попытался скомпилировать пример v3 с ядром v4, и он работает, давая мне jprobe_example.ko
, но когда я пытаюсь insmod
это не с
insmod: ERROR: could not insert module jprobe_example.ko: Operation not permitted.
/var/log/syslog
Говорит, что register_jprobe failed, returned -38
Еще два примера insmod
в порядке Итак, вопрос в том, были ли jprobes удалены из ядра v4? Почему я могу скомпилировать модуль, но не insmod
Это?
2 ответа
jprobes устарела в ядре Linux, а файл примера был удален в коммите 9be95bd
:
commit 9be95bdc53c12ada23e39027237fd05e1393d893
Author: Masami Hiramatsu <mhiramat@kernel.org>
Date: Fri Oct 6 08:15:57 2017 +0900
kprobes: Remove the jprobes sample code
Remove the jprobes sample module because jprobes are deprecated.
[...]
Этот коммит был объединен в 4.15-rc1.
-38 это -ENOSYS
, код ошибки для недопустимых номеров системных вызовов.
Масами Хирамацу решил отменить API jprobe в этом письме: https://lwn.net/Articles/735667/
Привет,
Эта серия отменяет API-интерфейсы jprobe и удаляет или отключает связанный код. Это подготовка к удалению всего кода jprobe (включая break_handler kprobe). Я не уверен, сколько еще существует пользователей jprobe, но, пожалуйста, перенесите свой инструмент на trace-event или perf-probe.
Когда мы обсуждали эту ветку ( ), мы решили удалить jprobe.
В настоящее время ftrace и другие функции трассировки достаточно развиты, чтобы заменить варианты использования jprobe. Пользователи могут безопасно использовать ftrace, perfprobe и т. д. для своих целей. Так что у нас есть лучший способ. IOW, jprobe выполнил свою задачу.
Люди, которые все еще используют jprobe, должны перейти на другие функции трассировки. Пожалуйста, подумайте о переносе вашего инструмента на следующие параметры.
Причина, по которой я догадываюсь по электронной почте, - это ошибка, говорящая о IRQ в https://lkml.org/lkml/2017/10/2/386https://lkml.org/lkml/2017/10/2/386 .