ubik message queue API
More...
#include <ubinos_config.h>
#include <ubinos/type.h>
#include "task.h"
Go to the source code of this file.
|
int | msgq_create (msgq_pt *msgq_p, unsigned int msgsize, unsigned int maxcount) |
|
int | msgq_create_ext (msgq_pt *msgq_p, unsigned int msgsize, unsigned int maxcount, unsigned int option) |
|
int | msgq_delete (msgq_pt *msgq_p) |
|
int | msgq_receive (msgq_pt msgq, unsigned char *msg) |
|
int | msgq_receive_timed (msgq_pt msgq, unsigned char *msg, unsigned int tick) |
|
int | msgq_receive_timedms (msgq_pt msgq, unsigned char *msg, unsigned int timems) |
|
int | msgq_send (msgq_pt msgq, unsigned char *msg) |
|
int | msgq_clear (msgq_pt msgq) |
|
int | msgq_setsender (msgq_pt msgq, task_pt task) |
|
int | msgq_getcount (msgq_pt msgq, unsigned int *count_p) |
|
ubik message queue API
ubik 메시지큐 API를 정의합니다.
◆ MSGQ_OPT__IGNOREOVERFLOW
#define MSGQ_OPT__IGNOREOVERFLOW 0x80 |
메시지큐 선택 사항: 카운터가 최대값을 넘어서는 것을 오류로 간주하지 않음 (최대값 초과 오류를 무시하는 선택 사항)
◆ _msgq_tip_t
◆ msgq_pt
◆ msgq_clear()
대상 메시지큐에 쌓여있는 메시지를 모두 제거하는 함수
- Parameters
-
- Returns
- 0: 성공
-1: 오류
-n: n-1 번째 매개변수가 잘못되었음
◆ msgq_create()
int msgq_create |
( |
msgq_pt * |
msgq_p, |
|
|
unsigned int |
msgsize, |
|
|
unsigned int |
maxcount |
|
) |
| |
◆ msgq_create_ext()
int msgq_create_ext |
( |
msgq_pt * |
msgq_p, |
|
|
unsigned int |
msgsize, |
|
|
unsigned int |
maxcount, |
|
|
unsigned int |
option |
|
) |
| |
메시지큐를 생성하는 함수 확장형
- Parameters
-
msgq_p | 생성한 메시지큐의 주소를 저장할 포인터의 주소
|
msgsize | 메시지 크기
|
maxcount | 메시지큐에 쌓일 수 있는 최대 메시지 수
|
option | 선택 사항 (MSGQ_OPT__...)
0: 어느 것도 선택하지 않음
|
- Returns
- 0: 성공
-1: 오류
-n: n-1 번째 매개변수가 잘못되었음
◆ msgq_delete()
int msgq_delete |
( |
msgq_pt * |
msgq_p | ) |
|
◆ msgq_getcount()
int msgq_getcount |
( |
msgq_pt |
msgq, |
|
|
unsigned int * |
count_p |
|
) |
| |
대상 메시지큐에 쌓여있는 메시지 수를 돌려주는 함수
- Parameters
-
msgq | 대상 메시지큐 포인터
|
count_p | 메시지큐에 쌓여있는 메시지 수를 저장할 변수의 주소
|
- Returns
- 0: 성공
-1: 오류
-n: n-1 번째 매개변수가 잘못되었음
◆ msgq_receive()
int msgq_receive |
( |
msgq_pt |
msgq, |
|
|
unsigned char * |
msg |
|
) |
| |
대상 메시지큐로부터 메시지를 받는 함수
- Parameters
-
msgq | 대상 메시지큐 포인터
|
msg | 받은 메시지를 저장할 버퍼
|
- Returns
- 0: 성공
-1: 오류
-n: n-1 번째 매개변수가 잘못되었음
UBIK_ERR__DEADLOCK : 데드락 발생 가능성이 있음
UBIK_ERR__TERMINATED : 기다리던 객체가 제거되었음
- Examples
- msgqtest00.c, msgqtest01.c, msgqtest02.c, and msgqtest03.c.
◆ msgq_receive_timed()
int msgq_receive_timed |
( |
msgq_pt |
msgq, |
|
|
unsigned char * |
msg, |
|
|
unsigned int |
tick |
|
) |
| |
제한 시간을 두고 대상 메시지큐로부터 메시지를 받는 함수
- Parameters
-
msgq | 대상 메시지큐 포인터
|
msg | 받은 메시지를 저장할 버퍼
|
tick | 제한 시간 (시스템 틱tick 수)
|
- Returns
- 0: 성공
-1: 오류
-n: n-1 번째 매개변수가 잘못되었음
UBIK_ERR__TIMEOUT : 제한 시간 초과
UBIK_ERR__DEADLOCK : 데드락 발생 가능성이 있음
UBIK_ERR__TERMINATED : 기다리던 객체가 제거되었음
- Examples
- msgqtest01.c.
◆ msgq_receive_timedms()
int msgq_receive_timedms |
( |
msgq_pt |
msgq, |
|
|
unsigned char * |
msg, |
|
|
unsigned int |
timems |
|
) |
| |
제한 시간을 두고 대상 메시지큐로부터 메시지를 받는 함수 (천분의 일초 단위)
- Parameters
-
msgq | 대상 메시지큐 포인터
|
msg | 받은 메시지를 저장할 버퍼
|
timems | 제한 시간 (천분의 일초)
|
- Returns
- 0: 성공
-1: 오류
-n: n-1 번째 매개변수가 잘못되었음
UBIK_ERR__TIMEOUT : 제한 시간 초과
UBIK_ERR__DEADLOCK : 데드락 발생 가능성이 있음
UBIK_ERR__TERMINATED : 기다리던 객체가 제거되었음
◆ msgq_send()
int msgq_send |
( |
msgq_pt |
msgq, |
|
|
unsigned char * |
msg |
|
) |
| |
◆ msgq_setsender()
대상 메시지큐로 메시지를 보내는 (메시지를 기다리는 최상위 우선순위 태스크의우선순위를 상속받을) 태스크를 설정하는 함수
- Parameters
-
msgq | 대상 메시지큐 포인터
|
task | 대상 태스크 포인터
NULL: 등록 해제
|
- Returns
- 0: 성공
-1: 오류
-n: n-1 번째 매개변수가 잘못되었음
- Examples
- msgqtest03.c.