You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

80 lines
2.4 KiB
C

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

/****************************************************************************/
/* 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 */