以下のようにリーダー/ライター スピンロックを使用すると、奇妙なコンパイラ警告が表示されます。
acで定義
struct rwloct_t rwspinlock.
rwlock_init(&rwspinlock);
宣言してbcで使用する
extern struct rwloct_t rwspinlock
したがって、bcでは、ロックまたはロック解除を呼び出すたびに、たとえば. read_rwlock(&rwspinlock)
以下の警告が表示されます。
warning: passing argument 1 of ‘_raw_read_lock_bh’ from incompatible pointer type
/home/dev/data/linux/linux/include/linux/rwlock_api_smp.h:20: note: expected ‘struct rwlock_t *’ but argument is of type ‘struct rwlock_t *’
次に、 acで定義された以下のように変更しまし た
struct rwloct_t rwspinlock.
rwlock_init(&rwspinlock);
ああで宣言
extern struct rwloct_t rwspinlock
としてbcに含まれ、
#include "a.h"
これで、コンパイルの警告はなくなりました。しかし、私はどのように不明です!. 正確に何が起こったのか、誰か説明できますか?