ubinos
Classes | Macros | Typedefs | Functions
msgq.h File Reference

ubik message queue API More...

#include <ubinos_config.h>
#include <ubinos/type.h>
#include "task.h"

Go to the source code of this file.

Classes

struct  __msgq_tip_t
 

Macros

#define MSGQ_OPT__IGNOREOVERFLOW   0x80
 

Typedefs

typedef struct __msgq_tip_t _msgq_tip_t
 
typedef _msgq_tip_tmsgq_pt
 

Functions

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)
 

Detailed Description

ubik message queue API

ubik 메시지큐 API를 정의합니다.

Macro Definition Documentation

◆ MSGQ_OPT__IGNOREOVERFLOW

#define MSGQ_OPT__IGNOREOVERFLOW   0x80

메시지큐 선택 사항: 카운터가 최대값을 넘어서는 것을 오류로 간주하지 않음 (최대값 초과 오류를 무시하는 선택 사항)

Typedef Documentation

◆ _msgq_tip_t

typedef struct __msgq_tip_t _msgq_tip_t

API용 메시지큐 형 정의

◆ msgq_pt

typedef _msgq_tip_t* msgq_pt

API용 메시지큐 포인터 형 정의

Function Documentation

◆ msgq_clear()

int msgq_clear ( msgq_pt  msgq)

대상 메시지큐에 쌓여있는 메시지를 모두 제거하는 함수

Parameters
msgq대상 메시지큐 포인터

Returns
0: 성공

-1: 오류
-n: n-1 번째 매개변수가 잘못되었음

◆ msgq_create()

int msgq_create ( msgq_pt msgq_p,
unsigned int  msgsize,
unsigned int  maxcount 
)

메시지큐를 생성하는 함수

Parameters
msgq_p생성한 메시지큐의 주소를 저장할 포인터의 주소

msgsize메시지 크기

maxcount메시지큐에 쌓일 수 있는 최대 메시지 수

Returns
0: 성공

-1: 오류
-n: n-1 번째 매개변수가 잘못되었음
Examples
msgqtest00.c, msgqtest01.c, msgqtest02.c, msgqtest03.c, msgqtest04.c, and tasktest07.c.

◆ 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)

대상 메시지큐를 제거하는 함수

Parameters
msgq_p제거할 대상 메시지큐의 주소가 저장된 포인터의 주소

제거에 성공하면 *msgq_p는 NULL이 됨

Returns
0: 성공

-1: 오류
-n: n-1 번째 매개변수가 잘못되었음
Examples
msgqtest00.c, msgqtest01.c, msgqtest02.c, msgqtest03.c, msgqtest04.c, and tasktest07.c.

◆ 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 
)

대상 메시지큐로 메시지를 보내는 함수

Parameters
msgq대상 메시지큐 포인터

msg보낼 메시지가 저장된 버퍼

Returns
0: 성공

-1: 오류
-n: n-1 번째 매개변수가 잘못되었음
UBIK_ERR__OVERFLOWED: 최대 메시지 수 초과
Examples
msgqtest00.c, msgqtest01.c, msgqtest02.c, msgqtest03.c, and tasktest07.c.

◆ msgq_setsender()

int msgq_setsender ( msgq_pt  msgq,
task_pt  task 
)

대상 메시지큐로 메시지를 보내는 (메시지를 기다리는 최상위 우선순위 태스크의우선순위를 상속받을) 태스크를 설정하는 함수

Parameters
msgq대상 메시지큐 포인터

task대상 태스크 포인터
NULL: 등록 해제

Returns
0: 성공

-1: 오류
-n: n-1 번째 매개변수가 잘못되었음
Examples
msgqtest03.c.