Domanda

Attualmente sto cercando di ottenere un inode per un determinato percorso in una funzione del kernel. Tutto quello che ho a disposizione è il percorso completo. Ho provato tentativi come:

user_path_at(AT_FDCWD, buffer, LOOKUP_FOLLOW, &path);

Ma l'odontoiatria in quel determinato percorso non è valida, sembra risultare. Poi ho pensato forse di provare stat () e ottenere il numero di inode da quello. Tuttavia, ciò mi dà solo un numero, non un inode struct. Non conosco un modo per convertire un numero di inode in un inode senza afferrare un inode esistente e attraversare l'intero elenco di inode. E non so nemmeno se funzionerebbe. Ma di certo non voglio farlo.

Esiste un modo semplice per ottenere un inode struct da un char * percorso all'interno del kernel?

È stato utile?

Soluzione

Non c'è modo semplice poiché struct inode fa parte del kernel e ci si trova nello spazio utente. Tutto dipende dalla particolare implementazione del filesystem. Sei sicuro che le informazioni in Stat Struct non siano sufficienti per le tue esigenze?

Ad ogni modo, questo link potrebbe essere d'aiuto.

Altri suggerimenti

stat () ti darà l'inode di un file in " st_ino " campo.

Siamo spiacenti, incomprensione iniziale della domanda.

Se si desidera la struttura dell'inode effettiva all'interno del kernel, sono abbastanza certo che il kernel stesso non percorra un array o un elenco alla ricerca del numero di inode (a meno che l'elenco non sia molto piccolo). Poiché il codice per il kernel è pubblicamente disponibile, dovresti essere in grado di scoprire come lo fa, quindi fare lo stesso.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top