ubik semaphore API
More...
#include <ubinos_config.h>
#include <ubinos/type.h>
#include "task.h"
Go to the source code of this file.
ubik semaphore API
ubik 세마포어 API를 정의합니다.
◆ SEM_OPT__IGNOREOVERFLOW
#define SEM_OPT__IGNOREOVERFLOW 0x80 |
세마포어 선택 사항: 세마포어 값이 최대값을 넘어서는 것을 오류로 간주하지 않음 (최대값 초과 오류를 무시하는 선택 사항)
◆ _sem_tip_t
◆ sem_pt
◆ sem_clear()
대상 세마포어의 값을 0으로 만드는 함수
- Parameters
-
- Returns
- 0: 성공
-1: 오류
-n: n-1 번째 매개변수가 잘못되었음
◆ sem_create()
int sem_create |
( |
sem_pt * |
sem_p | ) |
|
◆ sem_create_ext()
int sem_create_ext |
( |
sem_pt * |
sem_p, |
|
|
unsigned int |
initcount, |
|
|
unsigned int |
maxcount, |
|
|
unsigned int |
option |
|
) |
| |
세마포어를 생성하는 함수 확장형
- Parameters
-
sem_p | 생성한 세마포어의 주소를 저장할 포인터의 주소
|
initcount | 초기값
|
maxcount | 최대값
|
option | 선택 사항 (SEM_OPT__...)
0: 어느 것도 선택하지 않음
|
- Returns
- 0: 성공
-1: 오류
-n: n-1 번째 매개변수가 잘못되었음
◆ sem_delete()
int sem_delete |
( |
sem_pt * |
sem_p | ) |
|
대상 세마포어를 제거하는 함수
- Parameters
-
sem_p | 제거할 대상 세마포어의 주소가 저장된 포인터의 주소
제거에 성공하면 *sem_p는 NULL이 됨
|
- Returns
- 0: 성공
-1: 오류
-n: n-1 번째 매개변수가 잘못되었음
- Examples
- intrtest00.c, semtest00.c, semtest01.c, semtest02.c, semtest03.c, semtest04.c, stimertest00.c, stimertest01.c, stimertest02.c, tasktest07.c, and tasktest09.c.
◆ sem_getcount()
int sem_getcount |
( |
sem_pt |
sem, |
|
|
unsigned int * |
count_p |
|
) |
| |
대상 세마포어의 값을 돌려주는 함수
- Parameters
-
sem | 대상 세마포어 포인터
|
count_p | 세마포어의 값을 저장할 변수의 주소
|
- Returns
- 0: 성공
-1: 오류
-n: n-1 번째 매개변수가 잘못되었음
◆ sem_give()
◆ sem_setsender()
대상 세마포어에 V 명령을 수행하는(세마포어를 기다리는 최상위 우선순위 태스크의 우선순위를 상속받을) 태스크를 설정하는 함수
- Parameters
-
sem | 대상 세마포어 포인터
|
task | 대상 태스크 포인터
NULL: 등록 해제
|
- Returns
- 0: 성공
-1: 오류
-n: n-1 번째 매개변수가 잘못되었음
- Examples
- semtest03.c.
◆ sem_take()
◆ sem_take_timed()
int sem_take_timed |
( |
sem_pt |
sem, |
|
|
unsigned int |
tick |
|
) |
| |
제한 시간을 두고 대상 세마포어에 P 명령을 수행하는 함수
- Parameters
-
sem | 대상 세마포어 포인터
|
tick | 제한 시간 (시스템 틱tick 수)
|
- Returns
- 0: 성공
-1: 오류
-n: n-1 번째 매개변수가 잘못되었음
UBIK_ERR__TIMEOUT : 제한 시간 초과
UBIK_ERR__DEADLOCK : 데드락 발생 가능성이 있음
UBIK_ERR__TERMINATED : 기다리던 객체가 제거되었음
- Examples
- semtest01.c, stimertest01.c, stimertest02.c, and tasktest09.c.
◆ sem_take_timedms()
int sem_take_timedms |
( |
sem_pt |
sem, |
|
|
unsigned int |
timems |
|
) |
| |
제한 시간을 두고 대상 세마포어에 P 명령을 수행하는 함수 (천분의 일초 단위)
- Parameters
-
sem | 대상 세마포어 포인터
|
timems | 제한 시간 (천분의 일초)
|
- Returns
- 0: 성공
-1: 오류
-n: n-1 번째 매개변수가 잘못되었음
UBIK_ERR__TIMEOUT : 제한 시간 초과
UBIK_ERR__DEADLOCK : 데드락 발생 가능성이 있음
UBIK_ERR__TERMINATED : 기다리던 객체가 제거되었음
◆ semb_create()
int semb_create |
( |
sem_pt * |
sem_p | ) |
|
이진binary 세마포어를 생성하는 함수
세마포어의 초기값은 0이 되고, 최대값은 1이 되며, 최대값 초과 오류를 무시하는 선택 사항(SEM_OPT__IGNOREOVERFLOW)이 선택 됨
- Parameters
-
sem_p | 생성한 세마포어의 주소를 저장할 포인터의 주소
|
- Returns
- 0: 성공
-1: 오류
-n: n-1 번째 매개변수가 잘못되었음
- Examples
- stimertest00.c, stimertest01.c, and stimertest02.c.