ubinos
Classes | Typedefs | Functions
condv.h File Reference

ubik condition variable API More...

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

Go to the source code of this file.

Classes

struct  __condv_tip_t
 

Typedefs

typedef struct __condv_tip_t _condv_tip_t
 
typedef _condv_tip_tcondv_pt
 

Functions

int condv_create (condv_pt *condv_p)
 
int condv_create_ext (condv_pt *condv_p, unsigned int option)
 
int condv_delete (condv_pt *condv_p)
 
int condv_wait (condv_pt condv, mutex_pt mutex)
 
int condv_wait_timed (condv_pt condv, mutex_pt mutex, unsigned int tick)
 
int condv_wait_timedms (condv_pt condv, mutex_pt mutex, unsigned int timems)
 
int condv_signal (condv_pt condv)
 
int condv_broadcast (condv_pt condv)
 
int condv_setsender (condv_pt condv, task_pt task)
 

Detailed Description

ubik condition variable API

ubik 상태변수 API를 정의합니다.

Typedef Documentation

◆ _condv_tip_t

typedef struct __condv_tip_t _condv_tip_t

API용 상태변수 형 정의

◆ condv_pt

API용 상태변수 포인터 형 정의

Function Documentation

◆ condv_broadcast()

int condv_broadcast ( condv_pt  condv)

기다리고 있는 태스크들모두에게 상태변수가 변경되었음을 알려주는 함수

Parameters
condv대상 상태변수 포인터
Returns
0: 성공

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

◆ condv_create()

int condv_create ( condv_pt condv_p)

상태변수를 생성하는 함수

Parameters
condv_p생성한 상태변수의 주소를 저장할 포인터의 주소
Returns
0: 성공

-1: 오류
-n: n-1 번째 매개변수가 잘못되었음
Examples
condvtest01.c, condvtest02.c, condvtest03.c, condvtest04.c, and tasktest07.c.

◆ condv_create_ext()

int condv_create_ext ( condv_pt condv_p,
unsigned int  option 
)

상태변수를 생성하는 함수 (확장형)

Parameters
condv_p생성한 상태변수의 주소를 저장할 포인터의 주소
option옵션 (CONDV_OPT__...)
0: 기본 설정
Returns
0: 성공

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

◆ condv_delete()

int condv_delete ( condv_pt condv_p)

상태변수를 제거하는 함수

Parameters
condv_p제거할 상태변수의 주소가 저장된 포인터의 주소
제거에 성공하면 *condv_p는 NULL이 됨
Returns
0: 성공

-1: 오류
-n: n-1 번째 매개변수가 잘못되었음
Examples
condvtest01.c, condvtest02.c, condvtest03.c, condvtest04.c, and tasktest07.c.

◆ condv_setsender()

int condv_setsender ( condv_pt  condv,
task_pt  task 
)

상태변수가 변경되었음을 알려주는 (상태변수를 기다리는 최상위 우선순위 태스크의우선순위를 상속받을) 태스크를 설정하는 함수

Parameters
condv대상 상태변수 포인터
task대상 태스크 포인터
NULL이면 등록된 태스크 제거
Returns
0: 성공

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

◆ condv_signal()

int condv_signal ( condv_pt  condv)

기다리고 있는 태스크들 중 하나에게 상태변수가 변경되었음을 알려주는 함수

Parameters
condv대상 상태변수 포인터
Returns
0: 성공

-1: 오류
-n: n-1 번째 매개변수가 잘못되었음
Examples
condvtest01.c, condvtest02.c, condvtest03.c, and tasktest07.c.

◆ condv_wait()

int condv_wait ( condv_pt  condv,
mutex_pt  mutex 
)

상태변수가 변경되기를 기다리는 함수

Parameters
condv대상 상태변수 포인터
mutex대상 상태변수를 보호하는 뮤텍스
Returns
0: 성공

-1: 오류
-n: n-1 번째 매개변수가 잘못되었음
UBIK_ERR__DEADLOCK : 데드락 발생 가능성이 있음
UBIK_ERR__TERMINATED : 기다리던 객체가 제거되었음
Examples
condvtest01.c, condvtest02.c, and condvtest03.c.

◆ condv_wait_timed()

int condv_wait_timed ( condv_pt  condv,
mutex_pt  mutex,
unsigned int  tick 
)

제한 시간동안 상태변수가 변경되기를 기다리는 함수

Parameters
condv대상 상태변수 포인터
mutex대상 상태변수를 보호하는 뮤텍스
tick제한 시간 (시스템 틱 수)
Returns
0: 성공

-1: 오류
-n: n-1 번째 매개변수가 잘못되었음
UBIK_ERR__TIMEOUT : 제한 시간 초과
UBIK_ERR__DEADLOCK : 데드락 발생 가능성이 있음
UBIK_ERR__TERMINATED : 기다리던 객체가 제거되었음
Examples
condvtest01.c.

◆ condv_wait_timedms()

int condv_wait_timedms ( condv_pt  condv,
mutex_pt  mutex,
unsigned int  timems 
)

제한 시간동안 상태변수가 변경되기를 기다리는 함수 (천분의 일초 단위)

Parameters
condv대상 상태변수 포인터
mutex대상 상태변수를 보호하는 뮤텍스
timems제한 시간 (천분의 일초)
Returns
0: 성공

-1: 오류
-n: n-1 번째 매개변수가 잘못되었음
UBIK_ERR__TIMEOUT : 제한 시간 초과
UBIK_ERR__DEADLOCK : 데드락 발생 가능성이 있음
UBIK_ERR__TERMINATED : 기다리던 객체가 제거되었음