| rev |
line source |
|
Me@6
|
1 /*
|
|
Me@6
|
2 * Copyright 2009 OpenSourceStewardshipFoundation.org
|
|
Me@6
|
3 * Licensed under GNU General Public License version 2
|
|
Me@6
|
4 *
|
|
Me@6
|
5 * Author: seanhalle@yahoo.com
|
|
Me@6
|
6 *
|
|
Me@6
|
7 */
|
|
Me@6
|
8
|
|
Me@6
|
9 #ifndef _SSR_H
|
|
Me@6
|
10 #define _SSR_H
|
|
Me@6
|
11
|
|
Me@6
|
12 #include "VMS/Queue_impl/PrivateQueue.h"
|
|
Me@6
|
13 #include "VMS/Hash_impl/PrivateHash.h"
|
|
Me@6
|
14 #include "VMS/VMS.h"
|
|
Me@6
|
15
|
|
Me@6
|
16 /*This header defines everything specific to the SSR semantic plug-in
|
|
Me@6
|
17 */
|
|
Me@6
|
18 typedef struct _SSRSemReq SSRSemReq;
|
|
Me@6
|
19
|
|
Me@6
|
20
|
|
Me@6
|
21 /*Semantic layer-specific data sent inside a request from lib called in app
|
|
Me@6
|
22 * to request handler called in MasterLoop
|
|
Me@6
|
23 */
|
|
Me@6
|
24 enum SSRReqType
|
|
Me@6
|
25 {
|
|
Me@6
|
26 send_type = 1,
|
|
Me@6
|
27 send_from_to,
|
|
Me@6
|
28 receive_any, //order and grouping matter -- send before receive
|
|
Me@6
|
29 receive_type, // and receive_any first of the receives -- Handlers
|
|
Me@6
|
30 receive_from_to,// rely upon this ordering of enum
|
|
Me@6
|
31 transfer_to,
|
|
Me@6
|
32 transfer_out
|
|
Me@6
|
33 };
|
|
Me@6
|
34
|
|
Me@6
|
35 struct _SSRSemReq
|
|
Me@6
|
36 { enum SSRReqType reqType;
|
|
Me@6
|
37 VirtProcr *sendPr;
|
|
Me@6
|
38 VirtProcr *receivePr;
|
|
Me@6
|
39 int32 msgType;
|
|
Me@6
|
40 void *msg;
|
|
Me@6
|
41 SSRSemReq *nextReqInHashEntry;
|
|
Me@6
|
42 }
|
|
Me@6
|
43 /* SSRSemReq */;
|
|
Me@6
|
44
|
|
Me@6
|
45 typedef struct
|
|
Me@6
|
46 {
|
|
Me@6
|
47 PrivQueueStruc **readyVPQs;
|
|
Me@14
|
48 HashTable *commHashTbl;
|
|
Me@14
|
49 int32 numVirtPr;
|
|
Me@14
|
50 int32 nextCoreToGetNewPr;
|
|
Me@14
|
51 int32 primitiveStartTime;
|
|
Me@6
|
52 }
|
|
Me@6
|
53 SSRSemEnv;
|
|
Me@6
|
54
|
|
Me@6
|
55
|
|
Me@6
|
56 //===========================================================================
|
|
Me@6
|
57
|
|
Me@6
|
58 void
|
|
Me@6
|
59 SSR__create_seed_procr_and_do_work( VirtProcrFnPtr fn, void *initData );
|
|
Me@6
|
60
|
|
Me@14
|
61 int32
|
|
Me@14
|
62 SSR__giveMinWorkUnitCycles( float32 percentOverhead );
|
|
Me@14
|
63
|
|
Me@14
|
64 void inline
|
|
Me@14
|
65 SSR__start_primitive();
|
|
Me@14
|
66
|
|
Me@14
|
67 int32 inline
|
|
Me@14
|
68 SSR__end_primitive_and_give_cycles();
|
|
Me@14
|
69
|
|
Me@14
|
70
|
|
Me@6
|
71 //=======================
|
|
Me@6
|
72
|
|
Me@6
|
73 void
|
|
Me@6
|
74 SSR__init();
|
|
Me@6
|
75
|
|
Me@6
|
76 void
|
|
Me@6
|
77 SSR__cleanup_after_shutdown();
|
|
Me@6
|
78
|
|
Me@6
|
79 //=======================
|
|
Me@6
|
80
|
|
Me@6
|
81 inline VirtProcr *
|
|
Me@6
|
82 SSR__create_procr_with( VirtProcrFnPtr fnPtr, void *initData,
|
|
Me@6
|
83 VirtProcr *creatingPr );
|
|
Me@6
|
84
|
|
Me@6
|
85 void
|
|
Me@6
|
86 SSR__dissipate_procr( VirtProcr *procrToDissipate );
|
|
Me@6
|
87
|
|
Me@6
|
88 //=======================
|
|
Me@6
|
89 void *
|
|
Me@6
|
90 SSR__malloc_size_to( int numBytes, VirtProcr *ownerPr );
|
|
Me@6
|
91
|
|
Me@6
|
92 void
|
|
Me@6
|
93 SSR__transfer_ownership_of_from_to( void *data, VirtProcr *oldOwnerPr,
|
|
Me@6
|
94 VirtProcr *newOwnerPr );
|
|
Me@6
|
95
|
|
Me@6
|
96 void
|
|
Me@6
|
97 SSR__add_ownership_by_to( VirtProcr *newOwnerPr, void *data );
|
|
Me@6
|
98
|
|
Me@6
|
99 void
|
|
Me@6
|
100 SSR__remove_ownership_by_from( VirtProcr *loserPr, void *dataLosing );
|
|
Me@6
|
101
|
|
Me@6
|
102 void
|
|
Me@6
|
103 SSR__transfer_ownership_to_outside( void *dataToTransferOwnershipOf );
|
|
Me@6
|
104
|
|
Me@6
|
105
|
|
Me@6
|
106
|
|
Me@6
|
107 //=======================
|
|
Me@6
|
108 void
|
|
Me@6
|
109 SSR__send_of_type_to( VirtProcr *sendPr, void *msg, const int type,
|
|
Me@6
|
110 VirtProcr *receivePr);
|
|
Me@6
|
111
|
|
Me@6
|
112 void
|
|
Me@6
|
113 SSR__send_from_to( void *msg, VirtProcr *sendPr, VirtProcr *receivePr);
|
|
Me@6
|
114
|
|
Me@6
|
115 void *
|
|
Me@6
|
116 SSR__receive_type_to( const int type, VirtProcr *receivePr );
|
|
Me@6
|
117
|
|
Me@6
|
118 void *
|
|
Me@6
|
119 SSR__receive_from_to( VirtProcr *sendPr, VirtProcr *receivePr );
|
|
Me@6
|
120
|
|
Me@6
|
121
|
|
Me@6
|
122 //=======================
|
|
Me@6
|
123
|
|
Me@6
|
124 void
|
|
Me@6
|
125 SSR__free_semantic_request( SSRSemReq *semReq );
|
|
Me@6
|
126
|
|
Me@6
|
127
|
|
Me@6
|
128 //========================= Internal use only =============================
|
|
Me@6
|
129 void
|
|
Me@6
|
130 SSR__Request_Handler( VirtProcr *requestingPr, void *_semEnv );
|
|
Me@6
|
131
|
|
Me@6
|
132 VirtProcr *
|
|
Me@6
|
133 SSR__schedule_virt_procr( void *_semEnv, int coreNum );
|
|
Me@6
|
134
|
|
Me@6
|
135
|
|
Me@6
|
136 #endif /* _SSR_H */
|
|
Me@6
|
137
|