2 Copyright © 1995-2012, The AROS Development Team. All rights reserved.
5 Desc: Private data belonging to exec.library
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 */
26 struct SupervisorAlertTask
28 struct Task
* sat_Task
; /* Task that tries to display supervisor-level alerts */
33 /* A private portion of ExecBase */
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 Exec_PlatformData PlatformData
; /* Platform-specific stuff */
50 struct SupervisorAlertTask SAT
;
51 char AlertBuffer
[ALERT_BUFFER_SIZE
]; /* Buffer for alert text */
54 #define PrivExecBase(base) ((struct IntExecBase *)base)
55 #define PD(base) PrivExecBase(base)->PlatformData
56 #define KernelBase PrivExecBase(SysBase)->KernelBase
57 #define DebugBase PrivExecBase(SysBase)->DebugBase
60 #define EXECF_MungWall 0x0001 /* This flag can't be changed at runtime */
61 #define EXECF_StackSnoop 0x0002
63 /* Additional private task states */
64 #define TS_SERVICE 128
66 /* Puddle size, in slots. Must be at least 1 */
67 #define TASKSTORAGEPUDDLE 16
70 extern void __AROS_InitExecBase (void);
73 struct ExecBase
*PrepareExecBase(struct MemHeader
*mh
, struct TagItem
*tags
);
74 void InitExecBase(struct ExecBase
*SysBase
, ULONG negsize
, struct TagItem
*msg
);
75 struct ExecBase
*PrepareExecBaseMove(struct ExecBase
*oldSysBase
);
76 BOOL
Exec_PreparePlatform(struct Exec_PlatformData
*pdata
, struct TagItem
*tags
);
78 void InitKickTags(struct ExecBase
*SysBase
);
79 UWORD
GetSysBaseChkSum(struct ExecBase
*sysbase
);
80 void SetSysBaseChkSum(void);
81 BOOL
IsSysBaseValid(struct ExecBase
*sysbase
);
83 IPTR
cpu_SuperState();
85 void ServiceTask(struct ExecBase
*SysBase
);
87 #endif /* __EXEC_INTERN_H__ */