Мы разрабатываем устройство ядра.В устройстве есть список, в котором хранятся сообщения.Мы хотим удалить заголовок списка.Соответствующая часть кода приведена ниже:
Сообщение устройства и структура устройства:
typedef struct dev_message
{
char *data;
int *message_count;
struct list_head list;
}device_message;
typedef struct queue_dev
{
device_message *message_head;
struct semaphore sem;
struct cdev cdev;
}queue_device;
Добавление в начало списка осуществляется с помощью
INIT_LIST_HEAD(&(dev->message_head->list));
и добавлениемостальные записи выполняются с помощью
list_add_tail(&newMsg->list,&dev->message_head->list);
. Мы можем удалить каждый элемент списка, кроме заголовка списка.Как мы можем удалить единственную главу списка?Искренне.