2009-09-03 16 views
5

Sto provando a decodificare un oggetto condiviso in modalità utente che interagisce con un driver kernel tramite ioctl syscalls. Ho un file header con definizioni per l'interfaccia ioctl del driver del kernel (ad esempio #defines per i numeri di comando ioctl e le definizioni struct per i vari dati inviati a ioctl).Aggiunta di tipi di struct personalizzati a strace

Vedo che strace ha la capacità di de-referenziare i puntatori degli utenti che vengono passati nelle chiamate di sistema, ma ovviamente non può de-referenziare le mie strutture personalizzate che vengono passate in ioctl. C'è un modo semplice per aggiungere le mie definizioni a strace in modo che io possa ottenere dati significativi passati in ioctl, piuttosto che solo un indirizzo puntatore?

Ho il sorgente per strace e lo ho compilato/installato con successo, ma tutti i miei tentativi di includere la mia intestazione non hanno avuto alcun effetto.

risposta

2

La build strace non introspe automaticamente le strutture e genera parser per esse - dovrete scrivere del codice per gestire le vostre strutture.

+0

Vedo. Semplicemente includere la definizione della mia struttura non è sufficiente. Segnalo come risposta accettata perché affronta la domanda. Anche se la risposta di Dave è un altro buon modo per raggiungere il mio obiettivo. –

2

Il modo più semplice per ottenere ciò potrebbe essere quello di scrivere un interposer di libreria per ioctl(). C'è una buona guida per farlo su Linux here.

È possibile verificare i numeri di comando personalizzati utilizzati dall'applicazione; e scaricare le strutture per questi.

Problemi correlati