void OSInitMessageQueueEx(OSMessageQueue *queue, OSMessage *messages, int32_t size, const char *name) { queue->tag = OSMessageQueue::Tag; queue->name = name; queue->messages = messages; queue->size = size; queue->first = 0; queue->used = 0; OSInitThreadQueueEx(&queue->sendQueue, queue); OSInitThreadQueueEx(&queue->recvQueue, queue); }
void OSInitCondEx(OSCondition *condition, const char *name) { condition->tag = OSCondition::Tag; condition->name = name; OSInitThreadQueueEx(&condition->queue, condition); }
/** * Initialise an alarm structure. */ void OSCreateAlarmEx(OSAlarm *alarm, const char *name) { memset(alarm, 0, sizeof(OSAlarm)); alarm->tag = OSAlarm::Tag; alarm->name = name; OSInitThreadQueueEx(&alarm->threadQueue, alarm); }
void OSInitSemaphoreEx(OSSemaphore *semaphore, int32_t count, char *name) { semaphore->tag = OSSemaphore::Tag; semaphore->name = name; semaphore->count = count; OSInitThreadQueueEx(&semaphore->queue, semaphore); }
/** * Initialise a condition variable structure with a name. */ void OSInitCondEx(virt_ptr<OSCondition> condition, virt_ptr<const char> name) { condition->tag = OSCondition::Tag; condition->name = name; OSInitThreadQueueEx(virt_addrof(condition->queue), condition); }
/** * Initialises an event structure. */ void OSInitEventEx(OSEvent *event, bool value, OSEventMode mode, char *name) { event->tag = OSEvent::Tag; event->mode = mode; event->value = value; event->name = name; OSInitThreadQueueEx(&event->queue, event); }
void OSInitMutexEx(OSMutex *mutex, const char *name) { mutex->tag = OSMutex::Tag; mutex->name = name; mutex->owner = nullptr; mutex->count = 0; OSInitThreadQueueEx(&mutex->queue, mutex); OSInitQueueLink(&mutex->link); }
/** * Initialise a mutex structure with a name. */ void OSInitMutexEx(virt_ptr<OSMutex> mutex, virt_ptr<const char> name) { mutex->tag = OSMutex::Tag; mutex->name = name; mutex->owner = nullptr; mutex->count = 0; OSInitThreadQueueEx(virt_addrof(mutex->queue), mutex); MutexQueue::initLink(mutex); }
/** * Initialise an alarm structure. */ void OSCreateAlarmEx(OSAlarm *alarm, const char *name) { // Holding the alarm here is neccessary since its valid to call // Create on an already active alarm, as long as its not set. internal::acquireIdLock(sAlarmLock, alarm); memset(alarm, 0, sizeof(OSAlarm)); alarm->tag = OSAlarm::Tag; alarm->name = name; OSInitThreadQueueEx(&alarm->threadQueue, alarm); internal::releaseIdLock(sAlarmLock, alarm); }