ISIX-RTOS - small operating system for ARM microcontrollers 1.2
|
#include <prv/list.h>
#include <isix/config.h>
#include <isix/semaphore.h>
#include <isix/scheduler.h>
#include <isix/types.h>
Go to the source code of this file.
#define TASK_DEAD (1<<4) |
Definition at line 24 of file prv/scheduler.h.
Referenced by isix_task_delete().
#define TASK_MULTIPLE_WKUP (1<<7) |
Definition at line 28 of file prv/scheduler.h.
Referenced by isix_wait_for_multiple_objects(), isixp_schedule_time(), and isixp_wakeup_multiple().
#define TASK_READY (1<<0) |
Definition at line 20 of file prv/scheduler.h.
Referenced by isix_sem_wait(), isix_task_create(), isix_task_delete(), isix_wait_for_multiple_objects(), isixp_schedule(), isixp_schedule_time(), isixp_sem_signal(), isixp_task_change_prio(), and isixp_wakeup_multiple().
#define TASK_RUNNING (1<<3) |
Definition at line 23 of file prv/scheduler.h.
Referenced by isix_sem_wait(), isix_wait_for_multiple_objects(), isixp_schedule(), and isixp_task_change_prio().
#define TASK_SEM_WKUP (1<<5) |
Definition at line 25 of file prv/scheduler.h.
Referenced by isix_sem_wait(), isixp_schedule_time(), and isixp_sem_signal().
#define TASK_SLEEPING (1<<1) |
Definition at line 21 of file prv/scheduler.h.
Referenced by isix_sem_wait(), isix_task_delete(), isix_wait_for_multiple_objects(), isixp_schedule_time(), isixp_sem_signal(), and isixp_wakeup_multiple().
#define TASK_WAITING (1<<2) |
Definition at line 22 of file prv/scheduler.h.
Referenced by isix_sem_wait(), isix_task_delete(), isixp_schedule_time(), isixp_sem_signal(), and isixp_task_change_prio().
#define TASK_WAITING_MULTIPLE (1<<6) |
Definition at line 27 of file prv/scheduler.h.
Referenced by isix_task_delete(), isix_wait_for_multiple_objects(), isixp_schedule_time(), and isixp_wakeup_multiple().
typedef struct task_ready_struct task_ready_t |
void isixp_add_task_to_delete_list | ( | struct task_struct * | task | ) |
Referenced by isix_task_delete().
int isixp_add_task_to_ready_list | ( | struct task_struct * | task | ) |
Referenced by isix_task_create(), isixp_schedule_time(), isixp_sem_signal(), isixp_task_change_prio(), and isixp_wakeup_multiple().
void isixp_add_task_to_sem_list | ( | list_entry_t * | sem_list, |
struct task_struct * | task | ||
) |
Referenced by isix_sem_wait(), and isixp_task_change_prio().
void isixp_add_task_to_waiting_list | ( | struct task_struct * | task, |
tick_t | timeout | ||
) |
Referenced by isix_sem_wait(), and isix_wait_for_multiple_objects().
void isixp_delete_task_from_ready_list | ( | struct task_struct * | task | ) |
Referenced by isix_sem_wait(), isix_task_delete(), isix_wait_for_multiple_objects(), and isixp_task_change_prio().
void isixp_enter_critical | ( | void | ) |
Definition at line 96 of file scheduler.c.
References critical_count, and isix::port_set_interrupt_mask().
Referenced by add_vtimer_to_list(), cleanup_tasks(), isix_bug(), isix_fifo_destroy(), isix_fifo_read(), isix_fifo_read_isr(), isix_fifo_write(), isix_fifo_write_isr(), isix_sem_destroy(), isix_sem_get_isr(), isix_sem_getval(), isix_sem_setval(), isix_sem_wait(), isix_systime_handler(), isix_task_create(), isix_task_delete(), isix_vtimer_destroy(), isix_vtimer_start(), isix_wait_for_multiple_objects(), isixp_add_task_to_delete_list(), isixp_add_task_to_ready_list(), isixp_add_task_to_sem_list(), isixp_add_task_to_waiting_list(), isixp_delete_from_multiple_wait_list(), isixp_delete_task_from_ready_list(), isixp_schedule(), isixp_sem_signal(), isixp_task_change_prio(), and isixp_wakeup_multiple_waiting_tasks().
void isixp_exit_critical | ( | void | ) |
Definition at line 107 of file scheduler.c.
References critical_count, and isix::port_clear_interrupt_mask().
Referenced by add_vtimer_to_list(), cleanup_tasks(), isix_fifo_destroy(), isix_fifo_read(), isix_fifo_read_isr(), isix_fifo_write(), isix_fifo_write_isr(), isix_sem_destroy(), isix_sem_get_isr(), isix_sem_getval(), isix_sem_setval(), isix_sem_wait(), isix_systime_handler(), isix_task_create(), isix_task_delete(), isix_vtimer_destroy(), isix_vtimer_start(), isix_wait_for_multiple_objects(), isixp_add_task_to_delete_list(), isixp_add_task_to_ready_list(), isixp_add_task_to_sem_list(), isixp_add_task_to_waiting_list(), isixp_delete_from_multiple_wait_list(), isixp_delete_task_from_ready_list(), isixp_schedule(), isixp_sem_signal(), isixp_task_change_prio(), and isixp_wakeup_multiple_waiting_tasks().
void isixp_schedule | ( | void | ) |
Definition at line 118 of file scheduler.c.
References task_struct::inode, isix_bug(), isix_current_task, isix_printk, isixp_enter_critical(), isixp_exit_critical(), list_delete(), list_get_first, list_insert_end(), task_struct::prio, task_ready_struct::prio, task_struct::prio_elem, task_struct::state, task_ready_struct::task_list, TASK_READY, and TASK_RUNNING.
Referenced by pend_svc_isr_vector(), port_start_first_task(), and port_yield().
void isixp_schedule_time | ( | void | ) |
Definition at line 149 of file scheduler.c.
References isix_bug(), isix_printk, isix_scheduler_running, isixp_add_task_to_ready_list(), isixp_vtimer_handle_time(), jiffies, list_delete(), list_get_first, list_isempty, NULL, p_waiting_task, pov_waiting_task, TASK_MULTIPLE_WKUP, TASK_READY, TASK_SEM_WKUP, TASK_SLEEPING, TASK_WAITING, and TASK_WAITING_MULTIPLE.
Referenced by isix_systime_handler().
unsigned long* isixp_task_init_stack | ( | unsigned long * | sp, |
task_func_ptr_t | pfun, | ||
void * | param | ||
) |
Definition at line 84 of file arm-cm3/port_scheduler.c.
References INITIAL_XPSR, NULL, and STACK_SIZE.
Referenced by isix_task_create().
struct task_struct* volatile isix_current_task |
Definition at line 23 of file scheduler.c.
Referenced by isix_sem_wait(), isix_task_create(), isix_task_delete(), isix_task_self(), isix_wait_for_multiple_objects(), isixp_schedule(), isixp_sem_signal(), isixp_task_change_prio(), port_start_first_task(), port_yield(), and timer_interrupt().
volatile bool isix_scheduler_running |
Definition at line 19 of file scheduler.c.
Referenced by isix_is_scheduler_active(), isix_start_scheduler(), isix_systime_handler(), isix_task_create(), isix_wait(), isixp_schedule_time(), mem_lock(), mem_unlock(), and timer_interrupt().