Hier ist eine Zeile von einem Kernel-Modul, das ich für einen 2.x-Kernel geschrieben habe.Was ist das 3.16-Äquivalent von SPIN_LOCK_UNLOCKED?
Wenn ich versuche, dieses Modul für einen Kernel 3.16 zu kompilieren, erhalte ich den folgenden Erstellungsfehler.
error: ‘SPIN_LOCK_UNLOCKED’ undeclared here (not in a function)
Wenn ich die 3.16-Version von linux/spinlock_types.h
aussehen, die den spinlock_t
Typ für diesen Kernel definiert, ist es in der Tat keine SPIN_LOCK_UNLOCKED mehr konstant.
Es ist jedoch nicht klar, wie ein Spinlock für diesen Kernel zu entsperren initialisiert wird.
Was ist der richtige Weg, um die gleiche Initialisierung zu erreichen?
Der Kernel seine interne API mehrfach geändert hat. Sehen Sie in der aktuellen Dokumentation nach, was Sie erreichen möchten. – LtWorf
@ merlin2011 Insgesamt denke hier, vielleicht 'spin_lock_init()'? Dies sagt auch, dass "SPIN_LOCK_UNLOCKED" gültig ist, also muss es auf der alten Seite sein: http://www.linuxgrill.com/anonymous/fire/netfilter/kernel-hacking-HOWTO-5.html – yano
@LtWorf, Verzeihen meine Ignoranz, Könntest du mich aber mit der relevanten Dokumentation über die korrekte Verwendung von Kernel SpinLocks verlinken? Ich habe allgemeine Dokumentation gefunden [hier] (http://lxr.free-electronics.com/source/Documentation/kbuild/modules.txt?v=3.16) und [hier] (https://www.kernel.org/ doc /), aber ich bin mir nicht sicher, wie ich herausfinden soll, was ich suche. – merlin2011