API docs / Open libraries / exec.library
API · Librariesexec.library jump table
Our open exec.library: 115 calls with the same LVOs and registers as AmigaOS 3.2's, checked against the NDK 3.2 .fd file.
exec.library's jump table, as OpenExec builds it: LVO, call, registers, and each call's core class (OPEN_LIBRARIES.md section 5): pure (no shared state, any core), locked (shared state behind its own lock), anchored (exec's own world on CPU0: tasks, interrupts, Forbid/Disable, the system lists). build-amiga.sh (with ../common/check_fd.py) checks this against the NDK 3.2 exec_lib.fd in the stove and stops on any difference. Written from exec's autodocs and the NDK's documented register use; the private slots carry the names the ROM study measured, for reference only. Aliases sharing an LVO (the MinList forms, NDK 3.2): InsertMinNode = Insert, AddHeadMinList = AddHead, AddTailMinList = AddTail, RemoveMinNode = Remove, RemHeadMinList = RemHead, RemTailMinList = RemTail. The tail after NewMinList: private slots up to -912 (33 private in all, as the ROM study counted in 3.2's SFD); check_fd.py accepts private slots the NDK leaves out, so the stove run settles how many there are.
| LVO | Call | Registers | Notes |
|---|---|---|---|
| -30 | Supervisor | a5 | anchored |
| -36 | private | none | anchored (ExitIntr) |
| -42 | private | none | anchored (Schedule) |
| -48 | private | none | anchored (Reschedule) |
| -54 | private | none | anchored (Switch) |
| -60 | private | none | anchored (Dispatch) |
| -66 | private | none | anchored (Exception) |
| -72 | InitCode | d0, d1 | anchored |
| -78 | InitStruct | a1, a2, d0 | pure |
| -84 | MakeLibrary | a0, a1, a2, d0, d1 | locked |
| -90 | MakeFunctions | a0, a1, a2 | pure |
| -96 | FindResident | a1 | pure |
| -102 | InitResident | a1, d1 | anchored |
| -108 | Alert | d7 | anchored |
| -114 | Debug | d0 | anchored |
| -120 | Disable | none | anchored |
| -126 | Enable | none | anchored |
| -132 | Forbid | none | anchored |
| -138 | Permit | none | anchored |
| -144 | SetSR | d0, d1 | anchored |
| -150 | SuperState | none | anchored |
| -156 | UserState | d0 | anchored |
| -162 | SetIntVector | d0, a1 | anchored |
| -168 | AddIntServer | d0, a1 | anchored |
| -174 | RemIntServer | d0, a1 | anchored |
| -180 | Cause | a1 | anchored |
| -186 | Allocate | a0, d0 | locked |
| -192 | Deallocate | a0, a1, d0 | locked |
| -198 | AllocMem | d0, d1 | locked |
| -204 | AllocAbs | d0, a1 | locked |
| -210 | FreeMem | a1, d0 | locked |
| -216 | AvailMem | d1 | locked |
| -222 | AllocEntry | a0 | locked |
| -228 | FreeEntry | a0 | locked |
| -234 | Insert | a0, a1, a2 | pure |
| -240 | AddHead | a0, a1 | pure |
| -246 | AddTail | a0, a1 | pure |
| -252 | Remove | a1 | pure |
| -258 | RemHead | a0 | pure |
| -264 | RemTail | a0 | pure |
| -270 | Enqueue | a0, a1 | pure |
| -276 | FindName | a0, a1 | pure |
| -282 | AddTask | a1, a2, a3 | anchored |
| -288 | RemTask | a1 | anchored |
| -294 | FindTask | a1 | anchored |
| -300 | SetTaskPri | a1, d0 | anchored |
| -306 | SetSignal | d0, d1 | anchored |
| -312 | SetExcept | d0, d1 | anchored |
| -318 | Wait | d0 | anchored |
| -324 | Signal | a1, d0 | anchored |
| -330 | AllocSignal | d0 | anchored |
| -336 | FreeSignal | d0 | anchored |
| -342 | AllocTrap | d0 | anchored |
| -348 | FreeTrap | d0 | anchored |
| -354 | AddPort | a1 | anchored |
| -360 | RemPort | a1 | anchored |
| -366 | PutMsg | a0, a1 | locked |
| -372 | GetMsg | a0 | locked |
| -378 | ReplyMsg | a1 | locked |
| -384 | WaitPort | a0 | anchored |
| -390 | FindPort | a1 | anchored |
| -396 | AddLibrary | a1 | anchored |
| -402 | RemLibrary | a1 | anchored |
| -408 | OldOpenLibrary | a1 | anchored |
| -414 | CloseLibrary | a1 | anchored |
| -420 | SetFunction | a1, a0, d0 | anchored |
| -426 | SumLibrary | a1 | locked |
| -432 | AddDevice | a1 | anchored |
| -438 | RemDevice | a1 | anchored |
| -444 | OpenDevice | a0, d0, a1, d1 | anchored |
| -450 | CloseDevice | a1 | anchored |
| -456 | DoIO | a1 | anchored |
| -462 | SendIO | a1 | anchored |
| -468 | CheckIO | a1 | locked |
| -474 | WaitIO | a1 | anchored |
| -480 | AbortIO | a1 | anchored |
| -486 | AddResource | a1 | anchored |
| -492 | RemResource | a1 | anchored |
| -498 | OpenResource | a1 | anchored |
| -504 | private | none | anchored (RawIOInit) |
| -510 | private | none | anchored (RawMayGetChar) |
| -516 | private | none | anchored (RawPutChar(d0)) |
| -522 | RawDoFmt | a0, a1, a2, a3 | pure |
| -528 | GetCC | none | pure |
| -534 | TypeOfMem | a1 | locked |
| -540 | Procure | a0, a1 | locked |
| -546 | Vacate | a0, a1 | locked |
| -552 | OpenLibrary | a1, d0 | anchored |
| -558 | InitSemaphore | a0 | pure |
| -564 | ObtainSemaphore | a0 | locked |
| -570 | ReleaseSemaphore | a0 | locked |
| -576 | AttemptSemaphore | a0 | locked |
| -582 | ObtainSemaphoreList | a0 | anchored |
| -588 | ReleaseSemaphoreList | a0 | anchored |
| -594 | FindSemaphore | a1 | anchored |
| -600 | AddSemaphore | a1 | anchored |
| -606 | RemSemaphore | a1 | anchored |
| -612 | SumKickData | none | anchored |
| -618 | AddMemList | d0, d1, d2, a0, a1 | locked |
| -624 | CopyMem | a0, a1, d0 | pure |
| -630 | CopyMemQuick | a0, a1, d0 | pure |
| -636 | CacheClearU | none | anchored |
| -642 | CacheClearE | a0, d0, d1 | anchored |
| -648 | CacheControl | d0, d1 | anchored |
| -654 | CreateIORequest | a0, d0 | locked |
| -660 | DeleteIORequest | a0 | locked |
| -666 | CreateMsgPort | none | anchored |
| -672 | DeleteMsgPort | a0 | anchored |
| -678 | ObtainSemaphoreShared | a0 | locked |
| -684 | AllocVec | d0, d1 | locked |
| -690 | FreeVec | a1 | locked |
| -696 | CreatePool | d0, d1, d2 | locked |
| -702 | DeletePool | a0 | locked |
| -708 | AllocPooled | a0, d0 | locked |
| -714 | FreePooled | a0, a1, d0 | locked |
| -720 | AttemptSemaphoreShared | a0 | locked |
| -726 | ColdReboot | none | anchored |
| -732 | StackSwap | a0 | anchored |
| -738 | private | none | anchored (ChildFree(d0)) |
| -744 | private | none | anchored (ChildOrphan(d0)) |
| -750 | private | none | anchored (ChildStatus(d0)) |
| -756 | private | none | anchored (ChildWait(d0)) |
| -762 | CachePreDMA | a0, a1, d0 | anchored |
| -768 | CachePostDMA | a0, a1, d0 | anchored |
| -774 | AddMemHandler | a1 | anchored |
| -780 | RemMemHandler | a1 | anchored |
| -786 | ObtainQuickVector | a0 | anchored |
| -792 | private | none | anchored |
| -798 | private | none | anchored |
| -804 | private | none | anchored |
| -810 | private | none | anchored |
| -816 | private | none | anchored |
| -822 | private | none | anchored |
| -828 | NewMinList | a0 | pure |
| -834 | private | none | anchored (reserved) |
| -840 | private | none | anchored (reserved) |
| -846 | private | none | anchored (reserved) |
| -852 | private | none | anchored (reserved) |
| -858 | private | none | anchored (reserved) |
| -864 | private | none | anchored (reserved) |
| -870 | private | none | anchored (reserved) |
| -876 | private | none | anchored (reserved) |
| -882 | private | none | anchored (reserved) |
| -888 | private | none | anchored (reserved) |
| -894 | private | none | anchored (reserved) |
| -900 | private | none | anchored (reserved) |
| -906 | private | none | anchored (reserved) |
| -912 | private | none | anchored (reserved) |