|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Oct 2008
Messaggi: 98
|
C - dirigere output da printk
salve,
avrei la necessità di dirigere l'output di printk su un determinato terminale. ho letto questa guida , ma da quanto ho capito non posso fare quello che vorrei fare. apro qemu e tre terminali diversi, - terminale 1 : dò insmod nomemodulo.ko (e voglio che tutti i printk stampino su questo terminale) - terminale 2 : apro programma1.c - terminale 3 : apro programma2.c quindi non ho nessun programma reale che parte...deve solo tornarmi i messaggi sul terminale 1! a stò punto potrei abbandonare l'idea di stampare su terminale, ma potrei crearmi un file con il log di tutte le operazioni fatte (al posto che stamparle a video, e perderle una volta tolto il modulo dal kernel e riavviato il sistema ) ma da kernel mode è possibile aprire/salvare file? sicuramente si... però le solite funzioni come fopen() ecc ecc non credo siano disponibili (le singole librerie tipo stdio non posso nemmeno inserirle...) idee? |
|
|
|
|
|
#2 | ||
|
Senior Member
Iscritto dal: Mar 2009
Messaggi: 753
|
Quote:
Nel caso la risposta sia si, printk() non ti stampa su Xterminal. Quote:
Nel kernel molte di queste sono reimplementate in modo differente e più adatto all'utilizzo in kernel-mode. Per vedere cosa hai già a disposizione devi cercare tra i simboli esportati dal kernel, ad esempio cercando fork(), farei: # cat kallsyms | grep 'do_fork$' il file kallsyms lo trovi in /proc. Per quanto riguarda la redirezione io non credo si può fare di default però dando un occhio nel sorgente di printk ho trovato questa interessante funzione: Codice:
/*
* Write a message to a certain tty, not just the console. This is used for
* messages that need to be redirected to a specific tty.
* We don't put it into the syslog queue right now maybe in the future if
* really needed.
*/
void tty_write_message(struct tty_struct *tty, char *msg)
{
if (tty && tty->driver.write)
tty->driver.write(tty, 0, msg, strlen(msg));
return;
}
|
||
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 23:47.




















