
#include "vipl_priv.h"Go to the source code of this file.
Functions | |
| VIP_ENTRY_POINT VIP_RETURN | VipCQNotify (VIP_CQ_HANDLE CQHandle, VIP_PVOID Context, void(*Handler)(VIP_PVOID Context, VIP_NIC_HANDLE NicHandle, VIP_VI_HANDLE ViHandle, VIP_BOOLEAN RecvQueue)) |
Definition in file vipcqnotify.c.
|
||||||||||||||||
|
VipCQNotify is used by the VI Consumer to request that a Handler routine be called when a Descriptor completes on a VI Work Queue that is associated with a Completion Queue. VipCQNotify checks the Entry on the head of the Completion queue to see if it indicates that a Descriptor has been marked complete. If there is an entry, the Entry is removed from the Completion Queue and the Handler associated with the Entry is invoked. The ViHandle and RecvQueue are set appropriately to indicate to the VI Consumer which Work Queue contains the completed Descriptor. If there is no valid Completion Queue Entry, VipCQNotify enables interrupts for the given Completion Queue. When a Completion Queue Entry is generated, the handler will be invoked. This registration is only associated with the Completion Queue for a single entry. In order for the Handler to be invoked multiple times, the function must be called multiple times. Multiple handlers can be registered at one time and will be queued in Completion Queue Entry order. Destruction of the Completion Queue will result in cancellation of any pending function calls.
Definition at line 68 of file vipcqnotify.c. References VIP_NOTIFY::context, VIP_NOTIFY::handler, VIP_NIC::lock, VIP_GM::lock, VIP_NOTIFY::next, VIP_GM::notify_lookaside, VIP_ASSERT, vip_cq_notify_thread(), VIP_DEBUG, VIP_DEBUG_LABEL, VIP_ERROR_RESOURCE, VIP_FALSE, VIP_NIC::vip_gm_ptr, VIP_INVALID_CQ_HANDLE, VIP_INVALID_PARAMETER, VIP_MUTEX_LOCK, VIP_MUTEX_UNLOCK, VIP_PROGRESSION, VIP_SEMAPHORE_POST, VIP_SUCCESS, VIP_THREAD_CREATE, and VIP_TRUE. |
1.4.4.