exec.library: Move task storage slot functions to the end, bump the ABI version
[AROS.git] / rom / exec / exec.conf
blob7f297156ef161dae22541d5d3759515e3e4d642c
1 ##begin config
2 version 51.0
3 libbase SysBase
4 libbasetype struct IntExecBase
5 libbasetypeextern struct ExecBase
6 options noresident,noautoinit
7 ##end config
9 ##begin cdef
10 #include <exec/types.h>
11 #include <exec/tasks.h>
12 #include <exec/memory.h>
13 #include <exec/ports.h>
14 #include <exec/devices.h>
15 #include <exec/io.h>
16 #include <exec/semaphores.h>
17 #include <exec/interrupts.h>
18 #include <exec/avl.h>
20 #include <dos/bptr.h>
22 #include <stdarg.h>
24 __BEGIN_DECLS
26 #ifndef NewRawDoFmt
27 STRPTR NewRawDoFmt(CONST_STRPTR FormatString, VOID_FUNC PutChProc, APTR PutChData, ...);
28 #endif
30 #ifdef __AROS_GIMME_DEPRECATED_STACKSWAP__
32 #ifdef __GNUC__
34 #if !defined(__EXEC_LIBAPI__) || (36 <= __EXEC_LIBAPI__)
36 static inline void __attribute__((__always_inline__)) __inline_Exec_StackSwap(struct StackSwapStruct * __arg1, APTR __SysBase)
38     AROS_LC1NR(void, StackSwap,
39         AROS_LCA(struct StackSwapStruct *,(__arg1),A0),
40         struct ExecBase *, (__SysBase), 122, Exec
41     );
44 #define StackSwap(arg1) \
45     __inline_Exec_StackSwap((arg1), (APTR)SysBase)
47 #endif /* !defined(__EXEC_LIBAPI__) || (36 <= __EXEC_LIBAPI__) */
49 #else
51 #error no StackSwap() support for your compiler 
53 #endif /* __GNUC__ */
55 #endif /* __AROS_GIMME_DEPRECATED_STACKSWAP__ */
57 __END_DECLS
59 ##end cdef
61 ##begin cdefprivate
63 #include "exec_intern.h"
65 ##end cdefprivate
67 ##begin functionlist
68 struct ExecBase *open(ULONG version) (D0)
69 .private
70 BPTR close() ()
71 .private
72 .skip 2
73 IPTR Supervisor(void *userFunction) (A5)
74 .skip 1 # AmigaOS(tm) private ExitIntr() hook
75 .skip 1 # AmigaOS(tm) private Schedule() hook
76 void Reschedule() ()
77 .skip 1 # AmigaOS(tm) private Switch() hook
78 BOOL Dispatch(struct Task *task) (A0)
79 void Exception() ()
80 void InitCode(ULONG startClass, ULONG version) (D0, D1)
81 void InitStruct(CONST_APTR initTable, APTR memory, ULONG size) (A1, A2, D0)
82 struct Library *MakeLibrary(CONST_APTR funcInit, CONST_APTR structInit, ULONG_FUNC libInit, ULONG dataSize, BPTR segList) (A0, A1, A2, D0, D1)
83 ULONG MakeFunctions(APTR target, CONST_APTR functionArray, CONST_APTR funcDispBase) (A0, A1, A2)
84 struct Resident *FindResident(const UBYTE *name) (A1)
85 APTR InitResident(struct Resident *resident, BPTR segList) (A1, D1)
86 void Alert(ULONG alertNum) (D7)
87 void Debug(unsigned long flags) (D0)
88 void Disable() ()
89 void Enable() ()
90 void Forbid() ()
91 void Permit() ()
92 ULONG SetSR(ULONG newSR, ULONG mask) (D0, D1)
93 APTR SuperState() ()
94 void UserState(APTR sysStack) (D0)
95 struct Interrupt *SetIntVector(ULONG intNumber, struct Interrupt *interrupt) (D0, A1)
96 void AddIntServer(ULONG intNumber, struct Interrupt *interrupt) (D0, A1)
97 void RemIntServer(ULONG intNumber, struct Interrupt *interrupt) (D0, A1)
98 void Cause(struct Interrupt *softint) (A1)
99 APTR Allocate(struct MemHeader *freeList, ULONG byteSize) (A0, D0)
100 void Deallocate(struct MemHeader *freeList, APTR memoryBlock, ULONG byteSize) (A0, A1, D0)
101 APTR AllocMem(ULONG byteSize, ULONG requirements) (D0, D1)
102 APTR AllocAbs(ULONG byteSize, APTR location) (D0, A1)
103 void FreeMem(APTR memoryBlock, ULONG byteSize) (A1, D0)
104 ULONG AvailMem(ULONG attributes) (D1)
105 struct MemList *AllocEntry(struct MemList *entry) (A0)
106 void FreeEntry(struct MemList *entry) (A0)
107 void Insert(struct List *list, struct Node *node, struct Node *pred) (A0, A1, A2)
108 void AddHead(struct List *list, struct Node *node) (A0, A1)
109 void AddTail(struct List *list, struct Node *node) (A0, A1)
110 void Remove(struct Node *node) (A1)
111 struct Node *RemHead(struct List *list) (A0)
112 struct Node *RemTail(struct List *list) (A0)
113 void Enqueue(struct List *list, struct Node *node) (A0, A1)
114 struct Node *FindName(struct List *list, CONST_STRPTR name) (A0, A1)
115 APTR AddTask(struct Task *task, APTR initialPC, APTR finalPC) (A1, A2, A3)
116 void RemTask(struct Task *task) (A1)
117 struct Task *FindTask(CONST_STRPTR name) (A1)
118 BYTE SetTaskPri(struct Task *task, LONG priority) (A1, D0)
119 ULONG SetSignal(ULONG newSignals, ULONG signalSet) (D0, D1)
120 ULONG SetExcept(ULONG newSignals, ULONG signalSet) (D0, D1)
121 ULONG Wait(ULONG signalSet) (D0)
122 void Signal(struct Task *task, ULONG signalSet) (A1, D0)
123 BYTE AllocSignal(LONG signalNum) (D0)
124 void FreeSignal(LONG signalNum) (D0)
125 LONG AllocTrap(long trapNum) (D0)
126 void FreeTrap(long trapNum) (D0)
127 void AddPort(struct MsgPort *port) (A1)
128 void RemPort(struct MsgPort *port) (A1)
129 void PutMsg(struct MsgPort *port, struct Message *message) (A0, A1)
130 struct Message *GetMsg(struct MsgPort *port) (A0)
131 void ReplyMsg(struct Message *message) (A1)
132 struct Message *WaitPort(struct MsgPort *port) (A0)
133 struct MsgPort *FindPort(CONST_STRPTR name) (A1)
134 void AddLibrary(struct Library *library) (A1)
135 void RemLibrary(struct Library *library) (A1)
136 struct Library *OldOpenLibrary(UBYTE *libName) (A1)
137 void CloseLibrary(struct Library *library) (A1)
138 APTR SetFunction(struct Library *library, LONG funcOffset, APTR newFunction) (A1, A0, D0)
139 void SumLibrary(struct Library *library) (A1)
140 void AddDevice(struct Device *device) (A1)
141 void RemDevice(struct Device *device) (A1)
142 LONG OpenDevice(CONST_STRPTR devName, IPTR unitNumber, struct IORequest *iORequest, ULONG flags) (A0, D0, A1, D1)
143 void CloseDevice(struct IORequest *iORequest) (A1)
144 LONG DoIO(struct IORequest *iORequest) (A1)
145 void SendIO(struct IORequest *iORequest) (A1)
146 struct IORequest *CheckIO(struct IORequest *iORequest) (A1)
147 LONG WaitIO(struct IORequest *iORequest) (A1)
148 LONG AbortIO(struct IORequest *iORequest) (A1)
149 void AddResource(APTR resource) (A1)
150 void RemResource(APTR resource) (A1)
151 APTR OpenResource(CONST_STRPTR resName) (A1)
152 void RawIOInit() ()
153 LONG RawMayGetChar() ()
154 void RawPutChar(UBYTE chr) (D0)
155 APTR RawDoFmt(CONST_STRPTR FormatString, APTR DataStream, VOID_FUNC PutChProc, APTR PutChData) (A0, A1, A2, A3)
156 UWORD GetCC() ()
157 ULONG TypeOfMem(APTR address) (A1)
158 ULONG Procure(struct SignalSemaphore *sigSem, struct SemaphoreMessage *bidMsg) (A0, A1)
159 void Vacate(struct SignalSemaphore *sigSem, struct SemaphoreMessage *bidMsg) (A0, A1)
160 struct Library *OpenLibrary(CONST_STRPTR libName, ULONG version) (A1, D0)
161 .version 33
162 void InitSemaphore(struct SignalSemaphore *sigSem) (A0)
163 void ObtainSemaphore(struct SignalSemaphore *sigSem) (A0)
164 void ReleaseSemaphore(struct SignalSemaphore *sigSem) (A0)
165 ULONG AttemptSemaphore(struct SignalSemaphore *sigSem) (A0)
166 void ObtainSemaphoreList(struct List *sigSem) (A0)
167 void ReleaseSemaphoreList(struct List *sigSem) (A0)
168 struct SignalSemaphore *FindSemaphore(CONST_STRPTR name) (A1)
169 void AddSemaphore(struct SignalSemaphore *sigSem) (A1)
170 void RemSemaphore(struct SignalSemaphore *sigSem) (A1)
171 ULONG SumKickData() ()
172 void AddMemList(ULONG size, ULONG attributes, LONG pri, APTR base, STRPTR name) (D0, D1, D2, A0, A1)
173 void CopyMem(CONST_APTR source, APTR dest, ULONG size) (A0, A1, D0)
174 void CopyMemQuick(CONST_APTR source, APTR dest, ULONG size) (A0, A1, D0)
175 .version 36
176 void CacheClearU() ()
177 void CacheClearE(APTR address, IPTR length, ULONG caches) (A0, D0, D1)
178 ULONG CacheControl(ULONG cacheBits, ULONG cacheMask) (D0, D1)
179 APTR CreateIORequest(struct MsgPort *ioReplyPort, ULONG size) (A0, D0)
180 void DeleteIORequest(APTR iorequest) (A0)
181 struct MsgPort *CreateMsgPort() ()
182 void DeleteMsgPort(struct MsgPort *port) (A0)
183 void ObtainSemaphoreShared(struct SignalSemaphore *sigSem) (A0)
184 APTR AllocVec(ULONG byteSize, ULONG requirements) (D0, D1)
185 void FreeVec(APTR memoryBlock) (A1)
186 APTR CreatePool(ULONG requirements, ULONG puddleSize, ULONG threshSize) (D0, D1, D2)
187 void DeletePool(APTR poolHeader) (A0)
188 APTR AllocPooled(APTR poolHeader, ULONG memSize) (A0, D0)
189 void FreePooled(APTR poolHeader, APTR memory, ULONG memSize) (A0, A1, D0)
190 ULONG AttemptSemaphoreShared(struct SignalSemaphore *sigSem) (A0)
191 void ColdReboot() ()
192 void StackSwap(struct StackSwapStruct *sss) (A0)
193 .private
194 void ChildFree(ULONG tid) (D0)
195 ULONG ChildOrphan(ULONG tid) (D0)
196 ULONG ChildStatus(ULONG tid) (D0)
197 IPTR ChildWait(ULONG tid) (D0)
198 APTR CachePreDMA(APTR address, ULONG *length, ULONG flags) (A0, A1, D0)
199 .novararg
200 void CachePostDMA(APTR address, ULONG *length, ULONG flags) (A0, A1, D0)
201 .novararg
202 .version 39
203 void AddMemHandler(struct Interrupt *memHandler) (A1)
204 void RemMemHandler(struct Interrupt *memHandler) (A1)
205 ULONG ObtainQuickVector(APTR interruptCode) (A0)
206 .skip 1 # MorphOS: NewSetFunction()
207 .skip 1 # MorphOS: NewCreateLibrary()
208 IPTR NewStackSwap(struct StackSwapStruct *newStack, APTR function, struct StackSwapArgs *args) (A0, A1, A2)
209 APTR TaggedOpenLibrary(LONG tag) (D0)
210 ULONG ReadGayle() ()
211 .version 50
212 STRPTR VNewRawDoFmt(CONST_STRPTR FormatString, VOID_FUNC PutChProc, APTR PutChData, va_list VaListStream) (A0, A2, A3, A1)
213 .version 45
214 void NewMinList(struct MinList *ml) (A0)
215 .skip 1 # MorphOS: CacheInvalidInstArea(APTR Address, ULONG Size) (A0, D0)
216 .skip 1 # MorphOS: CacheInvalidDataArea(APTR Address, ULONG Size) (A0, D0)
217 .skip 1 # MorphOS: CacheFlushDataInstArea(APTR Address, ULONG Size) (A0, D0)
218 .version 45
219 struct AVLNode *AVL_AddNode(struct AVLNode **root, struct AVLNode *node, AVLNODECOMP func) (A0, A1, A2)
220 struct AVLNode *AVL_RemNodeByAddress(struct AVLNode **root, struct AVLNode *node) (A0, A1)
221 struct AVLNode *AVL_RemNodeByKey(struct AVLNode **root, AVLKey key, AVLKEYCOMP func) (A0, A1, A2)
222 struct AVLNode *AVL_FindNode(const struct AVLNode *root, AVLKey key, AVLKEYCOMP func) (A0, A1, A2)
223 struct AVLNode *AVL_FindPrevNodeByAddress(const struct AVLNode *node) (A0)
224 struct AVLNode *AVL_FindPrevNodeByKey(const struct AVLNode *root, AVLKey key, AVLKEYCOMP func) (A0, A1, A2)
225 struct AVLNode *AVL_FindNextNodeByAddress(const struct AVLNode *node) (A0)
226 struct AVLNode *AVL_FindNextNodeByKey(const struct AVLNode *node, AVLKey key, AVLKEYCOMP func) (A0, A1, A2)
227 struct AVLNode *AVL_FindFirstNode(const struct AVLNode *root) (A0)
228 struct AVLNode *AVL_FindLastNode(const struct AVLNode *root) (A0)
229 .version 50
230 .skip 1 # MorphOS: ULONG NewSetSystemAttrsA(APTR yData, ULONG Size, ULONG Type, struct TagItem *Tags ) (A0, D0, D1, A1)
231 struct Task *NewCreateTaskA(struct TagItem *tags) (A0)
232 .skip 1 # MorphOS: NewRawDoFmt()
233 .skip 1 # MorphOS: APTR AllocateAligned(struct MemHeader *memHeader, ULONG byteSize, ULONG alignSize, ULONG alignOffset) (base,sysv)
234 .skip 1 # MorphOS: APTR AllocMemAligned(ULONG byteSize, ULONG attributes, ULONG alignSize, ULONG alignOffset) (base,sysv)
235 .skip 1 # MorphOS: APTR AllocVecAligned(ULONG byteSize, ULONG attributes, ULONG alignSize, ULONG alignOffset) (base,sysv)
236 .skip 1 # MorphOS: AddExecNotify(struct Hook *hook) (base,sysv)
237 .skip 1 # MorphOS: RemExecNotify(struct Hook *hook) (base,sysv)
238 .skip 1 # MorphOS: struct Node *FindExecNode(ULONG type, CONST_STRPTR name) (D0, A0)
239 .skip 1 # MorphOS: APTR AddExecNodeA(APTR innode, struct TagItem *Tags) (A0, A1)
240 .skip 1 # MorphOS: APTR AllocVecDMA(ULONG byteSize, ULONG requirements) (D0, D1)
241 .skip 1 # MorphOS: VOID FreeVecDMA(APTR memoryBlock) (A1)
242 .skip 1 # MorphOS: APTR AllocPooledAligned(APTR poolHeader, ULONG byteSize, ULONG alignSize, ULONG alignOffset) (base,sysv)
243 .skip 1 # MorphOS: LONG AddResident(struct Resident *resident) (base,sysv)
244 struct Task *FindTaskByPID(ULONG processID) (D0)
245 BOOL AddResetCallback(struct Interrupt *resetCallback) (A0)
246 void RemResetCallback(struct Interrupt *resetCallback) (A0)
247 APTR AllocVecPooled(APTR pool, ULONG size) (D0, D1)
248 void FreeVecPooled(APTR pool, APTR memory) (D0, D1)
249 .skip 1 # MorphOS: void DumpTaskState(struct Task *task) (A0)
250 .skip 1 # MorphOS: void AddExecNotifyType(struct Hook *hook, LONG Type) (base,sysv)
251 ULONG ShutdownA(ULONG action) (D0)
252 .novararg
253 struct MemList *NewAllocEntry(struct MemList *entry, ULONG *return_flags) (A0, A1)
254 .skip 1 # MorphOS: ULONG AvailPool(APTR poolHeader, ULONG flags) (base,sysv)
255 APTR NewAddTask(struct Task *task, APTR initialPC, APTR finalPC, struct TagItem *tagList) (A1, A2, A3, A4)
256 # MorphOS functions follow:
257 .skip 1 # void PutMsgHead(struct MsgPort *port, struct Message *message) (base,sysv)
258 .skip 1 # ULONG NewGetTaskPIDAttrsA(ULONG pid, APTR data, ULONG dataSize, ULONG type, struct TagItem *tags) (D0, A0, D1, D2, A1)
259 .skip 1 # ULONG NewGetTaskPIDAttrsA(ULONG pid, APTR data, ULONG dataSize, ULONG type, struct TagItem *tags) (D0, A0, D1, D2, A1)
260 .version 51
261 LONG AllocTaskStorageSlot() ()
262 VOID FreeTaskStorageSlot(LONG slot) (D0)
263 APTR SaveTaskStorage() ()
264 void RestoreTaskStorage(APTR id) (A0) 
265 ##end functionlist