home *** CD-ROM | disk | FTP | other *** search
/ The Best of Mecomp Multimedia 1 / Mecomp-CD.iso / amiga / tools / system / shutdown / shutdownglobal.h < prev    next >
Encoding:
C/C++ Source or Header  |  1992-10-07  |  2.9 KB  |  125 lines

  1. enum    {    MODE_SHUTDOWN, MODE_LIST, MODE_NAME, MODE_RESET, MODE_FASTRESET };
  2. enum    {    SHUTDOWN_NORMAL, SHUTDOWN_FAST };
  3.  
  4. enum    {    ERROR_NOKEYPORT=1,ERROR_NOKEYREQUEST,ERROR_NOKEYDEVICE,ERROR_NOKEYRESET,
  5.         ERROR_WEDGESETUP,ERROR_NORESET,ERROR_NOTABLE };
  6.  
  7. #include "shutdown.h"
  8.  
  9. #define SIG_NOTIFY        (1 << NotifySignal)
  10. #define SIG_WINDOW        (1 << Window -> UserPort -> mp_SigBit)
  11. #define SIG_KILL        SIGBREAKF_CTRL_C
  12. #define SIG_HANDSHAKE        SIGBREAKF_CTRL_C
  13. #define SIG_NOTICE        SIGBREAKF_CTRL_D
  14. #define SIG_SHUTDOWN        SIGBREAKF_CTRL_E
  15. #define SIG_TIME        (1 << TimePort -> mp_SigBit)
  16.  
  17. #define SDB_RESET        0
  18. #define SDF_RESET        (1 << 0)
  19.  
  20. #define SD_CHECK        0
  21. #define SD_EXIT            1
  22.  
  23.     /* A jump vector (six bytes, just like in library jump tables). */
  24.  
  25. struct Vector
  26. {
  27.     UWORD    Command;    /* The MC680x0 `JMP ea' opcode. */
  28.     APTR    Address;    /* The destination address. */
  29. };
  30.  
  31. struct FileInfo
  32. {
  33.     struct MinNode         Node;
  34.     BPTR             Handle;
  35.     struct DeviceNode    *DeviceNode;
  36.     ULONG             Accesses;
  37.     BYTE             Ignore;
  38.     BYTE             Pad[3];
  39.     struct Process        *LastAccess;
  40.     UBYTE             Name[1];
  41. };
  42.  
  43. struct ShutdownBase
  44. {
  45.     struct Library         LibNode;
  46.  
  47.     struct SignalSemaphore     BlockLock;
  48.     struct SignalSemaphore     DevBlockLock;
  49.     struct SignalSemaphore     AccessLock;
  50.     struct SignalSemaphore     ShutdownLock;
  51.  
  52.     BYTE             Shutdown;
  53.     BYTE             DevShutdown;
  54.     BYTE             Running;
  55.     BYTE             Closing;
  56.  
  57.     struct MinList         AccessList;
  58.     struct MinList         ShutdownList;
  59.  
  60.     VOID            (*Main)();
  61.  
  62.     struct Process        *Father,
  63.                 *Child,
  64.                 *CxProcess;
  65.  
  66.     LONG             OpenCount;
  67.  
  68.     LONG             ErrorCode;
  69. };
  70.  
  71. struct ShutdownInfo
  72. {
  73.     struct MinNode     sdi_Node;
  74.     STRPTR         sdi_Name;
  75.     struct Hook    *sdi_Hook;
  76. };
  77.  
  78.     /* Patch.asm */
  79.  
  80. extern VOID            BlockBeginIO();
  81. extern VOID            NewDevExpunge();
  82.  
  83.     /* LocaleSupport.c */
  84.  
  85. VOID __regargs            LocaleOpen(STRPTR CatalogName,STRPTR Builtin);
  86. VOID                LocaleClose(VOID);
  87. STRPTR __regargs        GetString(LONG ID);
  88.  
  89.     /* DevWatch.c */
  90.  
  91. BYTE                WedgeSetup(VOID);
  92. VOID                DeleteWedges(VOID);
  93. VOID                NewWedge(STRPTR DeviceName);
  94. ULONG __asm            DevExpunge(register __a6 struct Device *Device);
  95. VOID __asm            BlockRoutine(register __a1 struct IOStdReq *Request);
  96.  
  97.     /* LibCode.c */
  98.  
  99. VOID __saveds            Main(VOID);
  100. BYTE                OpenAll(BYTE Mode);
  101.  
  102. LONG __saveds __asm        RexxDispatch(register __a0 struct RexxMsg *Message);
  103. LONG __saveds __asm        Shutdown(register __d0 ULONG Mode);
  104. APTR __saveds __asm        AddShutdownInfoTagList(register __a0 struct Hook *Hook,register __a1 STRPTR Name,register __a2 struct TagItem *TagList);
  105. LONG __saveds __asm        RemShutdownInfo(register __a0 struct ShutdownInfo *Info);
  106.  
  107. extern struct ExecBase        *SysBase;
  108. extern struct DosLibrary    *DOSBase;
  109. extern struct IntuitionBase    *IntuitionBase;
  110. extern struct GfxBase        *GfxBase;
  111. extern struct RxsLib        *RexxSysBase;
  112. extern struct Library        *UtilityBase,
  113.                 *GadToolsBase;
  114. extern struct ShutdownBase    *GlobalBase;
  115.  
  116. extern struct Process        *HandlerProcess,
  117.                 *MainProcess;
  118.  
  119. extern struct SignalSemaphore     DeviceWatchSemaphore;
  120.  
  121. extern BYTE             NotifySignal;
  122.  
  123. extern BYTE             DeviceInUse,
  124.                  DeviceProbablyInUse;
  125.