home *** CD-ROM | disk | FTP | other *** search
- /* File: ~eden/Kernel/h/mmMsgDefs.h */
-
- /*
- * $Header: ~eden/Kernel/h/mmMsgDefs.v Revision 3.4 84/12/17 17:03:21 schwartz Exp$
- * INTERFACE: None.
- *
- * FUNCTION: Provide General Message Module Definitions.
- *
- * IMPORTS: ~eden/Kernel/h/stdTypes.h.
- *
- * EXPORTS: UnsignedInteger, HandlerPtr, MessageId, MessageType,
- * MessageSubtype, NULLMSGID, NULLMSGTYPE, NULLMSGSUBTYPE,
- * BROADCAST, BROADCASTPODS, BROADCASTHOSTS, MULTICAST,
- * mBytesToInt, MMDefineDimension,
- * MMInitMsgModule, NULL, EDENMSGID, DEBUGMSGID, EDENMSG,
- * HOTSSEARCHPTR, BIGRETRANSCOUNT,
- * EDENPORTDEATH, NOHOTSENTRY, CHECKMSG, NUMUPCALLEVENTS.
- *
- * DESIGN:
- *
- * $Log: /u1/Eden/Source/MsgOps/RCS/MsgDefs.v $
- Revision 3.5 86/05/28 10:00:21 eric
-
- Revision 3.4 84/12/17 17:03:21 schwartz
- Added Upcall handler FIRSTFCMSGRECEIVED and msg SNType SNFIRSTFCMSG
-
- Revision 3.3 84/12/11 12:03:38 norm
- Added Upcall handlers SENDWINDOWFULL and SENDWINDOWNOTFULL
-
- Revision 3.2 84/11/26 16:41:39 schwartz
- Added Upcall handler for NOHOTSENTRY
-
- Revision 3.1 84/09/05 10:53:02 schwartz
- Added the constant MAXHOSTSINLOCALNET
-
- Revision 3.0 84/07/03 11:23:03 schwartz
- Changes to accommodate use of Unix 4.2 sockets for network interprocess
- communication
-
- Revision 2.2 84/06/20 20:30:00 schwartz
- Added the following constants for use in upcall handler definitions:
- HOTSSEARCHPTR, BIGRETRANSCOUNT, EDENPORTDEATH, NUMUPCALLEVENTS
-
- Revision 2.1 84/02/16 20:40:00 oystr
- Version 2 baseline.
-
- Revision 1.10 84/02/16 15:11:27 eric
- Proper port cleanup on port death implemented (ipc emergency signal
- handling).
-
- Minor fixes:
- Signal handlers now 'proctect' QueueTask via 'HoldSigs(); ... ; ReleaseSigs()'
- Minor bug in TimerCode fixed.
-
- NOTE: The message module now makes heavy use of the HOTS table when
- using the Ether. The HOTS table lookup routine has been optimized
- new hashing function and a one-element cache.
-
- Revision 1.9 83/10/25 11:52:57 mager
- Added BroadcastMask to MessageHeader; defined BroadcastMask offset.
-
- Revision 1.8 83/10/14 16:39:27 mager
- Removed Datagram level of Message Module. Increased size of message to just
- under 1K. Changed calls to malloc and free with xalloc and xfree.
- Removed redundant setting of ipc header.
- Reduced initialization of messages in MMAllocateMsg.
-
- Revision 1.6 83/05/27 00:17:41 cady
- Revised datagram and message headers.
- Eliminated DGListElt structure.
- Decreased datagram size to 512 bytes.
- Revised asynchronous send to send immediately.
- Revised SendDG to used separate header and data pointers.
- Revised IPC header structure for send and receive.
-
- Revision 1.5 83/05/16 16:44:41 cady
- Added explicit constant typing and include files.
-
- Revision 1.4 83/02/26 20:25:50 cady
- Fixed missing #endif
-
- Revision 1.3 83/02/25 11:08:15 cady
- Moved external trace definitions from Types.h to MsgDefs.h.
-
- Revision 1.2 83/02/02 11:28:53 cady
- Added IPC ID type definitions for Eden and Debug messages.
-
- Revision 1.1 83/01/06 14:07:48 cady
- Initial revision
-
- * 4-Nov-1982 Initial implementation. S. Cady
- */
-
- #ifndef mmMsgDefs
- #define mmMsgDefs
-
- #ifndef stdTypes
- #include "Kernel/h/stdTypes.h"
- #endif
-
- /****************************************************************/
- /* General Message Module Type Definitions */
- /****************************************************************/
-
- #ifndef NULL
- #define NULL 0
- #endif
-
- typedef unsigned int UnsignedInteger; /* 32-bit unsigned integer */
- typedef int HResult;
- typedef HResult (*HandlerPtr) ();
- typedef UnsignedInteger MessageId;
- typedef UnsignedInteger MessageType;
- typedef UnsignedInteger MessageSubtype;
-
-
- #define NULLMSGID ((MessageId) 0)
- #define NULLMSGTYPE ((MessageType) 0)
- #define NULLMSGSUBTYPE ((MessageSubtype) 0)
-
- /* 2032 is the maximum number of bytes that can be sent in a single Ethernet
- message using Unix 4.2 sockets (note that the Ethernet itself limits
- messages to about 1500 bytes). The 4 is space for the enethdr. */
- #ifdef UNDEF
- #define MAXPACKETSIZE (2032 - 4)
- #else
- #define MAXPACKETSIZE\
- (1500 - 24 /* for norm */ - 4 /* for eric */ - 8 /* for udp */)
- #endif
-
- /* Eden IPC Message ID Definitions: Must be distinct from */
- /* IPC emergency kernel ID definitions. */
-
- #define EDENMSGID ((int) 8)
- #define DEBUGMSGID ((int) 9)
-
- /*
- * Macro to extract machine addresss field from an EthernetAddress
- * >>>>> WARNING <<<<<
- * The number returned by this macro bears no relation to any
- * standard definition of machine address. It is effectively
- * the "low order" byte of the IP address.
- */
- #define MachineAddress(EthAddr) (inet_lnaof(EthAddr.sin_addr.s_addr) & 0xFF)
-
- /* Size of message header reserved fields */
- #define ReservedMsgSize ( sizeof(MessageType) \
- + sizeof(MessageSubtype) \
- + sizeof(UnsignedInteger) \
- + sizeof(UnsignedInteger) \
- )
-
- /* Size of datagram header reserved fields */
- #define ReservedDGSize ( sizeof(integer *) \
- + sizeof(integer) \
- + sizeof(short unsigned int) \
- + sizeof(short unsigned int) \
- + sizeof(integer) \
- )
-
- /* Eden Ethernet packet type: 16-bit integer */
-
- #define EDENMSG ((unsigned short) 0xffff)
-
- #define BROADCAST ((int) 0)
- #define MULTICAST ((int) -1)
- #define BROADCASTPODS ((int) -2)
- #define BROADCASTHOSTS ((int) -3)
-
- #define mBytesToInt(fBytes) ( ((fBytes)+sizeof(int)-1) / sizeof(int) )
-
- /* Eden Ethernet subnet types. */
-
- typedef unsigned char MsgSeqType;
-
- #define SNNORMAL 1
- #define SNACK 2
- #define SNNAK 3
- #define SNRAWMSG 4
- #define SNBROADCAST 5
- #define SNFIRSTFCMSG 6
- typedef unsigned char SubNetType;
- #define MAXHOSTNAMELENGTH 50
- #define MAXHOSTSINLOCALNET 40
-
-
- /* Message module upcall handler definitions */
-
- #define HOTSSEARCHPTR 0
- #define BIGRETRANSCOUNT 1
- #define EDENPORTDEATH 2
- #define NOHOTSENTRY 3
- #define SENDWINDOWFULL 4
- #define SENDWINDOWNOTFULL 5
- #define FIRSTFCMSGRECEIVED 6
- #define CHECKMSG 7
- #define NUMUPCALLEVENTS 8
- extern KKStatus (*MMUpcallHandler[NUMUPCALLEVENTS])();
-
-
- extern KKStatus MMInitMsgModule();
- extern KKStatus MMDefineUpCallHandler();
- extern KKStatus MMDefineDimension();
- extern int MMTrace;
- extern char MMTraceHost[13];
- extern void MMTraceMsg();
-
-
- /* The following Macro is an efficiency hack for test output. */
- #define MXTraceMsg if ( MMTrace ) MMTraceMsg
-
-
- #endif
-
- /****************************************************************/
- /* End of General Message Module Type Definitions */
- /****************************************************************/
-