pdcomm_secs1_create
함수
정지 상태의 SECS-I 엔드포인트를 만듭니다.
PdcommStatus pdcomm_secs1_create(const PdcommSecs1Io *io, const PdcommSecs1Options *options, PdcommSecs1Endpoint **out)어느 콜백도 호출하지 않고 모든 입력을 검증한 뒤, 콜백 테이블과 옵션을 복사하고 엔드포인트를 호출한 스레드에 묶습니다. 새 엔드포인트의 세대는 1이며, 시작하고 폴링하기 전까지는 I/O를 하지 않습니다.
매개변수
| 이름 | 설명 |
|---|---|
io | 콜백 테이블입니다. struct_size는 sizeof(PdcommSecs1Io) 이상이어야 하고, context, read, write는 NULL이 아니어야 합니다. |
options | 회선 설정과 한도입니다. 각 필드가 지켜야 할 규칙은 ::PdcommSecs1Options를 참조합니다. |
out | 엔드포인트를 받습니다. 먼저 NULL로 설정되므로 실패하면 항상 NULL입니다. |
반환값
성공하면 #PDCOMM_OK를 반환합니다. 포인터가 NULL이거나, struct_size가 너무 작거나, version 또는 예약 필드가 잘못되었거나, priority를 알 수 없거나, 타이머가 0이거나, 한도가 0이거나 서로 맞지 않으면 #PDCOMM_INVALID_ARGUMENT를 반환합니다. max_events개 엔트리의 이벤트 큐를 예약할 수 없으면 #PDCOMM_ALLOCATION_FAILED를 반환합니다. 프로세스의 엔드포인트 식별자가 소진되면 #PDCOMM_LIMIT_EXCEEDED를 반환합니다. secs-gem 모듈을 허가하는 라이선스가 없으면 #PDCOMM_LICENSE_REQUIRED(16, pdcomm.h에 정의)를 반환합니다(인수를 확인한 뒤 검사합니다). 패닉(panic)을 격리했으면 #PDCOMM_INTERNAL_ERROR를 반환합니다.
참고
- 소유권: 생성한 스레드에서 pdcomm_secs1_destroy()로 엔드포인트를 해제합니다. 엔드포인트는
io->context를 빌려 씁니다. 이 API는 운영체제 핸들을 받지도 닫지도 않습니다.