/****************************************************************************/ /* Copyright (c) 2007,许继集团有限公司 */ /* All rights reserved. */ /* */ /* 模块描述: */ /** 多线程管理模块,提供互斥量初始化及操作接口 * @file ai_sem.h */ /* */ /* 日期 作者 注释 */ /* 2007/07/13 ZYZ 创建文件 */ /****************************************************************************/ #ifndef IEC61850_AI_SEM_H #define IEC61850_AI_SEM_H #include "glbtypes.h" #ifdef __cplusplus extern "C" { #endif /** * 初始化互斥量的最大个数为10 */ #define AI_MAX_SEM_NUM 10 /** * 枚举定义可以增加自己的互斥量,以下定义为暂时定义 */ #define AI_SEM_SRVM 0 /**< 站点管理互斥量 */ #define AI_SEM_REQ 1 /**< 请求管理互斥量 */ #define AI_SEM_ASSOC 2 /**< 关联操作互斥量 */ #define AI_SEM_COMMON 9 /**< 全局公用互斥量 */ /** * 初始化AI_MAX_SEM_NUM个互斥量 * @param ST_VOID * @retval SD_TRUE 初始化互斥量成功 * @retval SD_FALSE 初始化互斥量失败 */ ST_BOOLEAN ai_init_sem(ST_VOID); /** * 释放互斥量 * @param ST_VOID * @return ST_VOID */ ST_VOID ai_uninit_sem(ST_VOID); /** * 锁定互斥量 * @param index 枚举内定义索引,从0开始,最多10个 * @return ST_VOID */ ST_VOID ai_lock_sem(ST_INT index); /** * 解除锁定互斥量 * @param index 枚举内定义索引,从0开始,最多10个 * @return ST_VOID */ ST_VOID ai_unlock_sem(ST_INT index); #define AI_LOCK_SRVM_RESOURCES() ai_lock_sem(AI_SEM_SRVM) #define AI_UNLOCK_SRVML_RESOURCES() ai_unlock_sem(AI_SEM_SRVM) #define AI_LOCK_REQ_RESOURCES() ai_lock_sem(AI_SEM_REQ) #define AI_UNLOCK_REQ_RESOURCES() ai_unlock_sem(AI_SEM_REQ) #define AI_LOCK_ASSOC_RESOURCES() ai_lock_sem(AI_SEM_ASSOC) #define AI_UNLOCK_ASSOC_RESOURCES() ai_unlock_sem(AI_SEM_ASSOC) #define AI_LOCK_COMMON_RESOURCES() ai_lock_sem(AI_SEM_COMMON) #define AI_UNLOCK_COMMON_RESOURCES() ai_unlock_sem(AI_SEM_COMMON) #ifdef __cplusplus } #endif #endif /* #ifndef IEC61850_AI_SEM_H */