草庐IT

linux - 内核模块 : how to get console ouput?

我正在编写一个内核模块,我希望能够在使用insmodmodule.ko加载它时在控制台输出上打印一些内容。我试过用printk(KERN_EMERG"testkernelemergency\n");但我的控制台上什么也没有出现。但是它确实出现在dmesg中。额外信息:我正在使用带有linux-3.0.0的Intelx8632位和cat/proc/sys/kernel/printk给出4417 最佳答案 1-确保您处于完全终端模式(按Alt+Ctrl+f1)2-而不是printk(KERN_EMERG"testkernelemerge

linux - 内核模块 : how to get console ouput?

我正在编写一个内核模块,我希望能够在使用insmodmodule.ko加载它时在控制台输出上打印一些内容。我试过用printk(KERN_EMERG"testkernelemergency\n");但我的控制台上什么也没有出现。但是它确实出现在dmesg中。额外信息:我正在使用带有linux-3.0.0的Intelx8632位和cat/proc/sys/kernel/printk给出4417 最佳答案 1-确保您处于完全终端模式(按Alt+Ctrl+f1)2-而不是printk(KERN_EMERG"testkernelemerge

c - 我必须包含哪个头文件才能在内核源文件中获取 printk()?

假设我想使用printk()在arch/x86/boot/string.c内在编译内核之前。我必须包含哪个头文件,以便链接器知道在哪里可以找到printk()?我试过#include和#include但我总是在makebzImage期间出错告诉我链接器找不到printk:arch/x86/boot/compressed/string.o:Infunction`memcmp`:string.c:(.text+0x19):undefinedreferenceto`printk` 最佳答案 您正在尝试检测内核的启动阶段。它有自己的非常小的

c - 我必须包含哪个头文件才能在内核源文件中获取 printk()?

假设我想使用printk()在arch/x86/boot/string.c内在编译内核之前。我必须包含哪个头文件,以便链接器知道在哪里可以找到printk()?我试过#include和#include但我总是在makebzImage期间出错告诉我链接器找不到printk:arch/x86/boot/compressed/string.o:Infunction`memcmp`:string.c:(.text+0x19):undefinedreferenceto`printk` 最佳答案 您正在尝试检测内核的启动阶段。它有自己的非常小的

c - Linux 内核:来自 "open"系统调用的 printk 不起作用

我有疑问。我打开了内核,我更改了目录linux-3.1.1/fs/open.c我更改了open.c中的以下代码。SYSCALL_DEFINE3(open,constchar__user*,filename,int,flags,int,mode){longret;printk(KERN_EMERG"Testing\n");...}我只放了这一行:printk(KERN_EMERG"Testing");我还包括库:和所以我编译并重新启动了我的linux(Ubuntu)。在重新启动期间,屏幕上出现了很多“测试”。所以到现在为止没问题。但是现在我遇到了一个问题。我用c创建了这个程序。intma

c - Linux 内核:来自 "open"系统调用的 printk 不起作用

我有疑问。我打开了内核,我更改了目录linux-3.1.1/fs/open.c我更改了open.c中的以下代码。SYSCALL_DEFINE3(open,constchar__user*,filename,int,flags,int,mode){longret;printk(KERN_EMERG"Testing\n");...}我只放了这一行:printk(KERN_EMERG"Testing");我还包括库:和所以我编译并重新启动了我的linux(Ubuntu)。在重新启动期间,屏幕上出现了很多“测试”。所以到现在为止没问题。但是现在我遇到了一个问题。我用c创建了这个程序。intma

linux - printk() 不在/var/log/messages 中打印

我的操作系统是Ubuntu12.04。我编写了这个内核模块并使用了insmod和rmmod命令,但是/var/log消息中没有任何内容。我该如何解决这个问题?/**hello-1.c-Thesimplestkernelmodule.*/#include/*Neededbyallmodules*/#include/*NeededforKERN_INFO*/intinit_module(void){printk(KERN_INFO"Helloworld1.\n");/**Anon0returnmeansinit_modulefailed;modulecan'tbeloaded.*/retu

linux - printk() 不在/var/log/messages 中打印

我的操作系统是Ubuntu12.04。我编写了这个内核模块并使用了insmod和rmmod命令,但是/var/log消息中没有任何内容。我该如何解决这个问题?/**hello-1.c-Thesimplestkernelmodule.*/#include/*Neededbyallmodules*/#include/*NeededforKERN_INFO*/intinit_module(void){printk(KERN_INFO"Helloworld1.\n");/**Anon0returnmeansinit_modulefailed;modulecan'tbeloaded.*/retu

linux - 如何从 Linux 内核模块中的逻辑地址获取物理地址?

除了手动遍历页面目录条目之外,是否有任何合适的方法通过逻辑地址获取物理地址?我在内核的源代码中寻找过这个功能,发现有一个follow_page函数可以很好地支持内置的大页面和透明大页面。但是它没有导出到内核模块(为什么???)...所以,我不想发明轮子,我认为手动重新实现follow_page功能不是很好。 最佳答案 嗯,它可能看起来像这样(从虚拟地址跟随PTE):voidfollow_pte(structmm_struct*mm,unsignedlongaddress,pte_t*entry){pgd_t*pgd=pgd_offs

linux - 如何从 Linux 内核模块中的逻辑地址获取物理地址?

除了手动遍历页面目录条目之外,是否有任何合适的方法通过逻辑地址获取物理地址?我在内核的源代码中寻找过这个功能,发现有一个follow_page函数可以很好地支持内置的大页面和透明大页面。但是它没有导出到内核模块(为什么???)...所以,我不想发明轮子,我认为手动重新实现follow_page功能不是很好。 最佳答案 嗯,它可能看起来像这样(从虚拟地址跟随PTE):voidfollow_pte(structmm_struct*mm,unsignedlongaddress,pte_t*entry){pgd_t*pgd=pgd_offs