annotate SSR.h @ 14:bcc22f6f11a5

Added min work-unit cycles and measre primitive time
author Me
date Sun, 10 Oct 2010 09:37:47 -0700
parents 98fd084badde
children 6c6d7fbd7e25
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