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

📄 slist.h

📁 瑞星微公司RK27XX系列芯片的SDK开发包
💻 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 + -