(linux/list.h を使用して msgQueue というキューを実装しています)
typedef struct msgQueue
{
long len;
void *data;
struct list_head queue;
} msgQueue
次のように、リストを反復処理してノードを削除する例がたくさんあります。
struct list_head *pos, *q;
struct msgQueue *currentQueue;
list_for_each_safe(pos, q, &(myQueue->queue))
{
currentQueue = list_entry(pos, struct msgQueue, queue);
list_del(pos);
free(currentQueue);
}
最初のものだけを削除する安全な方法は何ですか?
私はそれが次のようになると思っていたでしょう:
list_del(*(myQueue->queue));
しかし、それは私に問題を与えています。(カーネルページングリクエストエラー)