|
|
|
![]() |
|
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: 05:41.