📄 slist.h
字号:
/* Copyright (C) 2006 ROCK-CHIPS FUZHOU . All Rights Reserved. */
/*
File : base\system\slist\slist.h
Desc : 定义静态列表函数接口和数据结构
Author : huangsl
Date : 2007-01-16
Notes :
$Log: slist.h,v $
Revision 1.5 2007/11/23 07:32:09 Huangshilin
no message
Revision 1.4 2007/11/19 03:11:52 Fangsaihong
no message
Revision 1.3 2007/10/30 08:03:17 Huangshilin
修改 概率性 DATA ABORT 的 BUG.
Revision 1.2 2007/10/08 02:55:35 Lingzhaojun
添加版本自动注释脚本
* huangsl 2007-01-16 统一用静态列表来封装系统列表
*
*/
#ifndef _ROCK_SLIST_H_
#define _ROCK_SLIST_H_
/***************************************************************************/
#define SLIST_DEBUG 0
/***************************************************************************/
typedef struct _SLIST_ENTRY
{
struct _SLIST_ENTRY *Next;
INT8U data[1];
} SLIST_ENTRY;
typedef struct _SLIST_ENTRY_INT16
{
struct _SLIST_ENTRY *Next;
INT32U data;
} SLIST_ENTRY_INT16;
//返回0 表示相等,其他表示不相等
typedef INT32U(*CmpFunc)(SLIST_ENTRY* , void*);
typedef struct _SLIST
{
SLIST_ENTRY *FreeList; //FIRST MUST
SLIST_ENTRY *UsedList;
CmpFunc Func; //外部赋值。
INT16U StructSize; //外部赋值。
// void *data;
} SLIST, PSLIST;
/******************************************************************************************/
//假设 StructSize,Func已经赋值
//属性段属于初始化代码,不能在模块内部调用
void SListInit(SLIST* slist , INT16U maxEntryNumber , void* listData);
//如果存在的 ENTRY 为第一个,则返回它,否则返回
//其上一个entry. -- 为了方便外部使用,改为返回找到的 ENTRY.
SLIST_ENTRY* SListCheckEntry(SLIST* slist , void* entryIDData);
//返回新增加的 ENTRY ,注意外部不能修改 Next指针。
//NULL 表示队列已满
SLIST_ENTRY* SListAddEntry(SLIST* slist);
SLIST_ENTRY * SListAddEntryTail(SLIST* slist /*, SLIST_ENTRY* entry*/);
//返回删除的 ENTRY
SLIST_ENTRY* SListDeleteEntry(SLIST* slist, void* entryIDData);
//查找指定 ENTRY 的上一个ENTRY , 如果指定的 ENTRY 为第一个,则返回 NULL.
SLIST_ENTRY* SListGetLastEntry(SLIST* slist, SLIST_ENTRY*entry);
//删除指定的 ENTRY ,NULL 表示指定的 ENTRY 不在列表中.
SLIST_ENTRY* SListDeleteEntryPtr(SLIST* slist, SLIST_ENTRY*entry);
//设置指定的 entry 为第一个 ENTRY.
void SListSetFirstEntry(SLIST* slist, SLIST_ENTRY*entry);
// 把第一个元素设置为最后一个.
void SListRotate(SLIST* slist);
/******************************************************************************************/
/******************************************************************************************/
/******************************************************************************************/
#endif /* not _ROCK_SLIST_H_ */
/*----------------------------end of file-------------------------------------*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -