ISIX-RTOS - small operating system for ARM microcontrollers 1.2
|
#include <isix/config.h>
#include <isix/types.h>
#include <isix/semaphore.h>
#include <prv/semaphore.h>
#include <prv/fifo.h>
#include <isix/multiple_objects.h>
#include <prv/list.h>
#include <prv/scheduler.h>
#include <isix/error.h>
#include <prv/multiple_objects.h>
#include <isix/printk.h>
Go to the source code of this file.
Defines | |
#define | ISIX_DEBUG_MULTIOBJECTS ISIX_DBG_OFF |
Functions | |
void | ixixp_multiple_objects_init (void) |
int | isixp_wakeup_multiple_waiting_tasks (const sem_t *sem, int(*wkup_fun)(task_t *)) |
void | isixp_delete_from_multiple_wait_list (const task_t *task) |
int | isix_wait_for_multiple_objects (size_t count, tick_t timeout, const ihandle_t *hwnd) |
Variables | |
static list_entry_t | waiting_objects |
#define ISIX_DEBUG_MULTIOBJECTS ISIX_DBG_OFF |
Definition at line 24 of file multiple_objects.c.
int isix_wait_for_multiple_objects | ( | size_t | count, |
tick_t | timeout, | ||
const ihandle_t * | hwnd | ||
) |
Definition at line 99 of file multiple_objects.c.
References IHANDLE_T_FIFO, IHANDLE_T_SEM, multiple_obj::inode, isix_bug(), isix_current_task, isix::ISIX_EINVARG, isix::ISIX_EOK, isix::ISIX_ETIMEOUT, isix_printk, isix::isix_yield(), isixp_add_task_to_waiting_list(), isixp_delete_task_from_ready_list(), isixp_enter_critical(), isixp_exit_critical(), task_struct::jiffies, list_delete(), list_insert_end(), list::next, NULL, task_struct::state, TASK_MULTIPLE_WKUP, TASK_READY, TASK_RUNNING, TASK_SLEEPING, and TASK_WAITING_MULTIPLE.
void isixp_delete_from_multiple_wait_list | ( | const task_t * | task | ) |
Definition at line 83 of file multiple_objects.c.
References multiple_obj::inode, isixp_enter_critical(), isixp_exit_critical(), list_delete(), list_for_each_entry, and multiple_obj::task_id.
Referenced by isix_task_delete().
int isixp_wakeup_multiple_waiting_tasks | ( | const sem_t * | sem, |
int(*)(task_t *) | wkup_fun | ||
) |
Definition at line 49 of file multiple_objects.c.
References IHANDLE_T_FIFO, IHANDLE_T_SEM, multiple_obj::ihwnd, multiple_obj::ihwnd_len, isix_get_min_priority(), isixp_enter_critical(), isixp_exit_critical(), list_for_each_entry, and multiple_obj::task_id.
Referenced by isixp_sem_signal().
void ixixp_multiple_objects_init | ( | void | ) |
Definition at line 42 of file multiple_objects.c.
References list_init().
Referenced by isix_init().
list_entry_t waiting_objects [static] |
Definition at line 38 of file multiple_objects.c.