annotate SSR.h @ 6:98fd084badde

Works multi-core.. pinned VP to a coreloop, changed to SSR
author Me
date Wed, 01 Sep 2010 08:22:54 -0700
parents
children bcc22f6f11a5
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@6 48 HashTable *commHashTbl;
Me@6 49 int numVirtPr;
Me@6 50 int nextCoreToGetNewPr;
Me@6 51 }
Me@6 52 SSRSemEnv;
Me@6 53
Me@6 54
Me@6 55 //===========================================================================
Me@6 56
Me@6 57 void
Me@6 58 SSR__create_seed_procr_and_do_work( VirtProcrFnPtr fn, void *initData );
Me@6 59
Me@6 60 //=======================
Me@6 61
Me@6 62 void
Me@6 63 SSR__init();
Me@6 64
Me@6 65 void
Me@6 66 SSR__cleanup_after_shutdown();
Me@6 67
Me@6 68 //=======================
Me@6 69
Me@6 70 inline VirtProcr *
Me@6 71 SSR__create_procr_with( VirtProcrFnPtr fnPtr, void *initData,
Me@6 72 VirtProcr *creatingPr );
Me@6 73
Me@6 74 void
Me@6 75 SSR__dissipate_procr( VirtProcr *procrToDissipate );
Me@6 76
Me@6 77 //=======================
Me@6 78 void *
Me@6 79 SSR__malloc_size_to( int numBytes, VirtProcr *ownerPr );
Me@6 80
Me@6 81 void
Me@6 82 SSR__transfer_ownership_of_from_to( void *data, VirtProcr *oldOwnerPr,
Me@6 83 VirtProcr *newOwnerPr );
Me@6 84
Me@6 85 void
Me@6 86 SSR__add_ownership_by_to( VirtProcr *newOwnerPr, void *data );
Me@6 87
Me@6 88 void
Me@6 89 SSR__remove_ownership_by_from( VirtProcr *loserPr, void *dataLosing );
Me@6 90
Me@6 91 void
Me@6 92 SSR__transfer_ownership_to_outside( void *dataToTransferOwnershipOf );
Me@6 93
Me@6 94
Me@6 95
Me@6 96 //=======================
Me@6 97 void
Me@6 98 SSR__send_of_type_to( VirtProcr *sendPr, void *msg, const int type,
Me@6 99 VirtProcr *receivePr);
Me@6 100
Me@6 101 void
Me@6 102 SSR__send_from_to( void *msg, VirtProcr *sendPr, VirtProcr *receivePr);
Me@6 103
Me@6 104 void *
Me@6 105 SSR__receive_type_to( const int type, VirtProcr *receivePr );
Me@6 106
Me@6 107 void *
Me@6 108 SSR__receive_from_to( VirtProcr *sendPr, VirtProcr *receivePr );
Me@6 109
Me@6 110
Me@6 111 //=======================
Me@6 112
Me@6 113 void
Me@6 114 SSR__free_semantic_request( SSRSemReq *semReq );
Me@6 115
Me@6 116
Me@6 117 //========================= Internal use only =============================
Me@6 118 void
Me@6 119 SSR__Request_Handler( VirtProcr *requestingPr, void *_semEnv );
Me@6 120
Me@6 121 VirtProcr *
Me@6 122 SSR__schedule_virt_procr( void *_semEnv, int coreNum );
Me@6 123
Me@6 124
Me@6 125 #endif /* _SSR_H */
Me@6 126