seanhalle@0: /* seanhalle@0: * Copyright 2009 OpenSourceResearchInstitute.org seanhalle@0: * Licensed under GNU General Public License version 2 seanhalle@0: * seanhalle@0: * Author: seanhalle@yahoo.com seanhalle@0: * seanhalle@0: */ seanhalle@0: seanhalle@0: seanhalle@0: #include seanhalle@0: #include seanhalle@0: #include "DKU__Test_App.h" seanhalle@0: seanhalle@0: /*Bare smoke test of DKU wrapper library functions. seanhalle@0: * Create one DKU instance, with a dummy kernel seanhalle@0: * Bare bones divider and undivider seanhalle@0: * simple root piece maker seanhalle@0: * dummy serial kernel seanhalle@0: */ seanhalle@0: seanhalle@0: //==================================================================== seanhalle@0: #define NO_INPUT NULL seanhalle@0: /*Just to get proto-runtime built and run, to test it.. seanhalle@0: */ seanhalle@0: void test_app_seed_Fn( void *_params, SlaveVP *seedVP ) seanhalle@0: { DKUInstance *dkuInstance; seanhalle@0: DKUPiece *rootPiece; seanhalle@0: int32 size = 1000; seanhalle@0: int32 *data = (int32 *) PR__malloc (size * sizeof(int32)) ; seanhalle@0: seanhalle@0: DEBUG__printf(dbgAppFlow, "In seed Fn") seanhalle@0: seanhalle@0: SeedParams *seedParams = (SeedParams *)_params; //used to comm with main() seanhalle@0: seanhalle@0: dkuInstance = PRServ__DKU_make_empty_DKU_instance( seedVP ); seanhalle@0: PRServ__DKU_set_root_piece_maker( dkuInstance, &rootPieceMakerFn, seedVP ); seanhalle@0: PRServ__DKU_set_kernel( dkuInstance, &kernelFn, seedVP ); seanhalle@0: PRServ__DKU_set_serial_kernel( dkuInstance, &serialKernelFn, seedVP ); seanhalle@0: PRServ__DKU_set_divider( dkuInstance, ÷rFn, seedVP ); seanhalle@0: PRServ__DKU_set_undivider( dkuInstance, &undividerFn, seedVP ); seanhalle@0: seanhalle@0: rootPiece = seanhalle@0: make_root_dku_piece_for_test_inst( data, size, dkuInstance ); seanhalle@0: // rootPiece = PRServ__DKU_make_root_piece( dkuInstance, data, seedVP ); seanhalle@0: seanhalle@0: PRServ__DKU_perform_work_on( rootPiece, seedVP ); seanhalle@0: seanhalle@0: PRServ__DKU_wait_for_result_to_be_complete( rootPiece, seedVP ); seanhalle@0: seanhalle@0: seedParams->data = data; //sends results back to main() seanhalle@0: seanhalle@0: //Tells PR to end the process, which it will do even seanhalle@0: // if work is active, or suspended work entities are still live, or the seanhalle@0: // process has input ports that could trigger future work. seanhalle@0: PR__end_process_from_inside( seedVP ); seanhalle@0: seanhalle@0: //This ends the last live entity capable of work, in a process seanhalle@0: // that has no external input ports.. hence, no activity can take place seanhalle@0: // past that point.. PR detects that, and then automatically ends the seanhalle@0: // process. seanhalle@0: PR__end_seedVP( seedVP ); seanhalle@0: } seanhalle@0: