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

📄 jwl-gtf_udh.h

📁 基于arm核的RTOS
💻 H
字号:
/********************************************************************************************************
*                                                JWL-GTF						*
*                                           实时多任务操作系统						*
*					     								*
*      				              作者:JWL-GTF			                        *
*  					     日期:2004/04/19                                            *
*					 修改日期:						        *
*                                       								*
*                                       功能说明:基本的头文件定义					*
*********************************************************************************************************/

/*公共头*/
#include "JWL-GTF.H"

/*公用链表结构*/

typedef struct
{
	jwl_gtf_List*	Pre;		/*前一指针*/
	jwl_gtf_List*	Next;		/*后一指针*/
}jwl_gtf_List;

/*宏定义空结构初始化*/
#define _jwl_gtf_BuildFreeLinkInit(a,b)	\					/*a:Task,b:jwl_gtf_MaxTask+jwl_gtf_FreeTask*/
jwl_gtf_void jwl_gtf_##a##FreeInit()\
{\
	int i=0;\
	jwl_gtf_##a##Free=jwl_gtf_##a;\
	jwl_gtf_##a##[0].jwl_gtf_Link->Pre=jwl_gtf_##a##Free;\
	jwl_gtf_##a##[0].jwl_gtf_Link->Next=jwl_gtf_##a##[++i];\
	for(;i<##b;)\
	{\
		jwl_gtf_##a##[i].jwl_gtf_Link->Pre=jwl_gtf_##a##[i-1];\
		jwl_gtf_##a##[i].jwl_gtf_Link->Next=jwl_gtf_##a##[++i];\
	}\
	jwl_gtf_##a##[i]->jwl_gtf_Link->Pre=jwl_gtf_##a##[i-1];\
	jwl_gtf_##a##[i]->jwl_gtf_link->Next=jwl_gtf_NULL;\
	return;\
}\

/*宏定义插入某一链表头中*/
/*a为链表头,b为要插入的指针,c为链表连接指针名称,d为链表类型,e链表类型*/
#define _jwl_gtf_BuildInsertLinkHead(c,e) \
jwl_gtf_void jwl_gtf_Insert##c##Head(e *a,e *b)\
{\
	if(a==jwl_gtf_NULL)\				/*链表头中为空*/
	{\
		a=b;\
		b->jwl_gtf_##c##->Next=jwl_gtf_NULL;\
		b->jwl_gtf_##c##->pre=a\
	}\
	else\						/*否则*/
	{\
		b->jwl_gtf_##c##->Next=a;\
		a->jwl_gtf_##c##->Pre=b	;\
		a=b;\
		b->jwl_gtf_##c##->Pre=a;
	}\
	reutrn;\
}

/*宏定义插入某一链表尾或中间*/
/*a:要插入的链表指针b:被插入的链表指针c:为链表指针的名称d:链表类型e:链表类型*/
#define _jwl_gtf_BuildInsertTail(c,e) \
jwl_gtf_void jwl_gtf_Insert##c##Tail(e * a,e *b)\
{\
	if(a->jwl_gtf_##c##->Next==jwl_gtf_NULL)\	/*是否链表中最后一个*/
	{\
		a->jwl_gtf_##c##->Next=b;\
		b->jwl_gtf_##c##->Pre=a;\
		b->jwl_gtf_##c##->Next=jwl_gtf_NULL;
	}\
	else\						/*不是链表中最后一个*/
	{\
		b->jwl_gtf_##c##->Next->jwl_gtf_##c##->Pre=a;
		a->jwl_gtf_##c##->Next=b->jwl_gtf_##c##->Next;
		b->jwl_gtf_##c##->Next=a;
		a->jwl_gtf_##c##->Pre=b;
	}\
	return;\
}

/*宏定义从链表中断开头指针*/
/*a为链表头,c为链表连接指针名称,d为链表类型,e链表类型*/
#define _jwl_gtf_BuildDeleteLinkHead(c,e) \
jwl_gtf_void jwl_gtf_Delete##c##Head(e *a)\
{\
	if(a->jwl_gtf_##c##->Next==jwl_gtf_NULL)\	/*链表中是否只有1个*/
		a=jwl_gtf_NULL;\
	else\
	{\
		a=a->jwl_gtf_###c#->Next;\
		a->jwl_gtf_##c##->Pre=a;\
	}\
	return;\
}\

/*宏定义断开链表中指针*/
/*a为链表头,c为链表连接指针名称,d为链表类型,e链表类型*/
#define _jwl_gtf_BuildDeleteLinkTail(c,e) \
jwl_gtf_void jwl_gtf_Delete##c(e *a) \
{\
	##e *next,*pre;\
	if(a->jwl_gtf_##c##->Next==jwl_gtf_NULL)
		a->jwl_gtf_##c##->Pre->jwl_gtf_##c##->Next=jwl_gtf_NULL;\
	else\
	{\
	 	pre=a->jwl_gtf_##c##->Pre;\
	 	next=a->jwl_gtf_##c##->Next;\
		pre->jwl_gtf_##c##->Next=next;\
		next->jwl_gtf_##c##->Pre=pre;\
	}\
	return;\
}

⌨️ 快捷键说明

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