Решено: как из модуля вывести на терминал?
Модератор: Модераторы разделов
-
- Сообщения: 34
Решено: как из модуля вывести на терминал?
при запуске модуля функция printk выводит в /var/log/kern.log
а как сделать чтобы на экран терминала?
(у меня убунта 9,10)
а как сделать чтобы на экран терминала?
(у меня убунта 9,10)
Re: Решено: как из модуля вывести на терминал?
drifterlom писал(а): ↑05.02.2010 16:51при запуске модуля функция printk выводит в /var/log/kern.log
а как сделать чтобы на экран терминала?
(у меня убунта 9,10)
dmesg | tail -n 30 -f /var/log/kern.log чем не устраивает?
-
- Сообщения: 34
Re: Решено: как из модуля вывести на терминал?
да хотелось чтоб модуль сам себе на экран выводил, раз в коде написал и отдыхаешь
Re: Решено: как из модуля вывести на терминал?
printk(KERN_DEBUG "Hello world!");
-
- Сообщения: 34
Re: Решено: как из модуля вывести на терминал?
Написал так:
все равно пишет в лог
на кучу инклудов не обращайте внимание это я проверить чего он проглотит а чего нет
Код: Выделить всё
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/proc_fs.h>
#include <linux/sched.h>
#include <linux/string.h>
#include <linux/signal.h>
//#include <linux/signalfd.h>
#include <asm/unistd.h>
#include <asm/siginfo.h>
#include <asm/uaccess.h>
#include <linux/fs.h>
#include <linux/syscalls.h>
#include <linux/init.h>
#include <linux/file.h>
#include <linux/mm.h>
#include <linux/slab.h>
int init_module(void)
{
printk(KERN_DEBUG "Hello world!\n");
return 0;
}
void cleanup_module(void)
{
printk(KERN_DEBUG "Goodbye world\n");
}
все равно пишет в лог
на кучу инклудов не обращайте внимание это я проверить чего он проглотит а чего нет
Re: Решено: как из модуля вывести на терминал?
Если я не ошибаюсь то у функции printk() определены уровни приоритета, пробовал их менять?
(извините меня, не сразу разобрался с тем, что ответы уже есть...)
А если попробовать отключить перехват сообщений в лог, это просто предположение правда, сам так не делал
(извините меня, не сразу разобрался с тем, что ответы уже есть...)
А если попробовать отключить перехват сообщений в лог, это просто предположение правда, сам так не делал
Re: Решено: как из модуля вывести на терминал?
Ali1 писал(а): ↑06.02.2010 23:15http://www.linuxcenter.ru/lib/books/lkmpg....TRODUCINGPRINTK
KERN_ALERT
Я помню мы делали лабы по этой книге, потом преподаватель попросил выводить сообщение на консоль, но ни при каком уровне приоритета это сделать не получилось, он тоже не понимал почему так, может действительно всё дело не только в них?
Может быть необходимо сменить значение DEFAULT_MESSAGE_LOGLEVEL?
Re: Решено: как из модуля вывести на терминал?
AnruL писал(а): ↑07.02.2010 17:54Ali1 писал(а): ↑06.02.2010 23:15http://www.linuxcenter.ru/lib/books/lkmpg....TRODUCINGPRINTK
KERN_ALERT
Я помню мы делали лабы по этой книге, потом преподаватель попросил выводить сообщение на консоль, но ни при каком уровне приоритета это сделать не получилось, он тоже не понимал почему так, может действительно всё дело не только в них?
Может быть необходимо сменить значение DEFAULT_MESSAGE_LOGLEVEL?
Обычно на консоль выводит сообщения syslog.
Vladivostok Linux User Group
-
- Сообщения: 34
Re: Решено: как из модуля вывести на терминал?
Так ничего и не понял (((
Никакие приоритеты ни алерт ни дебаг не выводят на экран.
Я так понимаю ни у кого это и не получилось. Ни поверю что из ядра нельзя ничего на экран вывести. Может можно экран как файл открыть и как-нить туда писать?
Никакие приоритеты ни алерт ни дебаг не выводят на экран.
Я так понимаю ни у кого это и не получилось. Ни поверю что из ядра нельзя ничего на экран вывести. Может можно экран как файл открыть и как-нить туда писать?
Re: Решено: как из модуля вывести на терминал?
вот кусок конфига для syslog-ng из gentoo
Из него следует что syslog-ng пишет лог на 12 теоминал. Но можно заставить его писать и на текущий терминал.соответственно вам нужно либо настроить сислог. Или если вы так хотите вырезать гланды через ... то попробуйте писать в /dev/tty.
P. S. честно говоря я не знаю возможно ли писать в файл из модуля ядра.
Код:
@version: 3.0
source src {
unix-stream("/dev/log" max-connections(256));
internal();
file("/proc/kmsg");
};
destination messages { file("/var/log/messages"); };
# By default messages are logged to tty12...
destination console_all { file("/dev/tty12"); };
# ...if you intend to use /dev/console for programs like xconsole
# you can comment out the destination line above that references /dev/tty12
# and uncomment the line below.
#destination console_all { file("/dev/console"); };
log { source(src); destination(messages); };
log { source(src); destination(console_all); };
Из него следует что syslog-ng пишет лог на 12 теоминал. Но можно заставить его писать и на текущий терминал.
Код: Выделить всё
/dev/tty
P. S. честно говоря я не знаю возможно ли писать в файл из модуля ядра.
Vladivostok Linux User Group
Re: Решено: как из модуля вывести на терминал?
Только что делал это через printk без указания приоритета.
Код: Выделить всё
case GET_MATRIX_ID:
{
err = get_matrix_id();
printk("[vpfe] get matrix id = %#x\n", err);
break;
}
user@localhost
[vpfe] get matrix id = 0x143a
- serzh-z
- Бывший модератор
- Сообщения: 8259
- Статус: Маньяк
- ОС: Arch, Fedora, Ubuntu
- Контактная информация:
Re: Решено: как из модуля вывести на терминал?
Что ещё за чушь такая? Вывод может производится не только на экран, а в файл, в COM-порт и т.д. Консоли вообще может не быть или для неё может не быть модуля. И решать "куда именно выводить буфер сообщений" - это не в компетенции модуля - он лишь может использовать API printk.drifterlom писал(а): ↑08.02.2010 17:22Я так понимаю ни у кого это и не получилось. Ни поверю что из ядра нельзя ничего на экран вывести.
-
- Сообщения: 34
Re: Решено: как из модуля вывести на терминал?
Всем спасибо за участие. Особая благодарность ту DaemonTux
закомментил вывод в лог, добавил вывод на терминал
написал
invoke -rc.d syslog-ng restart
и теперь любуюсь работой модуля на экране
вопрос снят, пойду жувать пирожок
Код: Выделить всё
# destination df_kern { file("/var/log/kern.log"); };
destination df_kern { usertty("*"); };
закомментил вывод в лог, добавил вывод на терминал
написал
invoke -rc.d syslog-ng restart
и теперь любуюсь работой модуля на экране
вопрос снят, пойду жувать пирожок