⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 message.c

📁 KaOS is a real-time operating system that has been implemented with the basic real-time constraints
💻 C
字号:
os_message* CreateMessage(void* message)
{
    os_message* temp_message;

    temp_message = (os_thread*)g_freemessages;

    if (temp_message == NULL) return -1;

    // pop a free thread from the list
    g_freemessages = temp_message->next;

    // push the free thread on the used threads list
    temp_message->next = g_usedmessages;
    g_usedmessages = temp_message;

    temp_message->message = message;

    return temp_message;
}
void FreeMessage(os_message* message)
{
    // message should always equal g_usedmessage since its a queue
    g_usedmessages = message->next;

    message->next = g_freemessages;
    g_freemessages = message;
}
void SendMessage(os_thread* thread, void* message)
{
    os_message* temp_message;

    if (thread != NULL)
    {
        if (thread->message == NULL)
        {
            thread->message = CreateMessage(message);
            temp_message = thread->message;
        }
        else
        {
            temp_message = thread->message;
            while (temp_message->next != NULL)
            {
                temp_message = temp_message->next;
            }
            temp_message->next = CreateMessage(message);
        }
    }
}
void* ReceiveMessage(os_thread* thread)
{
    os_message* temp_message;
    void* msgVal;

    if (thread != NULL)
    {
        if (thread->message != NULL)
        {
            temp_message = thread->message;
            msgVal = temp_message->message;

            thread->message = temp_message->next;
            FreeMessage(temp_message);

            return msgVal;
        }
    }
    return NULL;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -