about summary refs log tree commit diff stats
path: root/html/archive/2.vm/fake-keyboard.png
Commit message (Expand)AuthorAgeFilesLines
* 5485 - promote SubX to top-levelKartik Agaram2019-07-271-0/+0
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
#include "message.h"
#include "process.h"
#include "fifobuffer.h"


void sendMesage(Thread* thread, SosoMessage* message) {
    Spinlock_Lock(&(thread->messageQueueLock));

    FifoBuffer_enqueue(thread->messageQueue, (uint8*)message, sizeof(SosoMessage));

    Spinlock_Unlock(&(thread->messageQueueLock));
}

uint32 getMessageQueueCount(Thread* thread) {
    int result = 0;

    Spinlock_Lock(&(thread->messageQueueLock));

    result = FifoBuffer_getSize(thread->messageQueue) / sizeof(SosoMessage);

    Spinlock_Unlock(&(thread->messageQueueLock));

    return result;
}

//returns remaining message count
int32 getNextMessage(Thread* thread, SosoMessage* message) {
    uint32 result = -1;

    Spinlock_Lock(&(thread->messageQueueLock));

    result = FifoBuffer_getSize(thread->messageQueue) / sizeof(SosoMessage);

    if (result > 0) {
        FifoBuffer_dequeue(thread->messageQueue, (uint8*)message, sizeof(SosoMessage));

        --result;
    }
    else {
        result = -1;
    }

    Spinlock_Unlock(&(thread->messageQueueLock));

    return result;
}