X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Frts%2Fparallel%2FLLC.h;h=e10329787f5f61df2a850a9b2458e0d4edf77955;hb=85126d5203ec5344f6a5b2e77da23d34444e48c6;hp=eb6336600ca8782e6151c082d7707e27640634e6;hpb=1b28d4e1f43185ad8c8e7407c66413e1b358402b;p=ghc-hetmet.git diff --git a/ghc/rts/parallel/LLC.h b/ghc/rts/parallel/LLC.h index eb63366..e103297 100644 --- a/ghc/rts/parallel/LLC.h +++ b/ghc/rts/parallel/LLC.h @@ -1,6 +1,6 @@ /* -------------------------------------------------------------------------- - Time-stamp: - $Id: LLC.h,v 1.2 2000/01/13 14:34:07 hwloidl Exp $ + Time-stamp: + $Id: LLC.h,v 1.4 2001/03/22 03:51:11 hwloidl Exp $ Low Level Communications Header (LLC.h) @@ -48,7 +48,7 @@ #define PEGROUP "PE" #define MGRGROUP "MGR" -#define PECTLGROUP "PECTL" +#define SYSGROUP "SYS" #define PETASK "PE" @@ -84,18 +84,18 @@ #define MAX_DATA_WORDS_IN_PACKET 1024 /* basic PVM packing */ -#define PutArg1(a) pvm_pklong(&(a),1,1) -#define PutArg2(a) pvm_pklong(&(a),1,1) -#define PutArgN(n,a) pvm_pklong(&(a),1,1) -#define PutArgs(b,n) pvm_pklong(b,n,1) +#define PutArg1(a) pvm_pklong((long *)&(a),1,1) +#define PutArg2(a) pvm_pklong((long *)&(a),1,1) +#define PutArgN(n,a) pvm_pklong((long *)&(a),1,1) +#define PutArgs(b,n) pvm_pklong((long *)b,n,1) #define PutLit(l) { int a = l; PutArgN(?,a); } /* basic PVM unpacking */ -#define GetArg1(a) pvm_upklong(&(a),1,1) -#define GetArg2(a) pvm_upklong(&(a),1,1) -#define GetArgN(n,a) pvm_upklong(&(a),1,1) -#define GetArgs(b,n) pvm_upklong(b,n,1) +#define GetArg1(a) pvm_upklong((long *)&(a),1,1) +#define GetArg2(a) pvm_upklong((long *)&(a),1,1) +#define GetArgN(n,a) pvm_upklong((long *)&(a),1,1) +#define GetArgs(b,n) pvm_upklong((long *)b,n,1) //@node Externs, , PVM macros, Low Level Communications Header //@subsection Externs @@ -108,20 +108,23 @@ extern void sendOp (OpCode,GlobalTaskId), sendOpN (OpCode,GlobalTaskId,int,StgPtr), sendOpNV (OpCode,GlobalTaskId,int,StgPtr,int,...); +extern void broadcastOpN(OpCode op, char *group, int n, StgPtr args); + /* extracting data out of a packet */ OpCode getOpcode (rtsPacket p); void getOpcodeAndSender (rtsPacket p, OpCode *popcode, GlobalTaskId *psender_id); GlobalTaskId senderTask (rtsPacket p); -rtsPacket waitForPEOp (OpCode op, GlobalTaskId who); +rtsPacket waitForPEOp(OpCode op, GlobalTaskId who, void(*processUnexpected)(rtsPacket) ); /* Init and shutdown routines */ -GlobalTaskId *startUpPE (unsigned nPEs); +void startUpPE (void); void shutDownPE(void); +int getExitCode(int nbytes, GlobalTaskId *sender_idp); /* aux functions */ char *getOpName (unsigned op); // returns string of opcode -void processUnexpected (rtsPacket); +void processUnexpectedMessage (rtsPacket); //void NullException(void); #endif /*PAR */