//----------------------------------------------------------------------------- void dcl_message< msgCreateCommandQueue >::parse_request( const void* payload_ptr ) { const msgCreateCommandQueue_request* request_ptr = reinterpret_cast< const msgCreateCommandQueue_request* >( payload_ptr ); device_id_ = network_to_host( request_ptr->device_id_ ); context_id_ = network_to_host( request_ptr->context_id_ ); properties_ = network_to_host( request_ptr->properties_ ); }
//----------------------------------------------------------------------------- void dcl_message< msgEnqueueCopyBuffer >::parse_request( const void* payload_ptr ) { const void* enqueue_ptr = enqueue_message::parse_enqueue_request( payload_ptr ); const msgEnqueueCopyBuffer_request* request_ptr = reinterpret_cast< const msgEnqueueCopyBuffer_request* >( enqueue_ptr ); src_remote_id_ = network_to_host( request_ptr->src_id_ ); dst_remote_id_ = network_to_host( request_ptr->dst_id_ ); size_ = network_to_host( request_ptr->size_ ); src_offset_ = network_to_host( request_ptr->src_offset_ ); dst_offset_ = network_to_host( request_ptr->dst_offset_ ); }
//----------------------------------------------------------------------------- void dcl_message< msgEnqueueWriteBuffer >::parse_request( const void* payload_ptr ) { const void* enqueue_ptr = enqueue_message::parse_enqueue_request( payload_ptr ); const msgEnqueueWriteBuffer_request* request_ptr = reinterpret_cast< const msgEnqueueWriteBuffer_request* >( enqueue_ptr ); remote_id_ = network_to_host( request_ptr->id_ ); buffer_len_ = network_to_host( request_ptr->buffer_len_ ); offset_ = network_to_host( request_ptr->offset_ ); // std::cerr << "write remote message id: " << remote_id_ << std::endl; buffer_ptr_ = request_ptr->buffer_; }
//----------------------------------------------------------------------------- void dcl_message< msgCreateBuffer >::parse_request( const void* payload_ptr ) { const msgCreateBuffer_request* request_ptr = reinterpret_cast< const msgCreateBuffer_request* >( payload_ptr ); buffer_ptr_ = NULL; context_id_ = network_to_host( request_ptr->context_id_ ); buffer_len_ = network_to_host( request_ptr->buffer_len_ ); flags_ = static_cast<cl_mem_flags>( network_to_host( request_ptr->flags_ ) ); if( network_to_host( request_ptr->message_buffer_ ) != 0 ) { buffer_ptr_ = reinterpret_cast<const uint8_t*>( request_ptr->buffer_ ); } }
//----------------------------------------------------------------------------- void dcl_message< msgCreateCommandQueue >::parse_response( const void* payload_ptr ) { const remote_id_t* response_ptr = reinterpret_cast< const remote_id_t* >( payload_ptr ); remote_id_ = network_to_host( *response_ptr ); }
//----------------------------------------------------------------------------- void dcl_message< msgEnqueueReadBuffer >::parse_request( const void* payload_ptr ) { const void* enqueue_ptr = enqueue_message::parse_enqueue_request( payload_ptr ); const msgEnqueueReadBuffer_request* request_ptr = reinterpret_cast< const msgEnqueueReadBuffer_request* >( enqueue_ptr ); remote_id_ = network_to_host( request_ptr->id_ ); size_ = network_to_host( request_ptr->size_ ); offset_ = network_to_host( request_ptr->offset_ ); // std::cerr << "read remote message id: " << remote_id_ << std::endl; set_response_size( size_ + sizeof(msgEnqueueReadBuffer_response) - 1 ); }
//----------------------------------------------------------------------------- void dcl_message< msgCreateBuffer >::parse_response( const void* payload_ptr ) { const remote_id_t* response_ptr = reinterpret_cast< const remote_id_t* >( payload_ptr ); remote_id_ = network_to_host( *response_ptr ); //std::cerr << "created message id: " << remote_id_ << std::endl; }
//----------------------------------------------------------------------------- void dcl_message< msgCreateImage2D >::parse_request( const void* payload_ptr ) { const msgCreateImage2D_request* request_ptr = reinterpret_cast< const msgCreateImage2D_request* >( payload_ptr ); context_id_ = network_to_host( request_ptr->context_id_ ); flags_ = static_cast<cl_mem_flags>( request_ptr->flags_ ); network_to_channel_order( request_ptr->channel_order ); network_to_channel_type( request_ptr->channel_type ); width_ = network_to_host( request_ptr->width_ ); height_ = network_to_host( request_ptr->height_ ); row_pitch_ = network_to_host( request_ptr->row_pitch_ ); buffer_len_ = network_to_host( request_ptr->buffer_len_ ); buffer_ptr_ = NULL; if( request_ptr->message_buffer_ != 0 ) { buffer_ptr_ = reinterpret_cast<const uint8_t*>( request_ptr->buffer_ ); } }
//----------------------------------------------------------------------------- void dcl_message< msgEnqueueReadBuffer >::parse_response( const void* payload_ptr ) { const msgEnqueueReadBuffer_response* response_ptr = reinterpret_cast<const msgEnqueueReadBuffer_response*>( payload_ptr ); size_ = network_to_host( response_ptr->size_ ); if( data_ptr_ != NULL ) memcpy( data_ptr_, response_ptr->buffer_, size_ ); else buffer_.assign( response_ptr->buffer_, response_ptr->buffer_ + size_ ); }
//----------------------------------------------------------------------------- void dcl_message< msgEnqueueWriteImage >::parse_request( const void* payload_ptr ) { const void* enqueue_ptr = enqueue_message::parse_enqueue_request( payload_ptr ); const msgEnqueueWriteImage_request* request_ptr = reinterpret_cast< const msgEnqueueWriteImage_request* >( enqueue_ptr ); remote_id_ = network_to_host( request_ptr->remote_id_ ); row_pitch_ = network_to_host( request_ptr->row_pitch_ ); slice_pitch_ = network_to_host( request_ptr->slice_pitch_ ); origin_[ 0 ] = network_to_host( request_ptr->origin_[ 0 ] ); origin_[ 1 ] = network_to_host( request_ptr->origin_[ 1 ] ); origin_[ 2 ] = network_to_host( request_ptr->origin_[ 2 ] ); region_[ 0 ] = network_to_host( request_ptr->region_[ 0 ] ); region_[ 1 ] = network_to_host( request_ptr->region_[ 1 ] ); region_[ 2 ] = network_to_host( request_ptr->region_[ 2 ] ); buffer_len_ = network_to_host( request_ptr->buffer_len_ ); buffer_ptr_ = request_ptr->buffer_; }
// read an IPbus transaction from a stream ipbus_transaction_t ipbus_decode_transaction(const CircularBuffer *buf, int swapbytes) { ipbus_transaction_t output = ipbus_decode_transaction_header(buf, swapbytes); size_t words_read = 1; output.data.words = (uint32_t*)malloc(output.data.size * sizeof(uint32_t)); for (unsigned int i = 0; i < output.data.size; ++i) { uint32_t dataword = network_to_host(cbuffer_value_at(buf, words_read)); words_read += 1; if (swapbytes) { dataword = __bswap_32(dataword); } output.data.words[i] = dataword; } return output; }
//----------------------------------------------------------------------------- void dcl_message< msgFinish >::parse_request( const void* payload_ptr ) { const remote_id_t* request_ptr = reinterpret_cast<const remote_id_t*>( payload_ptr ); remote_id_ = network_to_host( *request_ptr ); }