Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Roborock Qrevo Curv 2 Flow: ora lava con un rullo
Roborock Qrevo Curv 2 Flow: ora lava con un rullo
Qrevo Curv 2 Flow è l'ultima novità di casa Roborock per la pulizia di casa: un robot completo, forte di un sistema di lavaggio dei pavimenti basato su rullo che si estende a seguire il profilo delle pareti abbinato ad un potente motore di aspirazione con doppia spazzola laterale
Alpine A290 alla prova: un'auto bella che ti fa innamorare, con qualche limite
Alpine A290 alla prova: un'auto bella che ti fa innamorare, con qualche limite
Abbiamo guidato per diversi giorni la Alpine A290, la prima elettrica del nuovo corso della marca. Non è solo una Renault 5 sotto steroidi, ha una sua identità e vuole farsi guidare
Recensione HONOR Magic 8 Lite: lo smartphone indistruttibile e instancabile
Recensione HONOR Magic 8 Lite: lo smartphone indistruttibile e instancabile
Abbiamo provato a fondo il nuovo Magic 8 Lite di HONOR, e per farlo siamo volati fino a Marrakech , dove abbiamo testato la resistenza di questo smartphone in ogni condizione possibile ed immaginabile. Il risultato? Uno smartphone praticamente indistruttibile e con un'autonomia davvero ottima. Ma c'è molto altro da sapere su Magic 8 Lite, ve lo raccontiamo in questa recensione completa.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 26-05-2010, 22:59   #1
markzzz
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?
markzzz è offline   Rispondi citando il messaggio o parte di esso
Old 27-05-2010, 12:25   #2
Teo@Unix
Senior Member
 
L'Avatar di Teo@Unix
 
Iscritto dal: Mar 2009
Messaggi: 753
Quote:
Originariamente inviato da markzzz Guarda i messaggi
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!
Stai utilizzando una interfaccia grafica o server X?
Nel caso la risposta sia si, printk() non ti stampa su Xterminal.

Quote:
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?
Quando programmi a livello di kernel non puoi utilizzare la libc. Pertanto non puoi usare tutte le sue funzioni.
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;
}
prova ad approfondire la cosa.. semmai.
Teo@Unix è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Roborock Qrevo Curv 2 Flow: ora lava con un rullo Roborock Qrevo Curv 2 Flow: ora lava con un rull...
Alpine A290 alla prova: un'auto bella che ti fa innamorare, con qualche limite Alpine A290 alla prova: un'auto bella che ti fa ...
Recensione HONOR Magic 8 Lite: lo smartphone indistruttibile e instancabile Recensione HONOR Magic 8 Lite: lo smartphone ind...
Sony WF-1000X M6: le cuffie in-ear di riferimento migliorano ancora Sony WF-1000X M6: le cuffie in-ear di riferiment...
Snowflake porta l'IA dove sono i dati, anche grazie a un accordo con OpenAI Snowflake porta l'IA dove sono i dati, anche gra...
Arianespace potrebbe lanciare il primo r...
Google Pixel 10a disponibile al prezzo m...
Microsoft Copilot nei guai: email riserv...
AOC a 399€ su Amazon: QD-OLED 240 Hz e 0...
La Cina ha recuperato dal mare il primo ...
Boeing CST-100 Starliner: la NASA rende ...
hiop e TaDa uniscono le forze per trasfo...
Thermal Grizzly mostra il Ryzen 7 9850X3...
AMD Ryzen 'Olympic Ridge' Zen 6 per desk...
Donald Trump renderà pubbliche in...
Prezzo mai visto da mesi: ECOVACS DEEBOT...
Non solo S26, Samsung sta per lanciare a...
Windows 11 avrà a breve uno Speed...
Ask Intel: l'assistente IA che ti aiuta ...
Nasce Freedom.gov: il portale USA per ag...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 22:54.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v