| 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, ÷rFn, 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
|