2016-04-04 11 views
0

ここに私が2.xカーネル用に書いたカーネルモジュールの行があります。Linux 3.16相当のSPIN_LOCK_UNLOCKEDは何ですか?

static spinlock_t mr_lock = SPIN_LOCK_UNLOCKED; 

このモジュールを3.16カーネル用にコンパイルしようとすると、次のビルドエラーが発生します。

error: ‘SPIN_LOCK_UNLOCKED’ undeclared here (not in a function) 

私はこのカーネル用spinlock_tタイプを定義linux/spinlock_types.hの3.16バージョン、見て、もう本当に何SPIN_LOCK_UNLOCKED定数はありません。

ただし、このカーネルではロックされていないスピンロックを初期化する方法が明確ではありません。

同じ初期化を達成する正しい方法は何ですか?

+0

から上記を取っ

#define DEFINE_SPINLOCK(x) spinlock_t x = __SPIN_LOCK_UNLOCKED(x) to replace code like: spinlock_t init_lock = SPIN_LOCK_UNLOCKED; with the improved: DEFINE_SPINLOCK(init_lock); 

カーネルは回数をその内部APIを変更しました。達成したいことに関する最新のドキュメントを見てください。 – LtWorf

+0

@ merlin2011合計推測、おそらく 'spin_lock_init()'?これはまた、 'SPIN_LOCK_UNLOCKED'が有効であるので、古い側になければならないと言います:http://www.linuxgrill.com/anonymous/fire/netfilter/kernel-hacking-HOWTO-5.html – yano

+0

@LtWorf、私の無知を許して、カーネルSpinLockの正しい使い方についての関連文書にリンクすることはできますか?私は一般的なドキュメント[ここ](http://lxr.free-electrons.com/source/Documentation/kbuild/modules.txt?v=3.16)と[ここ](https://www.kernel.org/ doc /)、私は何を求めているかを特定する方法がわかりません。 – merlin2011

答えて