From b820fe63a23b73229b2f9e5aff4e8ecd1558d14e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9B=B6=E4=B8=AD=E6=96=AD=E5=BB=B6=E8=BF=9F=E7=9A=84RTOS?= Date: Wed, 26 Feb 2025 14:54:46 +0000 Subject: [PATCH] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=96=87=E4=BB=B6=20System/o?= =?UTF-8?q?s=5Fredef.h?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- System/os_redef.h | 714 ---------------------------------------------- 1 file changed, 714 deletions(-) delete mode 100644 System/os_redef.h diff --git a/System/os_redef.h b/System/os_redef.h deleted file mode 100644 index 53b3381d..00000000 --- a/System/os_redef.h +++ /dev/null @@ -1,714 +0,0 @@ -/**************************************************************************//** - * @item CosyOS-III Kernel - * @file os_redef.h - * @brief 系统重定义 - * @details 基于 os_def.h、os_base.h、syscfg.h、mcucfg_x.h、port_x.h 等文件 - 中的定义而再次定义,包括宏定义和类型定义。 - * @author 迟凯峰 - * @version V1.0.0 - * @date 2025.02.08 - ******************************************************************************/ - -#ifndef __OS_REDEF_H -#define __OS_REDEF_H - -/*------------------------------------------------------------------------------ - * SYSAPI */ - -#define sDefStr(s) sDefStr_0(s) -#define sDefStr_0(s) #s - -#define sCat2Str(s1, s2) sCat2Str_0(s1, s2) -#define sCat2Str_0(s1, s2) s1##s2 - -#define sCat3Str(s1, s2, s3) sCat3Str_0(s1, s2, s3) -#define sCat3Str_0(s1, s2, s3) s1##s2##s3 - -#define sDefBitField(v) sDefBitField_0(v) -#define sDefBitField_0(v) volatile s_u8_t v:1 - -#define sDefVoidBits(n) sDefVoidBits_0(n) -#define sDefVoidBits_0(n) volatile s_u8_t :n - -/*------------------------------------------------------------------------------ - * INCLUDE */ - -#include -#include "..\Config\syscfg.h" -#include sDefStr(sCat2Str(..\Port\port_, SYSCFG_MCUCORE.h)) - -/*------------------------------------------------------------------------------ - * NOPxX */ - -#define OS_NOPx1 MCUCFG_NOP -#define OS_NOPx2 OS_NOPx1; OS_NOPx1 -#define OS_NOPx3 OS_NOPx2; OS_NOPx1 -#define OS_NOPx4 OS_NOPx3; OS_NOPx1 -#define OS_NOPx5 OS_NOPx4; OS_NOPx1 -#define OS_NOPx6 OS_NOPx5; OS_NOPx1 -#define OS_NOPx7 OS_NOPx6; OS_NOPx1 -#define OS_NOPx8 OS_NOPx7; OS_NOPx1 - -/*------------------------------------------------------------------------------ - * TOTAL */ - -#if SYSCFG_SAMEPRISCHEDULE == 0 -#define OS_TASKTOTAL (SYSCFG_TASKPRIORITY - 1) /*!< 在线任务总数 */ -#elif SYSCFG_DEBUGGING == 0 -#define OS_TASKTOTAL (SYSCFG_USERTASKTOTAL + 2) -#else -#define OS_TASKTOTAL (SYSCFG_USERTASKTOTAL + 4) -#endif - -#if SYSCFG_DEBUGGING == 0 -#define OS_TIMINTTOTAL SYSCFG_USERTIMINTTOTAL /*!< 定时中断总数 */ -#define OS_TIMQRYTOTAL SYSCFG_USERTIMQRYTOTAL /*!< 定时查询总数 */ -#else -#define OS_TIMINTTOTAL (SYSCFG_USERTIMINTTOTAL + 1) -#define OS_TIMQRYTOTAL (SYSCFG_USERTIMQRYTOTAL + 2) - -/*------------------------------------------------------------------------------ - * TMID(定时器ID)*/ - -#define OS_TMID_DEBUGGER SYSCFG_USERTIMINTTOTAL /*!< TMID of Debugger */ -#define OS_TMID_DEBUGHOOK SYSCFG_USERTIMQRYTOTAL /*!< TMID of debug_hook */ -/** TMID of Taskmgr */ -#if OS_TIMQRYTOTAL == 2 -#define OS_TMID_TASKMGR 1 -#elif OS_TIMQRYTOTAL == 3 -#define OS_TMID_TASKMGR 2 -#elif OS_TIMQRYTOTAL == 4 -#define OS_TMID_TASKMGR 3 -#elif OS_TIMQRYTOTAL == 5 -#define OS_TMID_TASKMGR 4 -#elif OS_TIMQRYTOTAL == 6 -#define OS_TMID_TASKMGR 5 -#elif OS_TIMQRYTOTAL == 7 -#define OS_TMID_TASKMGR 6 -#elif OS_TIMQRYTOTAL == 8 -#define OS_TMID_TASKMGR 7 -#elif OS_TIMQRYTOTAL == 9 -#define OS_TMID_TASKMGR 8 -#elif OS_TIMQRYTOTAL == 10 -#define OS_TMID_TASKMGR 9 -#elif OS_TIMQRYTOTAL == 11 -#define OS_TMID_TASKMGR 10 -#elif OS_TIMQRYTOTAL == 12 -#define OS_TMID_TASKMGR 11 -#elif OS_TIMQRYTOTAL == 13 -#define OS_TMID_TASKMGR 12 -#elif OS_TIMQRYTOTAL == 14 -#define OS_TMID_TASKMGR 13 -#elif OS_TIMQRYTOTAL == 15 -#define OS_TMID_TASKMGR 14 -#elif OS_TIMQRYTOTAL == 16 -#define OS_TMID_TASKMGR 15 -#elif OS_TIMQRYTOTAL == 17 -#define OS_TMID_TASKMGR 16 -#elif OS_TIMQRYTOTAL == 18 -#define OS_TMID_TASKMGR 17 -#elif OS_TIMQRYTOTAL == 19 -#define OS_TMID_TASKMGR 18 -#elif OS_TIMQRYTOTAL == 20 -#define OS_TMID_TASKMGR 19 -#elif OS_TIMQRYTOTAL == 21 -#define OS_TMID_TASKMGR 20 -#elif OS_TIMQRYTOTAL == 22 -#define OS_TMID_TASKMGR 21 -#elif OS_TIMQRYTOTAL == 23 -#define OS_TMID_TASKMGR 22 -#elif OS_TIMQRYTOTAL == 24 -#define OS_TMID_TASKMGR 23 -#elif OS_TIMQRYTOTAL == 25 -#define OS_TMID_TASKMGR 24 -#elif OS_TIMQRYTOTAL == 26 -#define OS_TMID_TASKMGR 25 -#elif OS_TIMQRYTOTAL == 27 -#define OS_TMID_TASKMGR 26 -#elif OS_TIMQRYTOTAL == 28 -#define OS_TMID_TASKMGR 27 -#elif OS_TIMQRYTOTAL == 29 -#define OS_TMID_TASKMGR 28 -#elif OS_TIMQRYTOTAL == 30 -#define OS_TMID_TASKMGR 29 -#elif OS_TIMQRYTOTAL == 31 -#define OS_TMID_TASKMGR 30 -#elif OS_TIMQRYTOTAL == 32 -#define OS_TMID_TASKMGR 31 -#elif OS_TIMQRYTOTAL == 33 -#define OS_TMID_TASKMGR 32 -#elif OS_TIMQRYTOTAL == 34 -#define OS_TMID_TASKMGR 33 -#elif OS_TIMQRYTOTAL == 35 -#define OS_TMID_TASKMGR 34 -#elif OS_TIMQRYTOTAL == 36 -#define OS_TMID_TASKMGR 35 -#elif OS_TIMQRYTOTAL == 37 -#define OS_TMID_TASKMGR 36 -#elif OS_TIMQRYTOTAL == 38 -#define OS_TMID_TASKMGR 37 -#elif OS_TIMQRYTOTAL == 39 -#define OS_TMID_TASKMGR 38 -#elif OS_TIMQRYTOTAL == 40 -#define OS_TMID_TASKMGR 39 -#elif OS_TIMQRYTOTAL == 41 -#define OS_TMID_TASKMGR 40 -#elif OS_TIMQRYTOTAL == 42 -#define OS_TMID_TASKMGR 41 -#elif OS_TIMQRYTOTAL == 43 -#define OS_TMID_TASKMGR 42 -#elif OS_TIMQRYTOTAL == 44 -#define OS_TMID_TASKMGR 43 -#elif OS_TIMQRYTOTAL == 45 -#define OS_TMID_TASKMGR 44 -#elif OS_TIMQRYTOTAL == 46 -#define OS_TMID_TASKMGR 45 -#elif OS_TIMQRYTOTAL == 47 -#define OS_TMID_TASKMGR 46 -#elif OS_TIMQRYTOTAL == 48 -#define OS_TMID_TASKMGR 47 -#elif OS_TIMQRYTOTAL == 49 -#define OS_TMID_TASKMGR 48 -#elif OS_TIMQRYTOTAL == 50 -#define OS_TMID_TASKMGR 49 -#elif OS_TIMQRYTOTAL == 51 -#define OS_TMID_TASKMGR 50 -#elif OS_TIMQRYTOTAL == 52 -#define OS_TMID_TASKMGR 51 -#elif OS_TIMQRYTOTAL == 53 -#define OS_TMID_TASKMGR 52 -#elif OS_TIMQRYTOTAL == 54 -#define OS_TMID_TASKMGR 53 -#elif OS_TIMQRYTOTAL == 55 -#define OS_TMID_TASKMGR 54 -#elif OS_TIMQRYTOTAL == 56 -#define OS_TMID_TASKMGR 55 -#elif OS_TIMQRYTOTAL == 57 -#define OS_TMID_TASKMGR 56 -#elif OS_TIMQRYTOTAL == 58 -#define OS_TMID_TASKMGR 57 -#elif OS_TIMQRYTOTAL == 59 -#define OS_TMID_TASKMGR 58 -#elif OS_TIMQRYTOTAL == 60 -#define OS_TMID_TASKMGR 59 -#elif OS_TIMQRYTOTAL == 61 -#define OS_TMID_TASKMGR 60 -#elif OS_TIMQRYTOTAL == 62 -#define OS_TMID_TASKMGR 61 -#elif OS_TIMQRYTOTAL == 63 -#define OS_TMID_TASKMGR 62 -#elif OS_TIMQRYTOTAL == 64 -#define OS_TMID_TASKMGR 63 -#elif OS_TIMQRYTOTAL == 65 -#define OS_TMID_TASKMGR 64 -#elif OS_TIMQRYTOTAL == 66 -#define OS_TMID_TASKMGR 65 -#endif -#endif - -/*------------------------------------------------------------------------------ - * Time Sharing(时间片)*/ - -#if SYSCFG_TIMESHARINGMODE == 0 -#define OS_TIMESHARING(htask) SYSCFG_GLOBALTIMESHARING -#define OS_TIMESHARING_MAX SYSCFG_GLOBALTIMESHARING -#define OS_TIMESHARING_MIN SYSCFG_GLOBALTIMESHARING -#elif SYSCFG_TIMESHARINGMODE == 1 -#define OS_TIMESHARING(htask) SYSCFG_ALGORITHMTIMESHARING(htask->pri) -#define OS_TIMESHARING_MAX SYSCFG_ALGORITHMTIMESHARING(0) -#define OS_TIMESHARING_MIN SYSCFG_ALGORITHMTIMESHARING(SYSCFG_TASKPRIORITY - 1) -#elif SYSCFG_TIMESHARINGMODE == 2 -#define OS_TIMESHARING(htask) s_time_sharing[htask->pri] -#define OS_TIMESHARING_MAX SYSCFG_TIMESHARING_MAX -#define OS_TIMESHARING_MIN 1 -#endif -#if OS_TIMESHARING_MIN == 0 || OS_TIMESHARING_MAX > 65535 -#error 时间片定义非法! -#endif - -/*------------------------------------------------------------------------------ - * Taskmgr - LEN */ - -#if MCUCFG_ISA == __ARM__ -#define OS_TASKMGR_LEN_RAM 15 -#else -#define OS_TASKMGR_LEN_RAM 13 -#endif - -#define OS_TASKMGR_LEN_LINE \ -( \ - SYSCFG_TASKNAMELEN_MAX \ - + OS_TASKMGR_LEN_PRI + OS_TASKMGR_LEN_STA \ - + OS_TASKMGR_LEN_CPU + OS_TASKMGR_LEN_RAM \ -) - -/*------------------------------------------------------------------------------ - * DEBUGBUFF - SIZE */ - -#define OS_DEBUGRECVBUFFSIZE (SYSCFG_TASKNAMELEN_MAX + 64) /*!< size of DEBUG 接收缓存 */ -#define OS_CMDLINESENDBUFFSIZE (SYSCFG_TASKNAMELEN_MAX + 64) /*!< size of 命令行 发送缓存 */ -#define OS_TASKMGRSENDBUFFSIZE \ -( \ - (OS_TASKMGR_LEN_LINE + 2) * (OS_TASKTOTAL + 7 + SYSCFG_RTC_SHOW) + 2 * 2 + 1 \ -) /*!< size of Taskmgr 发送缓存 */ - -/*------------------------------------------------------------------------------ - * typedef base */ - -typedef s_u8_t s_ecode_t; /*!< 错误码类型 */ - -#if OS_TIMESHARING_MAX < 256 -typedef s_u8_t s_sharing_t; /*!< 时间片类型 */ -#elif OS_TIMESHARING_MAX < 65536 -typedef s_u16_t s_sharing_t; -#else -#error 时间片溢出! -#endif - -#if OS_TASKTOTAL < 256 -typedef s_u8_t s_tqcount_t; -#else -typedef s_u16_t s_tqcount_t; -#endif - -typedef sCat3Str(s_u, SYSCFG_DELAYBITS, _t) s_delay_t; /*!< 延时定时器类型 */ -typedef sCat3Str(s_u, SYSCFG_TIMINTBITS, _t) s_timint_t; /*!< 定时中断定时器类型 */ -typedef sCat3Str(s_u, SYSCFG_TIMQRYBITS, _t) s_timqry_t; /*!< 定时查询定时器类型 */ -typedef sCat3Str(s_u, SYSCFG_SEMAPHOREBITS, _t) s_semsize_t; /*!< 计数信号量类型 */ - -/*------------------------------------------------------------------------------ - * typedef function and function pointer */ - -typedef bool s_boolvoid_tf(void); /*!< Keil C51 专用 */ -typedef bool (_CODE_MEM_ *s_boolvoid_tfp)(void); -typedef void (_CODE_MEM_ *s_voidvoid_tfp)(void); - -/*------------------------------------------------------------------------------ - * typedef struct */ - -/** - \brief 运行时间 - */ -typedef struct -{ - s_u16_t day; /*!< 天 */ - s_u8_t hour; /*!< 时 */ - s_u8_t minute; /*!< 分 */ - s_u8_t second; /*!< 秒 */ -}s_runtime_ts; - -/** - \brief 软件RTC - */ -typedef struct -{ - s_u8_t yeah; /*!< 年高八位 */ - s_u8_t year; /*!< 年低八位 */ - s_u8_t month; /*!< 月 */ - s_u8_t date; /*!< 日 */ - s_u8_t hour; /*!< 时 [24时制] */ - s_u8_t minute; /*!< 分 */ - s_u8_t second; /*!< 秒 */ - s_u8_t day; /*!< 周 [1:周一,7:周日] */ -}s_rtc_ts; - -/** - \brief 软件RTC-每信号 - \details 典型的应用示例参见 tick_hook。 - */ -typedef struct -{ - sDefBitField(year); /*!< 每年 */ - sDefBitField(month); /*!< 每月 */ - sDefBitField(day); /*!< 每日 */ - sDefBitField(hour); /*!< 每时 */ - sDefBitField(minute); /*!< 每分 */ - sDefBitField(second); /*!< 每秒 */ - sDefBitField(halfsec); /*!< 每半秒 */ - sDefBitField(set); /*!< 设置时间 */ -}s_every_ts; - -/** - \brief 系统警告 - */ -typedef struct -{ - sDefBitField(overflow_msgqueue); /*!<【omq】:消息队列溢出 ....... */ - sDefBitField(timeout_saferuntime); /*!<【srt】:安全运行时超时 ..... */ - sDefBitField(outrange_taskpriority); /*!<【otp】:任务优先级超出范围 . */ - sDefBitField(realloc_taskstack); /*!<【rts】:任务栈重分配发生 ... */ - sDefBitField(overflow_taskstack); /*!<【ots】:未来的任务栈溢出 ... */ - sDefVoidBits(3); -}s_alarm_ts; - -/** - \brief 系统异常 - */ -typedef struct -{ - sDefBitField(mallocfailed_msgnode); /*!<【mmn】:消息节点内存分配失败 */ - sDefBitField(mallocfailed_tasknode); /*!<【mtn】:任务节点内存分配失败 */ - sDefBitField(mallocfailed_taskstack); /*!<【mts】:任务栈内存分配失败 . */ - sDefBitField(reallocfailed_taskstack); /*!<【rts】:任务栈内存重分配失败 */ - sDefBitField(overflow_taskstack); /*!<【ots】:任务栈溢出 ......... */ - sDefBitField(failed_startuptask); /*!<【fst】:启动任务失败 ....... */ - sDefBitField(error_recvmsg_int); /*!<【erm】:中断中接收消息错误 . */ - sDefBitField(overflow_pendsvfifo); /*!<【opd】:PendSV_FIFO溢出 .... */ -}s_fault_ts; - -/** - \brief 任务节点(控制块) - \details CosyOS 的 任务节点 即 任务控制块,包含了任务所需的全部关键信息。 - 任务静态创建时,任务节点为静态;任务动态创建时,任务节点为动态。 - */ -typedef struct s_tasknode_ts -{ - mTaskNode_Head_ /*!< MSP:stacklen,PSP:psp,MSP+PSP:psp */ - s_u8_t opri; /*!< 任务创建时的优先级 */ - m_stacksize_t stacksize; /*!< 任务栈size */ - struct s_tasknode_ts _OBJ_MEM_ * _STATIC_MEM_ *dualhandle; /*!< 任务二重句柄:指向任务句柄的指针 */ - s_voidvoid_tfp entry; /*!< 任务函数入口指针 */ - #if SYSCFG_DEBUGGING == __ENABLED__ - const char _CONST_MEM_ *name; /*!< 任务名称(字符串)*/ - #endif - #if SYSCFG_SAFERUNTIME == __ENABLED__ - s_u16_t saferuntime; /*!< 安全运行时设定值 */ - #endif - s_u8_t _OBJ_MEM_ *bsp; /*!< base stack pointer,任务栈的起始地址 */ - s_u8_t create; /*!< 任务创建 [0:静态创建,1:动态创建未重分配,2:动态创建已重分配] */ - s_u8_t pri; /*!< 任务当前优先级 */ - s_u8_t status; /*!< 任务状态 */ - s_u8_t blocktype; /*!< 阻塞类型 */ - s_delay_t timer; /*!< 软件定时器(延时/超时计数)*/ - #if SYSCFG_MCUCORE == 8051 - void _STATIC_MEM_ *handle; /*!< 内核对象句柄,仅指向静态对象 */ - #endif - #if SYSCFG_SAMEPRISCHEDULE == __TIMESHARING__ - s_sharing_t tc_counter; /*!< 滴答周期计数器 */ - #endif - #if SYSCFG_DEBUGGING == __ENABLED__ - s_u32_t usedtime[2]; /*!< CPU 使用时间计数 */ - m_stacksize_t stacklen_max; /*!< 任务栈的实际占用在历史上的最大值 */ - #endif - #if SYSCFG_SAFERUNTIME == __ENABLED__ - s_u32_t srt_counter; /*!< 安全运行时计数器 */ - #endif - struct s_tasknode_ts _OBJ_MEM_ *next_b; /*!< 下一节点 of 阻塞链表 */ - struct s_tasknode_ts _OBJ_MEM_ *next_t; /*!< 下一节点 of 定时器链表 */ - #if SYSCFG_SAMEPRISCHEDULE - struct s_tasknode_ts _OBJ_MEM_ *last; /*!< 上一节点 of 优先级组 */ - struct s_tasknode_ts _OBJ_MEM_ *next; /*!< 下一节点 of 优先级组 */ - #endif - mTaskNode_Tail_ /*!< MCS51/251:mUserReg_C_,减栈:psp_top */ -}s_tasknode_ts; -typedef s_tasknode_ts _OBJ_MEM_ *s_tasknode_tsp; /*!< 任务句柄 */ - -/** - \brief 任务HAND(装载块) - \details 创建任务时,用来装载任务的关键参数。 - 1、当任务为动态创建时,会定义此结构体;在启动任务时,会动态的分配任务节点, - 再把任务HAND中的参数传入任务节点。 - 2、当任务为静态创建时,任务节点就是任务HAND,不会再额外定义此结构体。 - 注:有关结构体成员的相关说明参见任务节点。 - */ -typedef struct -{ - const mTaskNode_Head_ - const s_u8_t opri; - const m_stacksize_t stacksize; - s_tasknode_ts _OBJ_MEM_ * _STATIC_MEM_ * const dualhandle; - s_voidvoid_tfp entry; - #if SYSCFG_DEBUGGING == __ENABLED__ - const char _CONST_MEM_ * const name; - #endif - #if SYSCFG_SAFERUNTIME == __ENABLED__ - const s_u16_t saferuntime; - #endif -}s_taskhand_ts; -typedef s_taskhand_ts _STATIC_MEM_ *s_taskhand_tsp; /*!< 任务装载块句柄 */ - -/** - \brief 定时中断HAND(控制块) - \details 创建定时中断任务或钩子时,会定义此结构体。 - */ -typedef struct -{ - s_timint_t timer; /*!< 定时器 */ - s_timint_t reload; /*!< 重装载值 */ - bool autoreload; /*!< 是否自动重装载定时器?*/ - const bool hookortask; /*!< 该定时中断是钩子还是任务?[0:hook,1:task] */ - void _CODE_MEM_ * const hookorhand; /*!< 钩子函数指针或任务HAND指针 */ -}s_timinthand_ts; -typedef s_timinthand_ts _STATIC_MEM_ *s_timinthand_tsp; /*!< 定时中断句柄 */ - -/** - \brief 定时查询HAND(控制块) - \details 创建定时查询任务或钩子时,会定义此结构体。 - */ -typedef struct -{ - s_timqry_t timer; /*!< 定时器 */ - s_timqry_t reload; /*!< 重装载值 */ - bool autoreload; /*!< 是否自动重装载定时器?*/ - const bool hookortask; /*!< 该定时查询是钩子还是任务?[0:hook,1:task] */ - void _CODE_MEM_ * const hookorhand; /*!< 钩子函数指针或任务HAND指针 */ - s_boolvoid_tfp const event; /*!< 定时查询事件函数指针 */ -}s_timqryhand_ts; -typedef s_timqryhand_ts _STATIC_MEM_ *s_timqryhand_tsp; /*!< 定时查询句柄 */ - -/** - \brief 互斥信号量控制块 - \details 创建互斥信号量时,会定义此结构体。 - */ -typedef struct -{ - volatile s_u8_t mutex; - s_tasknode_tsp htask; - s_tasknode_tsp otask; - s_u8_t opri; -}s_mutex_ts; -typedef s_mutex_ts _STATIC_MEM_ *s_mutex_tsp; /*!< 互斥信号量句柄 */ - -/** - \brief 二值信号量控制块 - \details 创建二值信号量时,会定义此结构体。 - */ -typedef struct -{ - volatile bool binary; - s_tasknode_tsp htask; -}s_binary_ts; -typedef s_binary_ts _STATIC_MEM_ *s_binary_tsp; /*!< 二值信号量句柄 */ - -/** - \brief 计数信号量控制块 - \details 创建计数信号量时,会定义此结构体。 - */ -typedef struct -{ - volatile s_semsize_t counter; - const s_semsize_t maximum; - s_tasknode_tsp htask; -}s_semaph_ts; -typedef s_semaph_ts _STATIC_MEM_ *s_semaph_tsp; /*!< 计数信号量句柄 */ - -/** - \brief 信箱控制块 - \details 创建信箱时,会定义此结构体。 - */ -typedef struct -{ - volatile m_fetion_t tion; - s_tasknode_tsp htask; -}s_tionbox_ts; -typedef s_tionbox_ts _STATIC_MEM_ *s_tionbox_tsp; /*!< 信箱句柄 */ - -/** - \brief 邮箱控制块 - \details 创建邮箱时,会定义此结构体。 - */ -typedef struct -{ - volatile bool flag; - void *mail; - s_tasknode_tsp htask; -}s_mailbox_ts; -typedef s_mailbox_ts _STATIC_MEM_ *s_mailbox_tsp; /*!< 邮箱句柄 */ - -/** - \brief 消息节点 - \details 动态队列之消息节点。 - */ -typedef struct s_msgnode_ts -{ - void *msg; - struct s_msgnode_ts _MALLOC_MEM_ *last; - struct s_msgnode_ts _MALLOC_MEM_ *next; -}s_msgnode_ts; -typedef s_msgnode_ts _MALLOC_MEM_ *s_msgnode_tsp; /*!< 消息句柄 */ - -/** - \brief 动态队列控制块 - \details 创建动态队列时,会定义此结构体。 - */ -typedef struct -{ - size_t counter; - const s_u8_t type; - const s_u8_t mode; - const size_t len; - s_tasknode_tsp htask; - volatile bool mutex; - s_msgnode_tsp head; - s_msgnode_tsp tail; -}sd_queue_ts; -typedef sd_queue_ts _STATIC_MEM_ *sd_queue_tsp; /*!< 动态队列句柄 */ - -/** - \brief 静态队列控制块 - \details 创建静态队列时,会定义此结构体。 - */ -typedef struct -{ - size_t counter; - const s_u8_t type; - const s_u8_t mode; - const size_t len; - s_tasknode_tsp htask; - volatile bool mutex; - void * _STATIC_MEM_ * head; - void * _STATIC_MEM_ * tail; - void * _STATIC_MEM_ * const base; -}ss_queue_ts; -typedef ss_queue_ts _STATIC_MEM_ *ss_queue_tsp; /*!< 静态队列句柄 */ - -/** - \brief 队列控制块 - \details 创建队列时,并不会定义此结构体;访问队列时,通过其队列句柄, - 即可访问动态队列控制块,也可访问静态队列控制块。 - */ -typedef struct -{ - size_t counter; /*!< 队列计数器:记录队列中消息的数量 */ - const s_u8_t type; /*!< 队列类型 [0:静态队列,1:动态队列] */ - const s_u8_t mode; /*!< 传输模式 [0:FIFO,1:LIFO] */ - const size_t len; /*!< 队列长度 */ - s_tasknode_tsp htask; /*!< 任务句柄 */ - volatile bool mutex; /*!< 队列互斥量 */ -}s_queue_ts; -typedef s_queue_ts _STATIC_MEM_ *s_queue_tsp; /*!< 队列句柄 */ - -/** - \brief 线程内存控制块 - \details 创建线程内存池时,会定义此结构体。 - */ -typedef struct -{ - void _MALLOC_MEM_ *head; - void _MALLOC_MEM_ *move; - size_t size; -}s_thrmem_ts; -typedef s_thrmem_ts _STATIC_MEM_ *s_thrmem_tsp; /*!< 线程内存句柄 */ - -/*------------------------------------------------------------------------------ - * 中断挂起服务_FIFO 结构体类型定义 */ - -typedef struct -{ - const s_u8_t svid; -}sp_svid_ts; -typedef sp_svid_ts _STATIC_MEM_ *sp_svid_tsp; - -typedef struct -{ - const s_u8_t svid; - s_tasknode_tsp htask; -}sp_task_ts; -typedef sp_task_ts _STATIC_MEM_ *sp_task_tsp; - -typedef struct -{ - const s_u8_t svid; - s_tasknode_tsp htask; - const s_u8_t npri; -}sp_taskpri_ts; -typedef sp_taskpri_ts _STATIC_MEM_ *sp_taskpri_tsp; - -typedef struct -{ - const s_u8_t svid; - s_tasknode_tsp htask; - const s_delay_t tick; -}sp_blocktime_ts; -typedef sp_blocktime_ts _STATIC_MEM_ *sp_blocktime_tsp; - -typedef struct -{ - const s_u8_t svid; - const s_u8_t tmid; - s_timint_t tick; -}sp_timint_ts; -typedef sp_timint_ts _STATIC_MEM_ *sp_timint_tsp; - -typedef struct -{ - const s_u8_t svid; - const s_u8_t tmid; - s_timqry_t tick; -}sp_timqry_ts; -typedef sp_timqry_ts _STATIC_MEM_ *sp_timqry_tsp; - -typedef struct -{ - const s_u8_t svid; - s_binary_tsp const hbin; - const bool value; -}sp_binary_ts; -typedef sp_binary_ts _STATIC_MEM_ *sp_binary_tsp; - -typedef struct -{ - const s_u8_t svid; - s_semaph_tsp const hsem; -}sp_semaph_ts; -typedef sp_semaph_ts _STATIC_MEM_ *sp_semaph_tsp; - -typedef struct -{ - const s_u8_t svid; - s_tionbox_tsp const htbox; - m_fetion_t tion; -}sp_tionbox_ts; -typedef sp_tionbox_ts _STATIC_MEM_ *sp_tionbox_tsp; - -typedef struct -{ - const s_u8_t svid; - s_mailbox_tsp const hmbox; - void *mail; -}sp_mailbox_ts; -typedef sp_mailbox_ts _STATIC_MEM_ *sp_mailbox_tsp; - -typedef struct -{ - const s_u8_t svid; - s_queue_tsp const hque; - void *msg; -}sp_msg_ts; -typedef sp_msg_ts _STATIC_MEM_ *sp_msg_tsp; - -typedef struct -{ - const s_u8_t svid; - void _STATIC_MEM_ * const hgrp; - const char size; - m_group_t value; -}sp_group_ts; -typedef sp_group_ts _STATIC_MEM_ *sp_group_tsp; - -typedef struct -{ - const s_u8_t svid; - void * const gp; - void * const lp; - const size_t size; -}sp_gvar_ts; -typedef sp_gvar_ts _STATIC_MEM_ *sp_gvar_tsp; - -typedef struct -{ - const s_u8_t svid; - s_voidvoid_tfp const fp; -}sp_pendsvc_ts; -typedef sp_pendsvc_ts _STATIC_MEM_ *sp_pendsvc_tsp; - -typedef struct -{ - const s_u8_t svid; - bool * const sign; -}sp_sign_ts; -typedef sp_sign_ts _STATIC_MEM_ *sp_sign_tsp; - - - -#endif