annotate SeedVP.c @ 0:efca8e7ec576

initial add -- working version
author Sean Halle <seanhalle@yahoo.com>
date Tue, 24 Sep 2013 08:08:18 -0700
parents
children
rev   line source
seanhalle@0 1 /*
seanhalle@0 2 * Copyright 2009 OpenSourceResearchInstitute.org
seanhalle@0 3 * Licensed under GNU General Public License version 2
seanhalle@0 4 *
seanhalle@0 5 * Author: seanhalle@yahoo.com
seanhalle@0 6 *
seanhalle@0 7 */
seanhalle@0 8
seanhalle@0 9
seanhalle@0 10 #include <math.h>
seanhalle@0 11 #include <string.h>
seanhalle@0 12 #include "DKU__Test_App.h"
seanhalle@0 13
seanhalle@0 14 /*Bare smoke test of DKU wrapper library functions.
seanhalle@0 15 * Create one DKU instance, with a dummy kernel
seanhalle@0 16 * Bare bones divider and undivider
seanhalle@0 17 * simple root piece maker
seanhalle@0 18 * dummy serial kernel
seanhalle@0 19 */
seanhalle@0 20
seanhalle@0 21 //====================================================================
seanhalle@0 22 #define NO_INPUT NULL
seanhalle@0 23 /*Just to get proto-runtime built and run, to test it..
seanhalle@0 24 */
seanhalle@0 25 void test_app_seed_Fn( void *_params, SlaveVP *seedVP )
seanhalle@0 26 { DKUInstance *dkuInstance;
seanhalle@0 27 DKUPiece *rootPiece;
seanhalle@0 28 int32 size = 1000;
seanhalle@0 29 int32 *data = (int32 *) PR__malloc (size * sizeof(int32)) ;
seanhalle@0 30
seanhalle@0 31 DEBUG__printf(dbgAppFlow, "In seed Fn")
seanhalle@0 32
seanhalle@0 33 SeedParams *seedParams = (SeedParams *)_params; //used to comm with main()
seanhalle@0 34
seanhalle@0 35 dkuInstance = PRServ__DKU_make_empty_DKU_instance( seedVP );
seanhalle@0 36 PRServ__DKU_set_root_piece_maker( dkuInstance, &rootPieceMakerFn, seedVP );
seanhalle@0 37 PRServ__DKU_set_kernel( dkuInstance, &kernelFn, seedVP );
seanhalle@0 38 PRServ__DKU_set_serial_kernel( dkuInstance, &serialKernelFn, seedVP );
seanhalle@0 39 PRServ__DKU_set_divider( dkuInstance, &dividerFn, seedVP );
seanhalle@0 40 PRServ__DKU_set_undivider( dkuInstance, &undividerFn, seedVP );
seanhalle@0 41
seanhalle@0 42 rootPiece =
seanhalle@0 43 make_root_dku_piece_for_test_inst( data, size, dkuInstance );
seanhalle@0 44 // rootPiece = PRServ__DKU_make_root_piece( dkuInstance, data, seedVP );
seanhalle@0 45
seanhalle@0 46 PRServ__DKU_perform_work_on( rootPiece, seedVP );
seanhalle@0 47
seanhalle@0 48 PRServ__DKU_wait_for_result_to_be_complete( rootPiece, seedVP );
seanhalle@0 49
seanhalle@0 50 seedParams->data = data; //sends results back to main()
seanhalle@0 51
seanhalle@0 52 //Tells PR to end the process, which it will do even
seanhalle@0 53 // if work is active, or suspended work entities are still live, or the
seanhalle@0 54 // process has input ports that could trigger future work.
seanhalle@0 55 PR__end_process_from_inside( seedVP );
seanhalle@0 56
seanhalle@0 57 //This ends the last live entity capable of work, in a process
seanhalle@0 58 // that has no external input ports.. hence, no activity can take place
seanhalle@0 59 // past that point.. PR detects that, and then automatically ends the
seanhalle@0 60 // process.
seanhalle@0 61 PR__end_seedVP( seedVP );
seanhalle@0 62 }
seanhalle@0 63