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

ubik semaphore API More...

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

Go to the source code of this file.

Classes

struct  __sem_tip_t
 

Macros

#define SEM_OPT__IGNOREOVERFLOW   0x80
 

Typedefs

typedef struct __sem_tip_t _sem_tip_t
 
typedef _sem_tip_tsem_pt
 

Functions

int sem_create (sem_pt *sem_p)
 
int semb_create (sem_pt *sem_p)
 
int sem_create_ext (sem_pt *sem_p, unsigned int initcount, unsigned int maxcount, unsigned int option)
 
int sem_delete (sem_pt *sem_p)
 
int sem_take (sem_pt sem)
 
int sem_take_timed (sem_pt sem, unsigned int tick)
 
int sem_take_timedms (sem_pt sem, unsigned int timems)
 
int sem_give (sem_pt sem)
 
int sem_clear (sem_pt sem)
 
int sem_setsender (sem_pt sem, task_pt task)
 
int sem_getcount (sem_pt sem, unsigned int *count_p)
 

Detailed Description

ubik semaphore API

ubik 세마포어 API를 정의합니다.

Macro Definition Documentation

◆ SEM_OPT__IGNOREOVERFLOW

#define SEM_OPT__IGNOREOVERFLOW   0x80

세마포어 선택 사항: 세마포어 값이 최대값을 넘어서는 것을 오류로 간주하지 않음 (최대값 초과 오류를 무시하는 선택 사항)

Typedef Documentation

◆ _sem_tip_t

typedef struct __sem_tip_t _sem_tip_t

API용 세마포어 형 정의

◆ sem_pt

typedef _sem_tip_t* sem_pt

API용 세마포어 포인터 형 정의

Function Documentation

◆ sem_clear()

int sem_clear ( sem_pt  sem)

대상 세마포어의 값을 0으로 만드는 함수

Parameters
sem대상 세마포어 포인터

Returns
0: 성공

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

◆ sem_create()

int sem_create ( sem_pt sem_p)

카운팅counting 세마포어를 생성하는 함수

세마포어의 초기값은 0이 되고, 최대값은 UINT_MAX가 됨

Parameters
sem_p생성한 세마포어의 주소를 저장할 포인터의 주소

Returns
0: 성공

-1: 오류
-n: n-1 번째 매개변수가 잘못되었음
Examples
intrtest00.c, semtest00.c, semtest01.c, semtest02.c, semtest03.c, semtest04.c, tasktest07.c, and tasktest09.c.

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

int sem_give ( sem_pt  sem)

대상 세마포어에 V 명령을 수행하는 함수

Parameters
sem대상 세마포어 포인터

Returns
0: 성공

-1: 오류
-n: n-1 번째 매개변수가 잘못되었음
UBIK_ERR__OVERFLOWED: 최대값 초과
Examples
intrtest00.c, semtest00.c, semtest01.c, semtest02.c, semtest03.c, tasktest07.c, and tasktest09.c.

◆ sem_setsender()

int sem_setsender ( sem_pt  sem,
task_pt  task 
)

대상 세마포어에 V 명령을 수행하는(세마포어를 기다리는 최상위 우선순위 태스크의 우선순위를 상속받을) 태스크를 설정하는 함수

Parameters
sem대상 세마포어 포인터

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

Returns
0: 성공

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

◆ sem_take()

int sem_take ( sem_pt  sem)

대상 세마포어에 P 명령을 수행하는 함수

Parameters
sem대상 세마포어 포인터

Returns
0: 성공

-1: 오류
-n: n-1 번째 매개변수가 잘못되었음
UBIK_ERR__DEADLOCK : 데드락 발생 가능성이 있음
UBIK_ERR__TERMINATED : 기다리던 객체가 제거되었음
Examples
intrtest00.c, semtest00.c, semtest01.c, semtest02.c, semtest03.c, stimertest00.c, stimertest01.c, stimertest02.c, and tasktest09.c.

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