2016-06-25 28 views
2

Gibt es eine Möglichkeit, eine globale Variable, die in einem Linux-Kernel-Modul definiert ist, über Unterverzeichnisse hinweg verfügbar zu machen? Die Verwendung von EXPORT_SYMBOL macht sie im aktuellen Verzeichnis verfügbar. Ich habe versucht, es in einer Header-Datei zu definieren und die Header-Datei in das Unterverzeichnis mit "../name_header.h", aber es scheint nicht die Variable zu erkennen. Genauer gesagt, ich habe eine Variable in der c-Datei - vport.c (von openvswitch), möchte ich auf diese Variable in einem Unterverzeichnis zugreifen.Zugriff auf eine globale Variable über Unterverzeichnisse innerhalb eines Kernelbereichs?

+0

Können Sie Ihren Code und die Fehlermeldung, die Sie erhalten, einfügen? – Lin

Antwort

0

EXPORT_SYMBOL stellt ein Symbol für dynamisch verknüpften Code (Kernel-Module) zur Verfügung, aber ich denke nicht, dass dies das ist, was Sie erreichen möchten.

Um auf eine Variable von einer anderen Kompiliereinheit zuzugreifen, fügen Sie eine extern Verzögerung in der c-Datei hinzu, die Sie versuchen, auf diese Variable zuzugreifen. Oder besser, verwenden Sie eine gemeinsame Headerdatei und fügen Sie die externe Verzögerung in diese Datei ein. Es spielt normalerweise keine Rolle, ob sich diese Kompiliereinheit (z. B. die c-Datei) in einem anderen Verzeichnis oder Unterverzeichnis befindet.

+0

Ich versuchte es auch - ich habe versucht, die Header-Datei und ich habe sogar versucht, in der ovs/Include-Verzeichnis (wo alle globalen Header sind definiert) und im übergeordneten Verzeichnis, aber es scheint nicht die Variable zu erkennen – lavanya

Verwandte Themen