home *** CD-ROM | disk | FTP | other *** search
/ Global Amiga Experience / globalamigaexperience.iso / compressed / development / clusterdemo.dms / clusterdemo.adf / Modules.lha / modules / txt / T_Exec.def < prev    next >
Text File  |  1994-05-25  |  10KB  |  215 lines

  1. |##########|
  2. |#MAGIC   #|CLABLJAF
  3. |#PROJECT #|""
  4. |#PATHS   #|"StdProject"
  5. |#FLAGS   #|xx---x--x-x-x-x-----------------
  6. |#USERSW  #|--------------------------------
  7. |#USERMASK#|--------------------------------
  8. |#SWITCHES#|xx---xxxxx-xx---
  9. |##########|
  10. DEFINITION MODULE T_Exec;
  11. (* $A- *)
  12. FROM System    IMPORT BITSET,LONGSET,PROC,SysStringPtr,BPTR,Regs;
  13. FROM Resources IMPORT ContextPtr;
  14. FROM Hardware  IMPORT IntFlags;
  15. FROM Exec      IMPORT NodeType,NodePtr,MinListPtr,MinNodePtr,MinNode,Node,
  16.                       MinList,List,ListPtr,Interrupt,InterruptPtr,IntVector,
  17.                       SoftIntList,MemReqs,MemReqSet,MemTypeSet,MemChunkPtr,
  18.                       MemChunk,MemHeader,MemHeaderPtr,MemEntry,MemList,
  19.                       MemListPtr,TaskFlags,TaskFlagSet,TaskState,
  20.                       MsgPortAction,SigAbort,SigChild,SigBlit,SigSingle,SigDos,
  21.                       vectSize,reserved,base,userDef,nonStd,extFunc,expunge,
  22.                       close,open,LibFlags,LibFlagSet,Device,TaskSignals,
  23.                       DevicePtr,UnitFlags,UnitFlagSet,UnitPtr,Unit,invalid,reset,
  24.                       read,write,update,clear,stop,start,flush,nonstd,abortIO,
  25.                       beginIO,IOFlagSet,quick,openFail,aborted,noCmd,badLength,
  26.                       Semaphore,SemaphorePtr,SemaphoreRequest,
  27.                       ResidentFlags,ResidentFlagSet,ResidentPtr,Resident,matchWord,
  28.                       AttnFlags,AttnFlagSet,ExecBaseType,ExecBasePtr,ExecBase,
  29.                       AddLibrary,MakeFunctions,MakeLibrary,RemLibrary,SetFunction,
  30.                       SumLibrary,InitCode,InitStruct,InitResident,FindResident,Alert,Debug,
  31.                       RawDoFmt,RawIOInit,RawPutChar,Disable,
  32.                       Enable,Forbid,Permit,SetSR,SuperState,UserState,SetIntVector,
  33.                       Cause,Allocate,Deallocate,AllocMem,AllocAbs,FreeMem,AvailMem,
  34.                       TypeOfMem,NewList,Insert,AddHead,AddTail,Remove,RemHead,RemTail,
  35.                       Enqueue,FindName,AddTask,RemTask,FindTask,SetTaskPri,SetSignal,
  36.                       SetExcept,Wait,Signal,AddPort,AddPort,RemPort,
  37.                       PutMsg,WaitPort,FindPort,AddDevice,RemDevice,DoIO,
  38.                       SendIO,CheckIO,WaitIO,AbortIO,AddResource,RemResource,OpenResource,
  39.                       InitSemaphore,AttemptSemaphore,FindSemaphore,AddSemaphore,RemSemaphore,
  40.                       Procure,Vacate,SumKickData,AddMemList,CopyMem,CopyMemQuick,
  41.                       ObtainSemaphore,ReleaseSemaphore,
  42.                       ObtainSemaphoreList,ReleaseSemaphoreList,
  43.                       SignalSemaphore,SignalSemaphorePtr,
  44.                       TaskSignals,IOReturn,TaskSigSet,
  45.                       IOCommand,nonstdVAL,IOFlags,IOReturn;
  46.  
  47. TYPE
  48.   MsgPortPtr         = POINTER TO MsgPort;
  49.   MessagePtr         = POINTER TO Message;
  50.   LibraryPtr         = POINTER TO Library;
  51.   IORequestPtr       = POINTER TO IORequest;
  52.   IOStdReqPtr        = POINTER TO IOStdReq;
  53.   TaskPtr            = POINTER TO Task;
  54.  
  55. DEFINITION MODULE PortRes = Resources.ResHandles(MsgPortPtr);
  56. DEFINITION MODULE MsgRes = Resources.ResHandles(MessagePtr);
  57. DEFINITION MODULE LibRes = Resources.ResHandles(LibraryPtr);
  58. DEFINITION MODULE IoRes = Resources.ResHandles(IORequestPtr);
  59. DEFINITION MODULE TaskRes = Resources.ResHandles(TaskPtr);
  60.  
  61. TYPE
  62.   MsgPort         = RECORD OF Exec.MsgPort,PortRes.ResHandle END;
  63.   Message         = RECORD OF Exec.Message,MsgRes.ResHandle  END;
  64.   Library         = RECORD OF Exec.Library,LibRes.ResHandle  END;
  65.   IORequest       = RECORD OF Exec.IORequest,IoRes.ResHandle END;
  66.   IOStdReq        = RECORD OF Exec.IOStdReq,IORequest        END;
  67.   Task            = RECORD OF Exec.Task,TaskRes.ResHandle    END;
  68.  
  69. EXCEPTION
  70.   NoFreeSignal         : "No signal available";
  71.   NoMsgPort            : "Failed to create msg port";
  72.   OpenError            : "Could not open Device";
  73.   NotEnoughStackSpace  : "Not enough stack space";
  74.   CantKillMainTask     : "Can not kill main task";
  75.   TaskNeedsName        : "Task needs a name";
  76.  
  77. (*========================== Library =========================================*)
  78.  
  79. PROCEDURE OpenLibrary(REF name     : STRING;
  80.                           version  : LONGINT):LibraryPtr;
  81.  
  82. PROCEDURE CloseLibrary(library : LibraryPtr);
  83.  
  84.  
  85. PROCEDURE OldOpenLibrary(REF libName IN A1 : STRING):LibraryPtr;
  86.  
  87.  
  88. GROUP
  89.   LibGrp   = OpenLibrary,CloseLibrary,AddLibrary,MakeFunctions,MakeLibrary,
  90.              RemLibrary,OldOpenLibrary,SetFunction,SumLibrary,LibraryPtr,BPTR;
  91.  
  92. (*----------------------------------------------------------------------------*)
  93. (*  Listen-Funktionen                                                         *)
  94. (*----------------------------------------------------------------------------*)
  95.  
  96. GROUP ListGrp = NodeType,Node,NodePtr,List,ListPtr,
  97.                 MinNode,MinNodePtr,MinList,MinListPtr,
  98.                 NewList,Insert,AddHead,AddTail,Remove,RemHead,RemTail,
  99.                 Enqueue,FindName;
  100.  
  101. (*----------------------------------------------------------------------------*)
  102. (*  Task-Funktionen                                                           *)
  103. (*----------------------------------------------------------------------------*)
  104.  
  105.  
  106. PROCEDURE CreateTask(REF name      : STRING;
  107.                          priority  : SHORTINT;
  108.                          initPC    : ANYPTR;
  109.                          stackSize : LONGINT    := 20000;
  110.                          context   : ContextPtr := NIL):TaskPtr;
  111.  
  112. PROCEDURE DeleteTask(task : TaskPtr);
  113.  
  114.  
  115.  
  116. GROUP TaskGrp = TaskPtr,Task,TaskFlags,TaskFlagSet,TaskState,
  117.                 AddTask,RemTask,CreateTask,DeleteTask,
  118.                 FindTask,SetTaskPri;
  119.  
  120.  
  121.  
  122. (*----------------------------------------------------------------------------*)
  123. (*  Message-Funktionen                                                        *)
  124. (*----------------------------------------------------------------------------*)
  125.  
  126. PROCEDURE CreatePort(REF portName : STRING     :="";
  127.                          priority : SHORTINT   := 0;
  128.                          context  : ContextPtr := NIL):MsgPortPtr;
  129.  
  130. PROCEDURE DeletePort(port : MsgPortPtr);
  131.  
  132. PROCEDURE GetMsg(port : MsgPortPtr;context : ContextPtr := NIL):MessagePtr;
  133.  
  134. PROCEDURE ReplyMsg(msg : MessagePtr);
  135.  
  136.  
  137. GROUP PortGrp = MsgPort,MsgPortPtr,MsgPortAction,MessagePtr,
  138.                 AddPort,RemPort,CreatePort,DeletePort,
  139.                 FindPort;
  140.  
  141.       MsgGrp  = MsgPortPtr,MessagePtr,
  142.                 PutMsg,GetMsg,ReplyMsg,WaitPort,FindPort;
  143.  
  144. (*----------------------------------------------------------------------------*)
  145. (*  Device-Funktionen                                                         *)
  146. (*----------------------------------------------------------------------------*)
  147.  
  148.  
  149. |  Funktion  : Öffnet ein Device
  150. |  Parameter : packet   <- Zeiger auf einen IORequest. Prägt man dieses Modul
  151. |                          mit einem Nachfolger aus, so muß man die Customfelder
  152. |                          selbst initialisieren.
  153. |              name     <- Name des Devices
  154. |              len      <- Wirkliche Länge des Verwendeteten Typen
  155. |              unit     <- Unit des Devices, die geöffnet werden soll
  156. |              context  <- Context, zu dem dieses Device geöffnet werden soll
  157. |
  158. PROCEDURE OpenDevice(    packet  : IORequestPtr;
  159.                      REF name    : STRING;
  160.                          len     : CARDINAL;
  161.                          unit    : LONGCARD  :=0;
  162.                          flags   :=LONGSET:{};
  163.                          context : ContextPtr:=NIL);
  164.  
  165. |
  166. |  Funktion  : Schließt ein mit diesem Modul geöffnetes Device
  167. |  Parameter : packet <- Zeiger auf den IORequest des Devices, das geschlossen
  168. |                        werden soll.
  169. |
  170. PROCEDURE CloseDevice(packet : IORequestPtr);
  171.  
  172.  
  173. GROUP DeviceGrp = Device,DevicePtr,IORequest,
  174.                   AddDevice,RemDevice;
  175.  
  176.       ExecIOGrp = IORequestPtr,IOStdReqPtr,DoIO,SendIO,CheckIO,WaitIO,AbortIO,
  177.                   invalid,reset,read,write,update,clear,stop,start,
  178.                   flush,quick;
  179.  
  180. (*----------------------------------------------------------------------------*)
  181. (*  Resource-Funktionen                                                       *)
  182. (*----------------------------------------------------------------------------*)
  183.  
  184.  
  185. GROUP
  186.   ResourceGrp   = AddResource,RemResource,OpenResource;
  187.  
  188.  
  189.  
  190. (*----------------------------------------------------------------------------*)
  191. (*  Semaphore-Funktionen                                                      *)
  192. (*----------------------------------------------------------------------------*)
  193.  
  194.  
  195. GROUP SemaphoreGrp = SignalSemaphore,List,
  196.                      InitSemaphore,ObtainSemaphore,ReleaseSemaphore,
  197.                      AttemptSemaphore,ObtainSemaphoreList,
  198.                      ReleaseSemaphoreList,
  199.                      FindSemaphore,AddSemaphore,RemSemaphore;
  200.  
  201. GROUP
  202.   KickGrp   = SumKickData,AddMemList,CopyMem,CopyMemQuick;
  203.  
  204.   All       = LibGrp,ListGrp,TaskGrp,PortGrp,
  205.               MsgGrp,DeviceGrp,ExecIOGrp,ResourceGrp,SemaphoreGrp,KickGrp,
  206.               SoftIntList,IntVector,MemChunkPtr,MemChunk,MemTypeSet,MemHeaderPtr,
  207.               MemEntry,SigAbort,SigChild,SigBlit,SigSingle,SigDos,vectSize,
  208.               reserved,base,userDef,nonStd,extFunc,expunge,close,open,LibFlags,
  209.               LibFlagSet,Library,Device,DevicePtr,UnitFlags,UnitFlagSet,UnitPtr,
  210.               Unit,openFail,aborted,noCmd,badLength,ResidentFlagSet,ResidentPtr,
  211.               Resident,matchWord,AttnFlags,AttnFlagSet,ExecBaseType,ExecBase;
  212.  
  213.  
  214. END T_Exec.
  215.