清除Linux内核链接列表

Clear Linux Kernel Linked List

本文关键字:列表 链接 内核 Linux 清除      更新时间:2023-10-16

我正在尝试修改一些使用linux内核中使用的C链表的代码,比如fbida中使用的代码。但我需要真正清理清单,从头开始,我不确定最安全的方法。我在网上也找不到一个例子。

关于如何安全地清除列表并释放所有内存,有什么想法吗?

也许我找到了答案(数字…)下面的工作怎么样?

void delete_all(struct list_head *head)
{
    struct list_head *iter;
    struct foo *objPtr;
  redo:
    __list_for_each(iter, head) {
        objPtr = list_entry(iter, struct foo, list_member);
        list_del(&objPtr->list_member);
        free(objPtr);
        goto redo;
    }
}

"最安全的方式"。。。"释放内存"。。。引用的代码不进行分配,完全由调用方/实现方来分配内存。因此,调用方/实现方必须释放分配的内存。

根据"cnicutar",这只是一项在列表中迭代的工作,对找到的每个项调用list_del()函数,然后根据对象的分配方式释放或删除对象。