Решено: как из модуля вывести на терминал?

Взгляд изнутри

Модератор: Модераторы разделов

Ответить
drifterlom
Сообщения: 34

Решено: как из модуля вывести на терминал?

Сообщение drifterlom »

при запуске модуля функция printk выводит в /var/log/kern.log
а как сделать чтобы на экран терминала?
(у меня убунта 9,10)
Спасибо сказали:
Аватара пользователя
RasenHerz
Сообщения: 1341
ОС: Arch Linux amd64

Re: Решено: как из модуля вывести на терминал?

Сообщение RasenHerz »

drifterlom писал(а):
05.02.2010 16:51
при запуске модуля функция printk выводит в /var/log/kern.log
а как сделать чтобы на экран терминала?
(у меня убунта 9,10)

dmesg | tail -n 30 -f /var/log/kern.log чем не устраивает?
Спасибо сказали:
drifterlom
Сообщения: 34

Re: Решено: как из модуля вывести на терминал?

Сообщение drifterlom »

да хотелось чтоб модуль сам себе на экран выводил, раз в коде написал и отдыхаешь
Спасибо сказали:
drifterlom
Сообщения: 34

Re: Решено: как из модуля вывести на терминал?

Сообщение drifterlom »

Написал так:

Код: Выделить всё

#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");
}

все равно пишет в лог
на кучу инклудов не обращайте внимание это я проверить чего он проглотит а чего нет
Спасибо сказали:
AnruL
Сообщения: 3
ОС: UNR 9.10 (2.6.32.7)

Re: Решено: как из модуля вывести на терминал?

Сообщение AnruL »

Если я не ошибаюсь то у функции printk() определены уровни приоритета, пробовал их менять? :)

(извините меня, не сразу разобрался с тем, что ответы уже есть...)

А если попробовать отключить перехват сообщений в лог, это просто предположение правда, сам так не делал :)
Спасибо сказали:
AnruL
Сообщения: 3
ОС: UNR 9.10 (2.6.32.7)

Re: Решено: как из модуля вывести на терминал?

Сообщение AnruL »


Я помню мы делали лабы по этой книге, потом преподаватель попросил выводить сообщение на консоль, но ни при каком уровне приоритета это сделать не получилось, он тоже не понимал почему так, может действительно всё дело не только в них?
Может быть необходимо сменить значение DEFAULT_MESSAGE_LOGLEVEL? :)
Спасибо сказали:
Аватара пользователя
DaemonTux
Сообщения: 1480
Статус: Юный падаван
ОС: Gentoo

Re: Решено: как из модуля вывести на терминал?

Сообщение DaemonTux »

AnruL писал(а):
07.02.2010 17:54

Я помню мы делали лабы по этой книге, потом преподаватель попросил выводить сообщение на консоль, но ни при каком уровне приоритета это сделать не получилось, он тоже не понимал почему так, может действительно всё дело не только в них?
Может быть необходимо сменить значение DEFAULT_MESSAGE_LOGLEVEL? :)

Обычно на консоль выводит сообщения syslog.
Vladivostok Linux User Group
Спасибо сказали:
drifterlom
Сообщения: 34

Re: Решено: как из модуля вывести на терминал?

Сообщение drifterlom »

Так ничего и не понял (((
Никакие приоритеты ни алерт ни дебаг не выводят на экран.
Я так понимаю ни у кого это и не получилось. Ни поверю что из ядра нельзя ничего на экран вывести. Может можно экран как файл открыть и как-нить туда писать?
Спасибо сказали:
Аватара пользователя
DaemonTux
Сообщения: 1480
Статус: Юный падаван
ОС: Gentoo

Re: Решено: как из модуля вывести на терминал?

Сообщение DaemonTux »

вот кусок конфига для syslog-ng из gentoo

Код:

@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
соответственно вам нужно либо настроить сислог. Или если вы так хотите вырезать гланды через ... то попробуйте писать в /dev/tty.

P. S. честно говоря я не знаю возможно ли писать в файл из модуля ядра.
Vladivostok Linux User Group
Спасибо сказали:
IMB
Сообщения: 2559
ОС: Debian

Re: Решено: как из модуля вывести на терминал?

Сообщение IMB »

Только что делал это через 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: Решено: как из модуля вывести на терминал?

Сообщение serzh-z »

drifterlom писал(а):
08.02.2010 17:22
Я так понимаю ни у кого это и не получилось. Ни поверю что из ядра нельзя ничего на экран вывести.
Что ещё за чушь такая? Вывод может производится не только на экран, а в файл, в COM-порт и т.д. Консоли вообще может не быть или для неё может не быть модуля. И решать "куда именно выводить буфер сообщений" - это не в компетенции модуля - он лишь может использовать API printk.
Спасибо сказали:
drifterlom
Сообщения: 34

Re: Решено: как из модуля вывести на терминал?

Сообщение drifterlom »

Всем спасибо за участие. Особая благодарность ту DaemonTux

Код: Выделить всё

# destination df_kern { file("/var/log/kern.log"); };
destination df_kern { usertty("*"); };

закомментил вывод в лог, добавил вывод на терминал
написал
invoke -rc.d syslog-ng restart
и теперь любуюсь работой модуля на экране
вопрос снят, пойду жувать пирожок
Спасибо сказали:
Ответить