这两天又在看linux/list.h里面的内容,感觉list_entry()有些好处,不过在传递参数的时候需要指定struct的类型,感觉比较麻烦。
于是,想根据这个思想做一种新的链表,规定struct bclist_head增加一个flag标志,表明外围的结构是何种类型,并且struct bclist_head永远放在第一个元素的位置(只需要简单的强制类型转换就能够进行struct bclist_head和外围struct的转换)。定义出外围接口用户能定义macro和struct的定义,在最大数量范围内,只要进行注册就能够使各个macro和struct之间进行一一对应。这样可以随意增加不同类型的struct。(没有什么大的变化,只是list_entry()能支持不同的内存模型)。