📄 platform.h
字号:
参数 : msgQId 消息队列的id.
buffer 存有消息的缓冲区.
nBytes 发送缓冲中数据的长度.
timeout 发送的超时选项,可选值有二:
NO_WAIT :队列满时,不等待,立即返回错误.
WAIT_FOREVER:队列满时将阻塞,直到队列有空间.
注:如果传入值不在上面选项中,则认为是WAIT_FOREVER.
option 未使用
返回值 : 接收到消息的大小(>0) 成功接收
ERROR(-1) 调用失败
******************************************************************************/
int msgQReceive
(
USE MSG_Q_ID msgQId, /* 队列id */
USE char * buffer, /* 接收缓冲 */
USE unsigned int maxNBytes, /* 缓冲区长度 */
USE int timeout /* NO_WAIT(队列空时立即返回),WAIT_FOREVER(队列空时将阻塞,直到队列不为空) */
);
/****************************************************************************
获取linux消息队列中当前消息个数
函数名 : msgQNumMsgs()
功能 : 获取linux消息队列中当前消息个数
参数 : msgQId 消息队列的id.
返回值 : 消息个数(>=0) 查询成功
ERROR(-1) 调用失败
******************************************************************************/
int msgQNumMsgs
(
USE MSG_Q_ID msgQId /* message queue to examine */
);
#endif
#ifndef __SEM__
#define MAX_SEM 50 //信号量的最大个数
#define SEM_TYPE_UNUSED 0
#define SEM_TYPE_COUNT 1
#define SEM_TYPE_MUTEX 2
#define SEM_TYPE_BINARY 3
/*信号量包括:计数信号量,二值信号量,互斥信号量*/
typedef struct _semInfo
{
short int semType;//信号量类型
SEM_ID semId;//信号量ID
pthread_mutex_t mutex;//采用线程互斥锁时,将使用该变量保存互斥锁的信息
void* semInfoPtr ;
}semInfo;
/*创建信号量时需要用到该结构体*/
union semun {
int val;
struct semid_ds *buf;
unsigned short *array;
} arg;
void initSemList();
/****************************************************************************
删除一个信号量
函数名 : semDelete()
功能 : 删除一个信号量
参数 : semId 信号量的id.
返回值 : OK(0) 删除成功
ERROR(-1) 调用失败
******************************************************************************/
int semDelete
(
SEM_ID semId /* semaphore ID to delete */
);
/****************************************************************************
等待一个信号量
函数名 : semTake()
功能 : 等待一个信号量
参数 : semId 信号量的id.
timeout 等待超时选项,可选值有二:
NO_WAIT :没有信号量时不等待,立即返回错误.
WAIT_FOREVER:没有信号量时时将阻塞,直到取得信号量.
注:如果传入值不在上面选项中,则认为是WAIT_FOREVER.
返回值 : OK(0) 删除成功
ERROR(-1) 调用失败
******************************************************************************/
int semTake
(
SEM_ID semId, /* semaphore ID to take */
int timeout /* timeout in ticks */
);
/****************************************************************************
释放一个信号量
函数名 : semGive()
功能 : 释放一个信号量
参数 : semId 信号量的id.
返回值 : OK(0) 删除成功
ERROR(-1) 调用失败
******************************************************************************/
int semGive
(
SEM_ID semId /* semaphore ID to give */
);
/****************************************************************************
创建一个计数信号量
函数名 : semCCreate()
功能 : 创建一个计数信号量
参数 : options 未使用.
initialCount 信号量的初始值
返回值 : 信号量id(>0) 创建成功
NULL(0) 调用失败
******************************************************************************/
SEM_ID semCCreate//创建一个计数信号量
(
NO int options, /* 不使用 */
USE int initialCount /* 信号量的初始值 */
);
/****************************************************************************
创建一个互斥型信号量
函数名 : semMCreate()
功能 : 创建一个互斥型信号量
参数 : options 未使用.
initialCount 信号量的初始值
返回值 : 信号量id(>0) 创建成功
NULL(0) 调用失败
******************************************************************************/
SEM_ID semMCreate//创建一个互斥型信号量
(
NO int options /* 未使用 */
);
/****************************************************************************
创建一个二进制型信号量
函数名 : semBCreate()
功能 : 创建一个互斥型信号量
参数 : options 未使用.
initialCount 信号量的初始值
返回值 : 信号量id(>0) 创建成功
NULL(0) 调用失败
******************************************************************************/
/*linux信号量都是按照先后顺序来的,没有按照优先级来排队*/
SEM_ID semBCreate//创建一个二进制型信号量
(
NO int options, /* 未使用 */
USE int initialState /* 初始值 */
);
#endif
#ifndef __TIMER__
struct _appTimer
{
struct sigaction act;
struct itimerval value;
unsigned long int th_timer;
unsigned char rateSetFlag:1;
unsigned char clkConnect:1;
unsigned char unused:6;
};
int sysClkConnect
(
void (*routine) (void*), /* routine called at each system clock interrupt */
int arg /* argument with which to call routine */
);
int sysClkRateSet
(
int ticksPerSecond /* number of clock interrupts per second */
);
void sysAuxClkEnable(void);
#endif
#ifdef __TIME__
time_t time
(
time_t * timer /* calendar time in seconds */
);
struct tm *localtime
(
const time_t * timer /* calendar time in seconds */
);
time_t mktime
(
struct tm * timeptr /* pointer to broken-down structure */
);
//clock_settime
#endif
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -