pdcomm_gem_spool_request_configure
함수
S2F43 Reset Spooling Streams and Functions 요청을 보냅니다(호스트).
PdcommStatus pdcomm_gem_spool_request_configure(PdcommTcpEndpoint *endpoint, const PdcommGemSpoolSelection *selections, size_t count, PdcommTcpToken *token)GEM이 Communicating 상태여야 하며 pdcomm_gem_configure_spool_host()로 설정한 한도가 필요합니다. 요청은 32개의 기본(native) 대기 슬롯을 공유하며, 일반 TCP 토큰, 취소, T3 동작을 똑같이 따릅니다. 스트림 개수와 나열된 모든 펑션 수를 max_pending_items와 호스트가 공유하는 max_pending_ids 예산에서 차감합니다. 빈 선택(NULL과 count 0)은 장비에 어떤 스트림도 스풀하지 말라고 요청합니다. 성공은 요청이 큐에 들어갔다는 뜻이지 장비가 수락했다는 뜻이 아닙니다. S2F44는 #PDCOMM_GEM_SPOOL_CONFIG_ACK 결과로 도착합니다.
매개변수
| 이름 | 설명 |
|---|---|
endpoint | 스풀 한도와 함께 GEM 호스트로 구성되고 Communicating 상태인 엔드포인트입니다. |
selections | count개의 스트림 선택 배열입니다. count가 0이면 NULL일 수 있습니다. |
count | 선택 개수입니다. 최대 max_streams입니다. |
token | 요청 토큰을 받습니다. 먼저 0으로 초기화되므로 실패하면 항상 0입니다. NULL이 아니어야 합니다. |
반환값
요청을 큐에 넣었으면 #PDCOMM_OK를 반환합니다. token 또는 endpoint가 NULL이거나, 길이가 0이 아닌데 배열이 NULL이거나, 스트림 또는 펑션이 중복되면 #PDCOMM_INVALID_ARGUMENT를 반환합니다. 스풀 호스트 한도가 구성되지 않았거나 GEM이 Communicating 상태가 아니면 #PDCOMM_INVALID_STATE를 반환합니다. 선택 한도나 대기 ID 한도를 넘으면 #PDCOMM_LIMIT_EXCEEDED를 반환합니다. 준비된 TCP 이벤트(staged event)가 대기 중이거나, 대기 슬롯 32개가 모두 사용 중이거나, TCP 송신 큐가 가득 차면 #PDCOMM_BACKPRESSURE를 반환합니다. 그 밖에 #PDCOMM_ALLOCATION_FAILED, TCP 상태 코드, #PDCOMM_POISONED를 반환합니다.