pdcomm_gem_host_report_query
함수
호스트에서 Event Report, Individual Report 또는 Annotated Individual Report 요청을 보냅니다.
PdcommStatus pdcomm_gem_host_report_query(PdcommTcpEndpoint *endpoint, uint32_t kind, uint32_t id, PdcommTcpToken *out_token)ID는 U4로 전송되며, 호스트가 공유하는 max_pending_ids의 엔트리 하나를 사용합니다. pdcomm_tcp.h의 32개 슬롯, T3, 취소, 토큰 규칙이 적용됩니다. 응답은 요청 종류 kind와 결과 유형 #PDCOMM_GEM_EVENT_QUERY_RECEIVED, #PDCOMM_GEM_INDIVIDUAL_QUERY_RECEIVED 또는 #PDCOMM_GEM_ANNOTATED_QUERY_RECEIVED를 가진 #PDCOMM_GEM_RESPONSE로 도착합니다. S6F16은 요청한 CEID를 그대로 돌려줘야 하며, 그렇지 않으면 결과는 #PDCOMM_GEM_INVALID_RESPONSE입니다. S6F20과 S6F22에는 RPTID가 없으므로 결과는 요청한 ID를 보고합니다.
매개변수
| 이름 | 설명 |
|---|---|
endpoint | 호스트 엔드포인트입니다. |
kind | #PDCOMM_GEM_EVENT_QUERY(S6F15), #PDCOMM_GEM_INDIVIDUAL_QUERY(S6F19), #PDCOMM_GEM_ANNOTATED_QUERY(S6F21) 중 하나입니다. |
id | #PDCOMM_GEM_EVENT_QUERY이면 CEID, 그 밖에는 RPTID입니다. |
out_token | 먼저 0으로 초기화되며, 성공하면 트랜잭션 토큰을 받습니다. NULL이 아니어야 합니다. |
반환값
요청을 큐에 넣었으면 #PDCOMM_OK를 반환합니다. endpoint 또는 out_token이 NULL이거나 kind를 알 수 없으면 #PDCOMM_INVALID_ARGUMENT를 반환합니다. max_pending_ids 또는 호스트 항목 한도를 넘게 되면 #PDCOMM_LIMIT_EXCEEDED를 반환합니다. 엔드포인트가 호스트가 아니거나 Communicating 상태가 아니면 #PDCOMM_INVALID_STATE를 반환합니다. 준비된 TCP 이벤트(staged event)가 있거나 대기 슬롯 또는 송신 큐가 가득 차면 #PDCOMM_BACKPRESSURE를 반환합니다. 그 밖에 #PDCOMM_ALLOCATION_FAILED, #PDCOMM_IO_ERROR, #PDCOMM_POISONED를 반환합니다.
참고
- 송신에 성공했다고 응답을 받은 것은 아닙니다.