Requisitos de postagem de solicitação de trabalho do NDKPI
Regras de postagem de solicitação de trabalho para o consumidor
O consumidor do NDK postará os seguintes tipos de solicitações de trabalho na fila do iniciador:
- NdkBind (NDK_FN_BIND)
- NdkFastRegister (NDK_FN_FAST_REGISTER)
- NdkInvalidate (NDK_FN_INVALIDATE)
- NdkRead (NDK_FN_READ)
- NdkSend (NDK_FN_SEND)
- NdkSendAndInvalidate (NDK_FN_SEND_AND_INVALIDATE)
- NdkWrite (NDK_FN_WRITE)
O consumidor postará solicitações NdkReceive (NDK_FN_RECEIVE) na fila de recebimento.
O consumidor postará todas essas solicitações na mesma fila individual em um NDK_QP ou NDK_SRQ de forma serializada. Em outras palavras, o consumidor nunca terá duas chamadas simultâneas para qualquer função de solicitação de trabalho na mesma fila individual pertencente a um NDK_QP ou NDK_SRQ.
Isso significa, por exemplo, que chamadas simultâneas de NdkReceive não serão emitidas, chamadas simultâneas de NdkSend e NdkWrite não serão emitidas, mas chamadas simultâneas de NdkReceive e NdkWrite podem ser emitidas no mesmo NDK_QP.
Regras de postagem de solicitação de trabalho para o provedor
O provedor não deve ter nenhum bloqueio redundante dentro das funções de solicitação de trabalho acima, pois eles têm a garantia de serem serializados pelo consumidor.
O provedor deve ser capaz de lidar com chamadas NdkFlush (NDK_FN_FLUSH) que podem ser chamadas simultaneamente com uma chamada de solicitação de trabalho no mesmo NDK_QP.
O provedor deve ser capaz de lidar com uma chamada NdkCloseConnector (no objeto sucessor NDK_CONNECTOR para o NDK_QP) que pode ser chamada simultaneamente com uma chamada de solicitação de trabalho no mesmo NDK_QP.