问题标签 [printk]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
linux - 内核模块:如何获得控制台输出?
我正在编写一个内核模块,我希望能够在使用insmod module.ko
.
我尝试使用
但我的控制台上什么也没有出现。然而,它确实出现在dmesg
.
额外信息:
我正在使用带有 linux-3.0.0 的 Intel x86 32 位
并cat /proc/sys/kernel/printk
给出4 4 1 7
linux - 在哪里添加 printk.time ?
这是一个非常简单的问题,但我对 Linux 知之甚少并开始构建它。
我正在尝试使用 printk 时间调试内核。我正在关注这个网站:http ://elinux.org/Printk_Times,中间它说要使用它:“启动内核时,添加选项“printk.time=1”(或旧内核的“时间”)在内核命令行上“
内核命令行在哪里?我要在 grub 中添加这一行并更新 grub 吗?
请告知我应该在哪里添加这个命令,
非常感谢,
c - tcp_cubic.c 中的 printk
我在 tcp_cubic.c中包含了以下printk语句
但它不会打印 dmesg 或 syslog 中的值。这是为什么?
linux - printk loglevel 在模块编程中的使用
在 Rubini 的书LDD3 中,printk
作者说我们可以为我们的消息提供日志级别/优先级。但是我尝试了一个简单的模块程序,它具有不同的 printk 日志级别,但它显示了我在程序中写入 printk 消息的相同顺序,为什么它没有根据优先级打印?
我在这里复制了代码
我得到如下输出
那么我如何根据优先级打印它
linux - 尽管正确设置了日志级别,Printk 仍不打印
我的问题是,我正在尝试将驱动程序构建到内核中。我决定用一个简单的 Hello World 程序来测试我的代码。代码如下所示:
另外, cat /proc/sys/kernel/printk 显示 7 4 1 7 从 .config 文件中,我找到“CONFIG_DEFAULT_MESSAGE_LOGLEVEL=4”
我正在使用 Makefile 中的 obj-y += 制作文件。我发现'make'可以构建模块,但启动后dmesg或/var/log/下没有出现printk输出。
我想知道驱动程序是否根本没有内置到内核中。有什么方法可以检查吗?
感谢:D。
logging - dmesg 和 /var/log/kern.log 之间的区别
我正在修改 kvm 模块,并在内核代码中添加了 printk 语句。运行虚拟机后,printk 为我提供了错误地址和有关来宾操作系统的其他信息。
我需要从这个信息中生成统计信息。当我使用 dmesg 时,我只能看到内核空间中的错误地址,即它们的地址高于 0XC0000000。(发生 VMEXIT 时需要错误地址,即我们从访客模式切换到主机模式)
当我在 kern.log 中看到相同的统计信息时,我也会从用户空间(低于 0XC0000000)获得错误地址。所以在我看来,dmesg 的容量有限,并且给出的信息是 kern.log 的一个子集。
我的 kern.log 文件太大,是否可以从 kern.log 中删除旧数据,因为 grep、join、awk 等文本处理命令在文件上运行的时间太长。
我的问题是:
dmesg 和 kern.log 有什么区别?
如何在 cron 作业中减小 kern.log 文件的大小?(擦除过去 24 小时内添加的所有数据)
有没有更好的方法从内核获取 printf kindof 功能?
linux-kernel - 当我打印一个在用户空间中初始化的 char * 时会发生什么?
我实现了一个新的系统调用作为介绍练习。它所做的只是接收一个缓冲区并打印该缓冲区。后来我了解到正确的做法是使用 copy_from_user。
这只是验证地址的预防措施,还是我的系统调用导致了一些我看不到的错误(页面错误?)?
如果这只是一种预防措施,那么它可以防止什么?
谢谢!
system-calls - printk 数据丢失和截断
我在我的内核可加载模块中使用 printk 来记录系统调用的参数。对于每个系统调用,使用几个 printk 来打印变量,它们以“\t”作为分隔符出现。要将内核日志缓冲区中的数据重定向到系统 /var/log/messages 以外的另一个文件,我使用“klogd -f”绕过 syslog 接口。每次系统调用获取的日志数据为一行。但是,在分析数据后,我发现存在两个问题。
问题1:数据可能会丢失。
问题2:一个系统调用的数据与属于另一个系统调用的数据混合在一起,可能在中间。
问题1:是内核日志缓冲区溢出覆盖了缓冲区中最旧的日志造成的数据丢失吗?如果是这样,如何克服它?我计划增加内核日志缓冲区的大小。你认为它合适吗?什么尺寸最好?
问题2:系统调用可以抢占另一个系统调用吗?或者在某些情况下,一个系统调用可能会调用另一个系统调用并且除非被调用的系统调用完成,否则无法完成?这是数据相互混合的原因吗?
问题3:printk 是原子的吗?如果没有,如何使 printk 原子化?添加锁以使其不可中断?
linux - 将我的模块的 printk 打印到我自己的日志文件中
我正在做一些 Linux 模块编程。我通常打印一些错误消息和调试用的东西——然后我退出我的模块并使用“dmesg”来查看发生了什么。
这种调试方法已经不够用了。我想将我的“printk”文本通过管道传输到我自己的日志文件中——最好是本地的,但我知道这是否不可能,我需要将它放在 var/log/*.log 之类的地方。
我已经研究过编辑 syslog.conf - 但我不确定在那里做什么。我只想要我的模块的 printk 在它自己的文件中。有没有一种简单的方法可以让我的 Google-fu 无法捕捉到?
c - printk loff_t 类型的格式说明符?
我正在为学校作业开发 Linux 字符设备驱动程序,但不知道如何将*ppos
传递给我的 read 类型的函数打印出来loff_t
。
我知道我必须使用内核printk
中的标准库而不是标准库printf
,但我似乎无法找出正确的格式说明符。