static DirectResult IDirectFBDataBuffer_Requestor_AddRef( IDirectFBDataBuffer *thiz ) { DFBResult ret; VoodooResponseMessage *response; DIRECT_INTERFACE_GET_DATA(IDirectFBDataBuffer_Requestor) ret = voodoo_manager_request( data->manager, data->instance, IDIRECTFBDATABUFFER_METHOD_ID_AddRef, VREQ_RESPOND, &response, VMBT_NONE ); if (ret) return ret; ret = response->result; voodoo_manager_finish_request( data->manager, response ); if (ret == DFB_OK) data->base.ref++; return ret; }
int main( int argc, char *argv[] ) { DirectClock clock; int counter = 0; int res; (void)res; /* Initialize libdirect. */ direct_initialize(); // direct_config->log_level = DIRECT_LOG_ALL; direct_log_domain_config_level( "Voodoo/Input", DIRECT_LOG_DEBUG_9 ); direct_log_domain_config_level( "Voodoo/Output", DIRECT_LOG_DEBUG_9 ); direct_log_domain_config_level( "Voodoo/Dispatch", DIRECT_LOG_DEBUG_9 ); direct_log_domain_config_level( "Voodoo/Manager", DIRECT_LOG_DEBUG_9 ); int pipe_1[2]; int pipe_2[2]; // int socket[2]; int fds_server[2]; int fds_client[2]; VoodooLink voodoo_link_server; VoodooLink voodoo_link_client; VoodooManager *manager_server; VoodooManager *manager_client; VoodooInstanceID instance; // socketpair( PF_LOCAL, SOCK_STREAM, 0, fd ); res = pipe( pipe_1 ); res = pipe( pipe_2 ); fds_server[0] = pipe_1[0]; fds_server[1] = pipe_2[1]; fds_client[0] = pipe_2[0]; fds_client[1] = pipe_1[1]; voodoo_link_init_fd( &voodoo_link_server, fds_server ); voodoo_manager_create( &voodoo_link_server, NULL, NULL, &manager_server ); voodoo_manager_register_local( manager_server, VOODOO_INSTANCE_NONE, NULL, NULL, Dispatch, &instance ); voodoo_link_init_fd( &voodoo_link_client, fds_client ); voodoo_manager_create( &voodoo_link_client, NULL, NULL, &manager_client ); direct_clock_start( &clock ); #if !BENCH_SYNC do { voodoo_manager_request( manager_client, instance, VOODOOTEST_METHOD_ID_Push, VREQ_NONE, NULL, VMBT_INT, counter++, VMBT_NONE ); } while (counter < NUM_ITEMS); #else do { VoodooResponseMessage *response; voodoo_manager_request( manager_client, instance, VOODOOTEST_METHOD_ID_Sync, VREQ_RESPOND, &response, VMBT_NONE ); voodoo_manager_finish_request( manager_client, response ); counter++; } while (counter < NUM_ITEMS); #endif { VoodooResponseMessage *response; voodoo_manager_request( manager_client, instance, VOODOOTEST_METHOD_ID_Sync, VREQ_RESPOND, &response, VMBT_NONE ); voodoo_manager_finish_request( manager_client, response ); } direct_clock_stop( &clock ); D_INFO( "Voodoo/Test: Stopped after %lld.%03lld seconds... (%lld items/sec)\n", DIRECT_CLOCK_DIFF_SEC_MS( &clock ), NUM_ITEMS * 1000000ULL / direct_clock_diff( &clock ) ); /* Shutdown libdirect. */ direct_shutdown(); return 0; }
int main( int argc, char *argv[] ) { DirectClock clock; int counter = 0; dfb_config_init( &argc, &argv ); /* Initialize libdirect. */ direct_initialize(); VoodooLink link; VoodooManager *manager; const char *hostname = argv[1] ?: "127.0.0.1"; voodoo_link_init_connect( &link, hostname, 23239, false ); voodoo_manager_create( &link, NULL, NULL, &manager ); direct_clock_start( &clock ); #if !BENCH_SYNC do { voodoo_manager_request( manager, 1, VOODOOTEST_METHOD_ID_Push, VREQ_QUEUE, NULL, VMBT_INT, counter++, VMBT_NONE ); } while (counter < NUM_ITEMS); #else do { VoodooResponseMessage *response; voodoo_manager_request( manager, 1, VOODOOTEST_METHOD_ID_Sync, VREQ_RESPOND, &response, VMBT_NONE ); voodoo_manager_finish_request( manager, response ); counter++; } while (counter < NUM_ITEMS); #endif { VoodooResponseMessage *response; voodoo_manager_request( manager, 1, VOODOOTEST_METHOD_ID_Sync, VREQ_RESPOND, &response, VMBT_NONE ); voodoo_manager_finish_request( manager, response ); } direct_clock_stop( &clock ); D_INFO( "Voodoo/Test: Stopped after %lld.%03lld seconds... (%lld items/sec)\n", DIRECT_CLOCK_DIFF_SEC_MS( &clock ), NUM_ITEMS * 1000000LL / direct_clock_diff( &clock ) ); /* Shutdown libdirect. */ direct_shutdown(); return 0; }