31 prt_assert(callback != NULL,
"malloc failed");
32 callback->src_packet = src_packet;
33 callback->dst_packet = dst_packet;
34 callback->channel = channel;
61 cudaStream_t stream, cudaError_t status,
void *clbck)
71 if (callback->src_packet != NULL) {
72 if (callback->src_packet->location == PRT_LOCATION_HOST) {
79 callback->src_packet, NULL, PRT_DEVICE_PACKET_RELEASE, -1);
82 callback->channel->proxy->transfers, (
void*)transfer);
86 __sync_fetch_and_sub(&callback->channel->proxy->num_callbacks, 1);
113 prt_assert(callback != NULL,
"malloc failed");
114 callback->old_packet = old_packet;
115 callback->src_packet = src_packet;
116 callback->channel = channel;
117 callback->direction = direction;
118 callback->agent = agent;
144 cudaStream_t stream, cudaError_t status,
void *clbck)
152 callback->src_packet,
160 if (callback->old_packet != NULL) {
161 if (callback->old_packet->location == PRT_LOCATION_HOST) {
168 callback->old_packet, NULL, PRT_DEVICE_PACKET_RELEASE, -1);
171 callback->channel->proxy->transfers, (
void*)transfer);
175 __sync_fetch_and_sub(&callback->channel->proxy->num_callbacks, 1);
197 prt_assert(callback != NULL,
"malloc failed");
199 callback->packet = packet;
224 cudaStream_t stream, cudaError_t status,
void *clbck)
232 callback->packet, NULL, PRT_DEVICE_PACKET_RELEASE, -1);
237 __sync_fetch_and_sub(&callback->vdp->vsa->proxy->num_callbacks, 1);