IOP OS
This is an old revision of this page, as edited by Hallowizer (talk | contribs) at 01:16, 18 June 2022. It may differ significantly from the current revision. |
IOP OS is a set of functions in IOS's networking code that convert Revolution OS calls to IOS syscalls; for example, OSAlloc is implemented as a call to IOS_Alloc.
Toggling interrupts
Disabling interrupts is simulated by locking a mutex (but not an OSMutex
) implemented as a message queue and changing the current thread priority to 0x38. While this does not completely prevent concurrent execution within the module,[check] it is enough for most uses of OSDisableInterrupts
.
Threads
Threads are implemented as a proxy to IOS threads. Because of this, OSThreadQueue
is only used for suspended queues.
struct OSThread { int threadId; int priority; void *threadSpecific; struct OSThread *next; } struct OSThreadQueue { struct OSThread *head; struct OSThread *tail; }
Mutexes
Mutexes are implemented as message queues that are read from to lock the mutex and sent to to unlock the mutex.
struct OSMutex { int mqid; int mq; int count; int owner; // thread id }