2013-05-27 5 views
0

Я новичок в разработке ядра Linux, и когда я пытаюсь изменить функцию системного вызова, просто добавив printk функцию в timekeep.c файле, каклинукс выход ядра printk

printk("BEGIN!$$$$$\n"); 

dmesg утилита дает мне выход например:

[ 75.919335] BEGIN!$$$$$ 
[ 75.919337] BEGIN!$$$$$ 
[ 75.919340] BEGIN!$$$$$ 
[ 75.919343] BEGIN!$$$$$ 
[ 75.919347] BEGIN!$$$$$ 
[ 75.919349] BEGIN!$$$$$ 
[ 75.919353] BEGIN!$$$$$ 
[ 75.919355] BEGIN!$$$$$ 
[ 75.919358] BEGIN!$$$$$ 
[ 75.919361] BEGIN!$$$$$ 
[ 75.919364] BEGIN!$$$$$ 
[ 75.919367] BEGIN!$$$$$ 
[ 75.919370] BEGIN!$$$$$ 
[ 75.919374] BEGIN!$$$$$ 

Я действительно не понимаю, как создаются в []. Может ли кто-нибудь дать мне подсказку?

+0

Вы забыли префикс уровня журнала: 'printk (KERN_DEBUG" BEGIN! "\ N"); ' – Kaz

ответ

0

Это фактически dmesg временные метки за считанные секунды с момента загрузки системы.

Вы можете смело игнорировать их, если вы на самом деле не являетесь , глядя на проблемы с синхронизацией (например, водитель занимает 30 секунд, чтобы сделать что-то, что должно быть намного быстрее).

Если вы хотите получить более читаемый формат, вы можете использовать dmesg -T, но вы теряете определенную точность.

pax> dmesg -T | tail -5l 

[Mon May 27 09:08:58 2013] ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready 
[Mon May 27 09:09:00 2013] usblp0: removed 
[Mon May 27 09:09:00 2013] usblp0: USB Bidirectional printer dev 3 if 0 alt 0 proto 2 vid 0x03F0 pid 0x3A02 
[Mon May 27 09:09:09 2013] eth0: no IPv6 routers present 
[Mon May 27 10:09:59 2013] usblp0: removed 

Вы также можете удалить их полностью с dmesg -t, но тогда вы потеряете всю информацию синхронизации.

pax> dmesg -t | tail -5l 

ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready 
usblp0: removed 
usblp0: USB Bidirectional printer dev 3 if 0 alt 0 proto 2 vid 0x03F0 pid 0x3A02 
eth0: no IPv6 routers present 
usblp0: removed 
1

В вашем ядре включена опция CONFIG_PRINTK_TIME. Этот параметр отвечает за это поле метки времени перед сообщениями printk(). Из опции конфигурации ядра (https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/lib/Kconfig.debug#n2):

"Selecting this option causes time stamps of the printk() messages to be 
    added to the outputof the syslog() system call and at the console." 

Этот параметр настраивается во время конфигурации ядра, через поле конфигурации "Kernel Hacking". Кроме того, вы можете включить/отключить его из параметра командной строки ядра «printk.time = 0» (отключить) или «printk.time = 1» (включить).