假设我想在编译内核之前在arch/x86/boot/string.c中使用printk()。我必须包含哪个头文件,以便链接器知道在哪里可以找到printk()?我尝试了#include <linux/kernel.h>和#include <linux/printk.h>,但在make bzImage期间总是收到错误,告诉我链接器找不到printk
arch/x86/boot/compressed/string.o: In function `memcmp`:
string.c:(.text+0x19): undefined reference to `printk`
此错误将停止内核生成进程。
ld: arch/x86/entry/syscall_64.o:(.rodata+0x1120): undefined reference to `__x64_sys_fd'
BTF .btf.vmlinux.bin.o
pahole: .tmp_vmlinux.btf: No such file or directory
LD .tmp_vmlinux.kallsyms1
.btf.vmlinux.bin.o: file not recognized: file format not recognized
下面是我在linux内核源代码中
目前,我正在尝试注册一个linux安全模块,并打开一个钩子系统调用文件。我似乎到处都找不到register_security函数。谁能告诉我它在哪里,是否仍然可以做这样的钩子。 这是我尝试过的。 #include <linux/module.h> // included for all kernel modules
#include <linux/kernel.h> // included for KERN_INFO
#include <linux/init.h> // included for __init and __exit m
我试图从内核模块访问vm_list和mm_struct,但出于某种原因,我的输出始终为null,尽管我有多达3个VM在运行。
如果重要的话,整个事情都是在VM中运行的,因为我不想搅乱真正的内核。
#undef __KERNEL__
#define __KERNEL__
#undef MODULE
#define MODULE
// Linux Kernel/LKM headers: module.h is needed by all modules and kernel.h is needed for KERN_INFO.
#include <linux/module.
我想列出所有正在运行的进程与pid,ppid,通信和大小。我有以下代码工作,除了ppid和大小,所以这可以做到这一点。
--代码--
#include <linux/slab.h>
#include <linux/types.h>
#include <linux/unistd.h>
#include "sched.h"
#include "sched1.h"
/* This function is called when the module t is loaded. */
int process_init(void)
作为初学者,我正在学习编写linux内核模块。我要做的是使用DFS算法将每个任务及其子进程写入内核日志。但是当我使用Makefile编译代码时,它显示了上面的错误:
function declaration isn’t a prototype [-Werror=strict-prototypes]
struct task_struct *current;
它指出函数DFS中的task_struct关键字。这是我的密码:
# include <linux/init.h>
# include <linux/kernel.h>
# include <linux/modu