ここで何か馬鹿げたことをしているのではないかと思いますが、構造体に埋め込まれたrwlockでpthread_rwlock_init()を実行しようとすると、組み込みLinuxプラットフォーム(GCCコンパイラ)でセグメンテーション違反が発生します。
struct rwlock_flag {
int flag; // Flag
pthread_rwlock_t * rwlock; // Reader/writer lock for flag
};
次の原因でセグメンテーション違反が発生します。
struct rwlock_flag * running;
running = (struct rwlock_flag *) malloc (sizeof(struct rwlock_flag));
rslt = pthread_rwlock_init(running->rwlock, NULL);
これもそうです...
pthread_rwlock_t * rwlock_dg2;
pthread_rwlock_init(rwlock_dg2,NULL);
ただし、以下は正常に機能します...
pthread_rwlock_t rwlock_dg;
pthread_rwlock_init(& rwlock_dg,NULL);
何かご意見は?