X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=Include%2Fvos_task.h;h=5373955503aa4349128b1cd3c1d131a3c858f993;hb=e93798699eccb72af04938fc9b0d7a836e284488;hp=23c077b0e646c99bdce12e053e65fa7b1b05565e;hpb=94f13ab3e8da393eb27ccc561d31b447b1367c56;p=scp%2Focu%2F5gnr.git diff --git a/Include/vos_task.h b/Include/vos_task.h index 23c077b..5373955 100644 --- a/Include/vos_task.h +++ b/Include/vos_task.h @@ -1,9 +1,21 @@ /****************************************************************************** -############################################################################### -# Copyright (c) [2017-2020] [ICT/CAS] # -# Licensed under the ORAN Software License v1.0 (License) # -############################################################################### -******************************************************************************/ +* +* Copyright (c) 2020 ICT/CAS. +* +* Licensed under the O-RAN Software License, Version 1.0 (the "Software License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* https://www.o-ran.org/software +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +* +*******************************************************************************/ + #ifndef __VOS_TASK_H__ @@ -53,8 +65,8 @@ typedef VOS_msg_code_handler_ptr VOS_user_task_entry; /** 用户任务结构体 */ typedef struct VOS_user_task_s { - CHAR userTaskName[VOS_NAME_MAX_LENGTH]; ///< 用户任务名 - VOS_user_task_entry userTaskEntry; ///< 用户任务入口 + CHAR userTaskName[VOS_NAME_MAX_LENGTH]; ///< 用户任务名 + VOS_user_task_entry userTaskEntry; ///< 用户任务入口 ULONG moduleID; ///< 用于 VOS_Malloc 的第二个参数 }VOS_user_task_t; @@ -65,35 +77,35 @@ typedef VOID (*VOS_TASK_ENTRY)( ULONG pArg1, ULONG pArg2, ULONG pArg3, ULONG pArg7, ULONG pArg8, ULONG pArg9, ULONG pArg10 ); -/** +/** * 任务创建 宏, * 该宏 会创建一个线程,栈大小为 VOS_DEFAULT_STACKSIZE 。 - * @param[in] taskName 任务名,长度为 VOS_NAME_MAX_LENGTH + * @param[in] taskName 任务名,长度为 VOS_NAME_MAX_LENGTH * @param[in] lPriority 优先级,使用 VOS_task_pri_t 枚举值 * @param[in] pfEntry 任务入口函数, 原型为VOS_TASK_ENTRY,10个ULONG 参数,无返回值 定义时使用宏DECLARE_VOS_TASK定义,eg:DECLARE_VOS_TASK(task1){ .... } - * @param[in] lTaskArg 传给任务入口函数的参数,类型为ULONG pArgs[10] + * @param[in] lTaskArg 传给任务入口函数的参数,类型为ULONG pArgs[10] * @return 成功返回VOS_HANDLE 类型的任务句柄,失败返回NULL - */ + */ #define VOS_TaskCreate( taskName, lPriority, pfEntry, lTaskArg )\ VOS_TaskCreate_Ex_X( taskName, pfEntry, #pfEntry, (ULONG)(lPriority), VOS_DEFAULT_STACKSIZE, (ULONG *)(lTaskArg) ) -/** +/** * 任务创建 宏, * 该宏 会创建一个线程。 - * @param[in] taskName 任务名,长度为 VOS_NAME_MAX_LENGTH + * @param[in] taskName 任务名,长度为 VOS_NAME_MAX_LENGTH * @param[in] pfEntry 任务入口函数, 原型为VOS_TASK_ENTRY,10个ULONG 参数,无返回值 定义时使用宏DECLARE_VOS_TASK定义,eg:DECLARE_VOS_TASK(task1){ .... } * @param[in] lPriority 优先级,使用 VOS_task_pri_t 枚举值 * @param[in] ulStackSize 栈大小 - * @param[in] lTaskArg 传给任务入口函数的参数,类型为ULONG pArgs[10] + * @param[in] lTaskArg 传给任务入口函数的参数,类型为ULONG pArgs[10] * @return 成功返回VOS_HANDLE 类型的任务句柄,失败返回NULL - */ + */ #define VOS_TaskCreateEx( taskName, pfEntry, lPriority, ulStackSize, lTaskArg )\ VOS_TaskCreate_Ex_X( taskName, pfEntry, #pfEntry, lPriority, ulStackSize, lTaskArg ) -/** +/** * 任务延时 宏, * 当前任务睡眠一定的时间. * @param[in] lMsec 延时时间,毫秒 @@ -103,76 +115,76 @@ typedef VOID (*VOS_TASK_ENTRY)( ULONG pArg1, ULONG pArg2, ULONG pArg3, (LONG)VOS_TaskDelay_Ex_X( (lMsec), __FILE__, __LINE__ ) -/** +/** * 任务删除 API, * 将指定任务删除 。 * @param[in] hTaskHandle 任务创建时返回的任务句柄 * @param[in] ulExitCode 任务退出码,仅在windows系统中有效,其他传 0 即可 * @return VOS_OK - 成功,其他 - 失败 - */ + */ LONG VOS_TaskTerminate( VOS_HANDLE hTaskHandle, ULONG ulExitCode ); -/** +/** * 将任务信息注册到vos task,在任务入口的最开始调用。main函数则在调用VOS_init()后调用 * @return VOS_OK - 成功,其他 - 失败 - */ + */ LONG VOS_TaskInfoAttach(void); -/** +/** * 得到当前VOS任务句柄 * @return 成功返回VOS_HANDLE 类型的任务句柄,失败返回NULL */ VOS_HANDLE VOS_GetCurrentTask( VOID ); -/** +/** * 获得任务优先级 - * + * * @param[in] hTaskHandle 任务创建时返回的任务句柄 * @param[out] pPrio 任务优先级 * @return VOS_OK - 成功,其他 - 失败 - */ + */ LONG VOS_TaskGetPriority( VOS_HANDLE hTaskHandle, ULONG *pPrio ); -/** +/** * 设置任务优先级 - * + * * @param[in] hTaskHandle 任务创建时返回的任务句柄 * @param[in] ulnewPrio 任务优先级 * @return VOS_OK - 成功,其他 - 失败 - */ + */ LONG VOS_TaskSetPriority( VOS_HANDLE hTaskHandle, ULONG ulnewPrio ); -/** +/** * 获取当前任务的名字. - * + * * @param[out] szTaskName 任务名,长度 VOS_NAME_MAX_LENGTH * @return VOS_OK - 成功,其他 - 失败 */ LONG VOS_GetCurrentTaskName( CHAR szTaskName[VOS_NAME_MAX_LENGTH] ); -/** +/** * 判断任务句柄是否有效. - * + * * @param[in] hTaskHandle 任务句柄 * @return 有效返回真,否则返回假 */ BOOL VOS_TaskHandleVerify( VOS_HANDLE hTaskHandle ); -/** +/** * 创建宿主任务,宿主任务可以绑定多个用户任务(回调函数),栈大小为 VOS_DEFAULT_STACKSIZE。 * @param[in] taskName 任务名,长度为 VOS_NAME_MAX_LENGTH * @param[in] lPriority 优先级,使用 VOS_task_pri_t 枚举值 * @return 成功返回VOS_HANDLE 类型的任务句柄,失败返回NULL - */ + */ #define VOS_TaskHostCreate( taskName, lPriority )\ VOS_TaskHostCreate_Ex_X( taskName, lPriority, VOS_DEFAULT_STACKSIZE) -/** +/** * 创建宿主任务,宿主任务可以绑定多个用户任务(回调函数)。 * @param[in] taskName 任务名,长度为 VOS_NAME_MAX_LENGTH * @param[in] lPriority 优先级,使用 VOS_task_pri_t 枚举值 @@ -184,57 +196,57 @@ BOOL VOS_TaskHandleVerify( VOS_HANDLE hTaskHandle ); -/** +/** * 删除宿主任务,同时该宿主任务下的用户任务将被全部删除 - * + * * @param[in ] szTaskName 宿主任务名 * @param[in ] ulExitCode 退出码(暂未使用,填0即可) * @return VOS_OK - 成功,其他 - 失败 - */ + */ LONG VOS_TaskHostTerminate(CHAR szTaskName[VOS_NAME_MAX_LENGTH], ULONG ulExitCode); -/** +/** * 向宿主任务中添加用户任务(回调函数)。 - * + * * @param[in ] hostTaskName 宿主任务名 * @param[in ] userTask 用户任务 * @return VOS_OK - 成功,其他 - 失败 - */ + */ LONG VOS_UserTaskAttach(CHAR hostTaskName[VOS_NAME_MAX_LENGTH],VOS_user_task_t *userTask); -/** +/** * 从宿主任务中删除用户任务(回调函数)。 - * + * * @param[in ] hostTaskName 宿主任务名 * @param[in ] userTaskName 用户任务 * @return VOS_OK - 成功,其他 - 失败 - */ + */ LONG VOS_UserTaskDetach(CHAR hostTaskName[VOS_NAME_MAX_LENGTH],CHAR userTaskName[VOS_NAME_MAX_LENGTH]); -/** +/** * 设置任务的CPU亲和性 - * + * * @param[in ] taskName 任务名(包含宿主任务,不包含用户任务) * @param[in ] size CPU个数 * @param[in ] cpus CPU ID 数组 * @return VOS_OK - 成功,其他 - 失败 - */ + */ LONG VOS_TaskAffinitySet(CHAR taskName[VOS_NAME_MAX_LENGTH],LONG size,LONG cpus[]); -/** +/** * 获取任务的CPU亲和性,如果实际CPU个数超过cpus数组大小,则只返回size个cpu ID,返回值为 VOS_ERROR_BAD_ARGUMENTS - * + * * @param[in ] taskName 任务名(包含宿主任务,不包含用户任务) * @param[in ] size cpus数组大小 * @param[out] size cpus数组有效值个数 * @param[in ] cpus CPU ID 数组 * @return VOS_OK - 成功,其他 - 失败 - */ + */ LONG VOS_TaskAffinityGet(CHAR taskName[VOS_NAME_MAX_LENGTH],LONG *size,LONG cpus[]); @@ -242,17 +254,17 @@ LONG VOS_TaskAffinityGet(CHAR taskName[VOS_NAME_MAX_LENGTH],LONG *size,LONG cpus /*=========================================================================================================================*/ /* ###### 下面的函数不要直接调用,使用上面提供的宏 ###### */ -/** +/** * 任务创建 API,不要直接使用,通过 VOS_TaskCreate 宏使用 * 该API会创建一个线程,栈大小为 VOS_DEFAULT_STACKSIZE 。 -* @param[in] szTaskName 任务名,长度为 VOS_NAME_MAX_LENGTH +* @param[in] szTaskName 任务名,长度为 VOS_NAME_MAX_LENGTH * @param[in] pfnFunc 任务入口函数, 原型为VOS_TASK_ENTRY,10个ULONG 参数,无返回值 * @param[in] szFuncName 任务入口函数名 * @param[in] ulStartPriority 优先级,使用 VOS_task_pri_t 枚举值 * @param[in] ulStackSize 栈大小 -* @param[in] pArgs 传给任务入口函数的参数,类型为ULONG pArgs[10] +* @param[in] pArgs 传给任务入口函数的参数,类型为ULONG pArgs[10] * @return 成功返回VOS_HANDLE 类型的任务句柄,失败返回NULL -*/ +*/ VOS_HANDLE VOS_TaskCreate_Ex_X( CHAR szTaskName[VOS_NAME_MAX_LENGTH], VOS_TASK_ENTRY pfnFunc, CHAR *szFuncName, @@ -260,7 +272,7 @@ VOS_HANDLE VOS_TaskCreate_Ex_X( CHAR szTaskName[VOS_NAME_MAX_LENGTH], ULONG ulStackSize, ULONG pArgs[VOS_MAX_TASK_ARGS]); -/** +/** * 任务延时 API,不要直接使用,通过 VOS_TaskDelay 宏使用 * 当前任务睡眠一定的时间. * @param[in] lMsec 延时时间,毫秒 @@ -271,10 +283,10 @@ VOS_HANDLE VOS_TaskCreate_Ex_X( CHAR szTaskName[VOS_NAME_MAX_LENGTH], LONG VOS_TaskDelay_Ex_X( ULONG lMsec, CHAR *szFileName, INT iLine ); -/** +/** * 创建宿主任务,不要直接使用,通过 VOS_TaskHostCreate 宏使用,宿主任务可以绑定多个用户任务(回调函数)。 - * - * @param[in] szTaskName 任务名,长度为 VOS_NAME_MAX_LENGTH + * + * @param[in] szTaskName 任务名,长度为 VOS_NAME_MAX_LENGTH * @param[in] ulStartPriority 优先级,使用 VOS_task_pri_t 枚举值 * @param[in] ulStackSize 栈大小 * @return 成功返回VOS_HANDLE 类型的任务句柄,失败返回NULL @@ -284,25 +296,25 @@ VOS_HANDLE VOS_TaskHostCreate_Ex_X( CHAR szTaskName[VOS_NAME_MAX_LENGTH], ULONG ulStackSize); -/** +/** * 获得当前任务的进程ID(PID) - * + * * @return 返回进程ID(PID) */ ULONG VOS_TaskSelfGetPID(void); -/** +/** * 获得当前任务的线程ID(SPID) - * + * * @return 返回线程ID(SPID) */ ULONG VOS_TaskSelfGetSPID(void); -/** +/** * 获得当前任务的线程ID(thread ID) - * + * * @return 返回线程ID(thread ID) */ ULONG VOS_TaskSelfThreadID(void);