home *** CD-ROM | disk | FTP | other *** search
- /*
- ** :ts=8
- **
- ** low-mem.h
- **
- ** Copyright 1987 By ASDG Incorporated - All Rights Reserved
- ** May be freely redistributed for non-commercial purposes
- ** provided this message retains intact. Available for use
- ** in commercial products for VERY minimal concession. Con-
- ** tact ASDG Incorporated at (201) 563-0529. Use in commer-
- ** cial products without authorization of ASDG Incorporated
- ** shall be viewed as copyright infringement and piracy.
- **
- ** For commercial applications of the low-memory server ASDG
- ** will grant perpetual use licenses provided that:
- ** a) We are credited somewhere in your documenta-
- ** tion.
- ** b) You send us a copy of the application.
- ** c) You pay a very small administrative fee not
- ** exceeding $50.
- **
- ** Author: Perry S. Kivolowitz
- */
-
- /*
- ** To use the low-memory server you must allocate one of these
- ** structures. When a low memory condition exists, the low-
- ** memory server will look for the message port you specified
- ** in the call to RegLowMemReq. If the message port is found,
- ** the low-memory server will examine the LoeMemMsg you sup-
- ** plied a pointer to in the call to RegLowMemReq.
- **
- ** If the low-memory server finds something other than LM_CON-
- ** DITION_ACKNOWLEDGED, it will not send you a message. There-
- ** fore you should initialize this field with that value.
- **
- ** This scheme is used to ensure that the low-memory server
- ** does not reuse the same LowMemMsg (which you supply). This
- ** scheme allows the low-memory server to not wait for a Reply
- ** which could be deadly if none was forthcoming from your ap-
- ** plication.
- */
-
- struct LowMemMsg {
- struct Message lm_msg;
- long lm_flag;
- };
-
-
- /*
- ** values for lm_flag
- */
-
- #define LM_LOW_MEMORY_CONDITION 0x00000000
- #define LM_CONDITION_ACKNOWLEDGED (('A'<<24)|('S'<<16)|('D'<<8)|'G')
-
- /*
- ** useful defines as in:
- **
- ** lmptr = (LMMPtr) AllocMem(SizeOfLMMsg , 0L);
- */
-
- #define SizeOfLMMsg sizeof(struct LowMemMsg)
- #define LMMPtr struct LowMemMsg *
- #define LMSName "asdg-low-mem.library"
-
- /*
- ** Meaning of Error Returns coming back from RegLowMemReq
- */
-
- #define LM_BADNAME -1 /* duplication of port name */
- #define LM_NOMEM -2 /* memory allocation failed */
-
-
- /******* Following lines added 01-Feb-90 by Darren New to support
- Lattice 5.x, ANSI, etc. **********************************/
-
-
- extern struct Library *LowMemBase;
-
-
- extern long RegLowMemReq(char * PortName , LMMPtr Space);
- /*
- ; PortName is a pointer to a null terminated string representing
- ; the name of your port to which the low-memory service
- ; will attempt to send a message.
- ; Space is a pointer to an initialized LowMemMessage.
- ;
- ; res if false means your registration has been accepted.
- ; Currently, the only reason your request would be re-
- ; jected is if the low-memory server itself ran out of
- ; memory (oh my!) or the port name you requested has al-
- ; ready been registered. The value of the returned error
- ; code can be used to determine why the call failed.
- ;
- */
-
- void DeRegLowMemReq(char * PortName);
- /*
- ;
- ; DeRegLowMemReq
- ;
- ; Undo the effect of a previous RegLowMemReq. You absolutely positively
- ; must call this routine before exiting your program (or closing the
- ; library)
- ;
- ;
- */
-
- #ifndef NO_PRAGMAS
- /*------ normal functions ---------------------------------------------*/
- #pragma libcall LowMemBase RegLowMemReq 1e 9802
- #pragma libcall LowMemBase DeRegLowMemReq 24 801
- #endif
-
-
-