Frage

Ich versuche derzeit eine Inode für einen bestimmten Pfad in einer Kernfunktion zu erhalten. Alles, was ich ist der vollständige Pfadname zur Verfügung haben. Ich habe versucht, Versuche wie:

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

Aber die dentry in dem gegebenen Pfad ist nicht gültig, so scheint es sich herausstellen. Dann dachte ich, vielleicht schwierigsten stat () und bekommt die Inode-Nummer aus, dass. Aber das gibt mir nur eine Zahl, kein struct inode. Ich weiß nicht, von einer Art und Weise einer Inode-Nummer zu einem Inode zu konvertieren, ohne eine bestehende inode zu greifen und die gesamte Liste der Inodes überquert. Und ich weiß nicht einmal, ob das funktionieren würde. Aber ich will sicher nicht, das zu tun.

Gibt es eine einfache Möglichkeit, eine struct inode aus einem char * Pfadnamen im Kernel zu bekommen?

War es hilfreich?

Lösung

Es gibt keine einfache Möglichkeit, da struct inode Teil des Kernels ist, und Sie sind im User-Space. Es hängt alles von der jeweiligen Dateisystem-Implementierung. Sind Sie sicher, dass Informationen in stat Struktur für Ihre Bedürfnisse nicht genug?

Wie auch immer, Link helfen könnte.

Andere Tipps

stat() geben Ihnen die Inode einer Datei im "st_ino" ein.

Sorry, anfängliches Mißverständnis der Frage.

Wenn Sie die tatsächliche Inode-Struktur innerhalb des Kernels wollen, ich bin ziemlich sicher, dass der Kernel selbst wäre ein Array oder eine Liste nicht gehen der Suche nach der Inode-Nummer (es sei denn, die Liste ist sehr klein). Da der Code für den Kernel öffentlich verfügbar ist, sollten Sie in der Lage sein, um herauszufinden, wie sie es tut, dann das gleiche tun.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top