annotate SSR.h @ 11:9172ea309065

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