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

ubik mutex API More...

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

Go to the source code of this file.

Classes

struct  __mutex_tip_t
 

Macros

#define MUTEX_OPT__NOPRIORITYINHERITANCE   0x80
 

Typedefs

typedef struct __mutex_tip_t _mutex_tip_t
 
typedef _mutex_tip_tmutex_pt
 

Functions

int mutex_create (mutex_pt *mutex_p)
 
int mutex_create_ext (mutex_pt *mutex_p, unsigned int option)
 
int mutex_delete (mutex_pt *mutex_p)
 
int mutex_lock (mutex_pt mutex)
 
int mutex_lock_timed (mutex_pt mutex, unsigned int tick)
 
int mutex_lock_timedms (mutex_pt mutex, unsigned int timems)
 
int mutex_unlock (mutex_pt mutex)
 
int mutex_islocked (mutex_pt mutex)
 

Detailed Description

ubik mutex API

ubik 뮤텍스 API를 정의합니다.

Macro Definition Documentation

◆ MUTEX_OPT__NOPRIORITYINHERITANCE

#define MUTEX_OPT__NOPRIORITYINHERITANCE   0x80

뮤텍스 선택 사항: 뮤텍스의 우선순위 상속priority inheritance 특성을 비활성화 함 (우선순위 상속priority inheritance 특성 비활성화 선택 사항)

Examples
mutextest02.c.

Typedef Documentation

◆ _mutex_tip_t

typedef struct __mutex_tip_t _mutex_tip_t

API용 뮤텍스 형 정의

◆ mutex_pt

API용 뮤텍스 포인터 형 정의

Function Documentation

◆ mutex_create()

int mutex_create ( mutex_pt mutex_p)

뮤텍스를 생성하는 함수

Parameters
mutex_p생성한 뮤텍스의 주소를 저장할 포인터의 주소

Returns
0: 성공

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

◆ mutex_create_ext()

int mutex_create_ext ( mutex_pt mutex_p,
unsigned int  option 
)

뮤텍스를 생성하는 함수 확장형

Parameters
mutex_p생성한 뮤텍스의 주소를 저장할 포인터의 주소

option선택 사항 (MUTEX_OPT__...)
0: 어느 것도 선택하지 않음

Returns
0: 성공

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

◆ mutex_delete()

int mutex_delete ( mutex_pt mutex_p)

대상 뮤텍스를 제거하는 함수

Parameters
mutex_p제거할 대상 뮤텍스의 주소가 저장된 포인터의 주소

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

Returns
0: 성공

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

◆ mutex_islocked()

int mutex_islocked ( mutex_pt  mutex)

뮤텍스가 잠겨져 있는지 여부를 돌려주는 함수

Parameters
mutex대상 뮤텍스 포인터

Returns
1: 잠겨져 있음
0: 잠겨져 있지 않음

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

◆ mutex_lock()

int mutex_lock ( mutex_pt  mutex)

대상 뮤텍스를 잠그는 함수

Parameters
mutex대상 뮤텍스 포인터

Returns
0: 성공

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

◆ mutex_lock_timed()

int mutex_lock_timed ( mutex_pt  mutex,
unsigned int  tick 
)

제한 시간을 두고 대상 뮤텍스 잠그기를 시도하는 함수

Parameters
mutex대상 뮤텍스 포인터

tick제한 시간 (시스템 틱tick 수)

Returns
0: 성공

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

◆ mutex_lock_timedms()

int mutex_lock_timedms ( mutex_pt  mutex,
unsigned int  timems 
)

제한 시간을 두고 대상 뮤텍스 잠그기를 시도하는 함수 (천분의 일초 단위)

Parameters
mutex대상 뮤텍스 포인터

timems제한 시간 (천분의 일초)

Returns
0: 성공

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

◆ mutex_unlock()

int mutex_unlock ( mutex_pt  mutex)

대상 뮤텍스를 잠금 해제하는 함수

Parameters
mutex대상 뮤텍스 포인터

Returns
0: 성공

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