⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wd_list.h

📁 国内文件驱动编程知名人物蔡大侠的教程源代码
💻 H
字号:
#ifndef _WD_HEADER_WD_LIST_
#define _WD_HEADER_WD_LIST_

// 这个模块提供一个使用方便的双向链表,可以做需要
// 保存数据时候的各种用途。
#include "wdf.h"
#include "wd_syn.h"

struct wd_list_node_;
// 链表的头
typedef struct wd_list_ {
	wd_spin lock;					// 链表锁
	struct wd_list_node_ *head;		// 链表实际数据
	struct wd_list_node_ *tail;		// 尾巴
} wd_list;

typedef struct wd_list_node_ {
	wd_void *data;					// 数据
	struct wd_list_node_ *prev;		// 前环
	struct wd_list_node_ *next;		// 后环
	wd_list *list;					// 头部
} wd_list_node;

// 一些快捷的通道
_inline wd_list_node *wd_list_head(wd_list *list)
{	return list!=NULL?list->head:NULL;	};
_inline wd_list_node *wd_list_tail(wd_list *list)
{	return list!=NULL?list->tail:NULL;	};
_inline wd_list_node *wd_list_node_next(wd_list_node *node)
{	return node!=NULL?node->next:NULL;	};
_inline wd_list_node *wd_list_node_prev(wd_list_node *node)
{	return node!=NULL?node->prev:NULL;	};
_inline wd_void *wd_list_node_data(wd_list_node *node)
{	return node!=NULL?node->data:NULL; };
_inline wd_list *wd_list_node_list(wd_list_node *node)
{ return node!=NULL?node->list:NULL; };

wd_list* wd_list_create();
void wd_list_destroy(wd_list* list);
wd_list_node *wd_list_append(wd_list *list,wd_void *data);
wd_bool wd_list_delete_node(wd_list_node *node);
wd_bool wd_list_erase_data(wd_list *list,wd_void *data);

_inline wd_void wd_list_hold(wd_list *list)
{	wd_spin_hold(&list->lock);	};
_inline wd_void wd_list_loose(wd_list *list)
{	wd_spin_loose(&list->lock); };

#endif // _WD_HEADER_WD_LIST_

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -