update mappings to reflect recent changes
[AROS.git] / rom / exec / exec_intern.h
blob1bc8ac72a4ce1c28e76fd8149a54cbc16ab3a6fb
1 /*
2 Copyright © 1995-2012, The AROS Development Team. All rights reserved.
3 $Id$
5 Desc: Private data belonging to exec.library
6 Lang:
7 */
8 #ifndef __EXEC_INTERN_H__
9 #define __EXEC_INTERN_H__
11 /* This is a short file that contains a few things every Exec function needs */
13 #include <aros/debug.h> /* Needed for aros_print_not_implemented macro */
14 #include <aros/system.h>
15 #include <aros/libcall.h>
16 #include <exec/execbase.h>
17 #include <proto/exec.h>
19 #include <exec_platform.h>
21 #define ALERT_BUFFER_SIZE 2048
23 /* Internals of this structure are host-specific, we don't know them here */
24 struct HostInterface;
26 struct SupervisorAlertTask
28 struct Task * sat_Task; /* Task that tries to display supervisor-level alerts */
29 BOOL sat_IsAvailable;
30 IPTR sat_Params[2];
33 /* A private portion of ExecBase */
34 struct IntExecBase
36 struct ExecBase pub;
37 struct List ResetHandlers; /* Reset handlers list */
38 struct Interrupt ColdResetHandler; /* Reset handler that causes cold reboot */
39 struct Interrupt WarmResetHandler; /* Reset handler that causes warm reboot */
40 struct MinList AllocMemList; /* Mungwall allocations list */
41 struct SignalSemaphore MemListSem; /* Memory list protection semaphore */
42 struct SignalSemaphore LowMemSem; /* Lock for single-threading low memory handlers */
43 APTR KernelBase; /* kernel.resource base */
44 struct Library *DebugBase; /* debug.library base */
45 ULONG PageSize; /* Memory page size */
46 ULONG IntFlags; /* Internal flags, see below */
47 struct MsgPort *ServicePort; /* Message port for service task */
48 struct MinList TaskStorageSlots; /* List of free slots, always one element with next slot */
49 struct List AllocatorCtxList; /* List of allocator contexts for system mem headers */
50 struct Exec_PlatformData PlatformData; /* Platform-specific stuff */
51 struct SupervisorAlertTask SAT;
52 char AlertBuffer[ALERT_BUFFER_SIZE]; /* Buffer for alert text */
55 #define PrivExecBase(base) ((struct IntExecBase *)base)
56 #define PD(base) PrivExecBase(base)->PlatformData
57 #define KernelBase PrivExecBase(SysBase)->KernelBase
58 #define DebugBase PrivExecBase(SysBase)->DebugBase
60 /* IntFlags */
61 #define EXECF_MungWall 0x0001 /* This flag can't be changed at runtime */
62 #define EXECF_StackSnoop 0x0002
64 /* Additional private task states */
65 #define TS_SERVICE 128
67 /* Puddle size, in slots. Must be at least 1 */
68 #define TASKSTORAGEPUDDLE 16
70 #if UseLVOs
71 extern void __AROS_InitExecBase (void);
72 #endif
74 struct ExecBase *PrepareExecBase(struct MemHeader *mh, struct TagItem *tags);
75 void InitExecBase(struct ExecBase *SysBase, ULONG negsize, struct TagItem *msg);
76 struct ExecBase *PrepareExecBaseMove(struct ExecBase *oldSysBase);
77 BOOL Exec_PreparePlatform(struct Exec_PlatformData *pdata, struct TagItem *tags);
79 void InitKickTags(struct ExecBase *SysBase);
80 UWORD GetSysBaseChkSum(struct ExecBase *sysbase);
81 void SetSysBaseChkSum(void);
82 BOOL IsSysBaseValid(struct ExecBase *sysbase);
84 IPTR cpu_SuperState();
86 void ServiceTask(struct ExecBase *SysBase);
88 #endif /* __EXEC_INTERN_H__ */