base/sched/sys.c File Reference

Include dependency graph for sys.c:

Go to the source code of this file.

Defines

#define MAX_FUN_EXT   16
#define USRLAND_MAX_MSG_SIZE   128
#define lxrt_sem_delete(sem)   GENERIC_DELETE(SEM_DELETE, sem)
#define lxrt_named_sem_delete(sem)   GENERIC_DELETE(NAMED_SEM_DELETE, sem)
#define lxrt_rwl_delete(rwl)   GENERIC_DELETE(RWL_DELETE, rwl)
#define lxrt_named_rwl_delete(rwl)   GENERIC_DELETE(NAMED_RWL_DELETE, rwl)
#define lxrt_spl_delete(spl)   GENERIC_DELETE(SPL_DELETE, spl)
#define lxrt_named_spl_delete(spl)   GENERIC_DELETE(NAMED_SPL_DELETE, spl)
#define lxrt_mbx_delete(mbx)   GENERIC_DELETE(MBX_DELETE, mbx)
#define lxrt_named_mbx_delete(mbx)   GENERIC_DELETE(NAMED_MBX_DELETE, mbx)
#define SYSW_DIAG_MSG(x)
#define larg   ((struct arg *)arg)

Functions

int get_min_tasks_cpuid (void)
int set_rtext (RT_TASK *task, int priority, int uses_fpu, void(*signal)(void), unsigned int cpuid, struct task_struct *relink)
int clr_rtext (RT_TASK *task)
void steal_from_linux (RT_TASK *task)
void give_back_to_linux (RT_TASK *task, int)
void rt_schedule_soft (RT_TASK *task)
void * rt_get_lxrt_fun_entry (int index)
static void lxrt_typed_sem_init (SEM *sem, int count, int type)
static int lxrt_typed_mbx_init (MBX *mbx, int bufsize, int type)
static int lxrt_typed_rwl_init (RWL *rwl, int type)
static int lxrt_spl_init (SPL *spl)
static int lxrt_Proxy_detach (pid_t pid)
static int GENERIC_DELETE (int index, void *object)
void rt_schedule_soft_tail (RT_TASK *, int)
static void lxrt_fun_call (RT_TASK *task, void *fun, int narg, long *arg)
static void lxrt_fun_call_wbuf (RT_TASK *rt_task, void *fun, int narg, long *arg, unsigned long type)
void put_current_on_cpu (int cpuid)
static RT_TASK__task_init (unsigned long name, int prio, int stack_size, int max_msg_size, int cpus_allowed)
static int __task_delete (RT_TASK *rt_task)
static void set_lxrt_perm (int perm)
void rt_make_hard_real_time (RT_TASK *task)
void rt_make_soft_real_time (RT_TASK *task)
static long long handle_lxrt_request (unsigned int lxsrq, long *arg, RT_TASK *task)
static void check_to_soften_harden (RT_TASK *task)
long long rtai_lxrt_invoke (unsigned int lxsrq, void *arg)
int set_rt_fun_ext_index (struct rt_fun_entry *fun, int idx)
void reset_rt_fun_ext_index (struct rt_fun_entry *fun, int idx)
void linux_process_termination (void)
void init_fun_ext (void)
 EXPORT_SYMBOL (rt_make_hard_real_time)
 EXPORT_SYMBOL (rt_make_soft_real_time)

Variables

static struct rt_fun_entry * rt_fun_ext [MAX_FUN_EXT]


Define Documentation

#define larg   ((struct arg *)arg)

Referenced by handle_lxrt_request().

#define lxrt_mbx_delete ( mbx   )     GENERIC_DELETE(MBX_DELETE, mbx)

Definition at line 115 of file sys.c.

Referenced by handle_lxrt_request(), and linux_process_termination().

#define lxrt_named_mbx_delete ( mbx   )     GENERIC_DELETE(NAMED_MBX_DELETE, mbx)

Definition at line 116 of file sys.c.

#define lxrt_named_rwl_delete ( rwl   )     GENERIC_DELETE(NAMED_RWL_DELETE, rwl)

Definition at line 112 of file sys.c.

#define lxrt_named_sem_delete ( sem   )     GENERIC_DELETE(NAMED_SEM_DELETE, sem)

Definition at line 110 of file sys.c.

#define lxrt_named_spl_delete ( spl   )     GENERIC_DELETE(NAMED_SPL_DELETE, spl)

Definition at line 114 of file sys.c.

#define lxrt_rwl_delete ( rwl   )     GENERIC_DELETE(RWL_DELETE, rwl)

Definition at line 111 of file sys.c.

Referenced by handle_lxrt_request(), and linux_process_termination().

#define lxrt_sem_delete ( sem   )     GENERIC_DELETE(SEM_DELETE, sem)

Definition at line 109 of file sys.c.

Referenced by handle_lxrt_request(), and linux_process_termination().

#define lxrt_spl_delete ( spl   )     GENERIC_DELETE(SPL_DELETE, spl)

Definition at line 113 of file sys.c.

Referenced by handle_lxrt_request(), and linux_process_termination().

#define MAX_FUN_EXT   16

Definition at line 52 of file sys.c.

Referenced by reset_rt_fun_ext_index(), and set_rt_fun_ext_index().

#define SYSW_DIAG_MSG (  ) 

Definition at line 306 of file sys.c.

#define USRLAND_MAX_MSG_SIZE   128

Definition at line 58 of file sys.c.

Referenced by __task_init().


Function Documentation

static int __task_delete ( RT_TASK rt_task  )  [static]

Definition at line 272 of file sys.c.

References clr_rtext(), current, give_back_to_linux(), rt_drg_on_adr(), rt_free(), RT_SCHED_READY, rt_task_masked_unblock(), RTE_HIGERR, TSKEXT0, and TSKEXT1.

Referenced by handle_lxrt_request().

Here is the call graph for this function:

static RT_TASK* __task_init ( unsigned long  name,
int  prio,
int  stack_size,
int  max_msg_size,
int  cpus_allowed 
) [inline, static]

Definition at line 203 of file sys.c.

References clr_rtext(), current, ffnz(), menu::flags, get_min_tasks_cpuid(), IS_TASK, put_current_on_cpu(), rt_free(), rt_get_adr(), rt_malloc(), rt_register(), RT_SCHED_LOWEST_PRIORITY, set_rtext(), TSKEXT0, and USRLAND_MAX_MSG_SIZE.

Referenced by handle_lxrt_request().

Here is the call graph for this function:

static void check_to_soften_harden ( RT_TASK task  )  [inline, static]

Definition at line 654 of file sys.c.

References current, FORCE_SOFT, give_back_to_linux(), rt_printk(), steal_from_linux(), SYSW_DIAG_MSG, task, and unlikely.

Referenced by rtai_lxrt_invoke().

Here is the call graph for this function:

int clr_rtext ( RT_TASK task  ) 

Definition at line 1158 of file sched.c.

References frstk_srq, MAX_FRESTK_SRQ, rt_pend_linux_srq(), RT_SCHED_DELAYED, RT_SCHED_LINUX_PRIORITY, RT_SCHED_MBXSUSP, RT_SCHED_READY, RT_SCHED_RETURN, RT_SCHED_RPC, RT_SCHED_SEMAPHORE, RT_SCHED_SEND, rt_schedule(), rt_smp_fpu_task, rt_smp_linux_task, RTP_OBJREM, sched_sem_signal(), and task.

Here is the call graph for this function:

EXPORT_SYMBOL ( rt_make_soft_real_time   ) 

EXPORT_SYMBOL ( rt_make_hard_real_time   ) 

static int GENERIC_DELETE ( int  index,
void *  object 
) [inline, static]

Definition at line 104 of file sys.c.

References rt_get_lxrt_fun_entry(), and RTAI_SYSCALL_MODE.

Here is the call graph for this function:

int get_min_tasks_cpuid ( void   ) 

Definition at line 214 of file sched.c.

void give_back_to_linux ( RT_TASK task,
int   
)

Definition at line 2246 of file sched.c.

References hal_schedule_back_root, pend_wake_up_hts, rt_schedule(), and rtai_set_linux_task_priority().

Referenced by __task_delete(), check_to_soften_harden(), handle_lxrt_request(), kthread_fun(), lxrt_handle_trap(), lxrt_intercept_exit(), lxrt_intercept_syscall_prologue(), and rt_make_soft_real_time().

Here is the call graph for this function:

static long long handle_lxrt_request ( unsigned int  lxsrq,
long *  arg,
RT_TASK task 
) [inline, static]

Definition at line 352 of file sys.c.

References __task_delete(), __task_init(), clear_lnxtsk_uses_fpu, current, flags, FORCE_SOFT, FORCE_TASK_SOFT, GET_EXECTIME, GET_TIMEORIG, GET_USP_FLAGS, GET_USP_FLG_MSK, give_back_to_linux(), HRT_USE_FPU, INDX, init_fpu, IS_HARD, IS_MBX, IS_SEM, larg, likely, LINUX_SERVER_INIT, lxrt_fun_call(), lxrt_fun_call_wbuf(), LXRT_GET_ADR, LXRT_GET_NAME, lxrt_mbx_delete, LXRT_MBX_DELETE, LXRT_MBX_INIT, lxrt_rwl_delete, LXRT_RWL_DELETE, LXRT_RWL_INIT, lxrt_sem_delete, LXRT_SEM_DELETE, LXRT_SEM_INIT, lxrt_spl_delete, LXRT_SPL_DELETE, lxrt_spl_init(), LXRT_SPL_INIT, LXRT_TASK_DELETE, LXRT_TASK_INIT, lxrt_typed_mbx_init(), lxrt_typed_rwl_init(), lxrt_typed_sem_init(), MAKE_HARD_RT, MAKE_SOFT_RT, MAX_LXRT_FUN, NARG, NONROOT_HRT, PRINT_TO_SCREEN, PRINTK, rdtsc, RT_BUDDY, rt_do_force_soft(), rt_drg_on_adr(), rt_free(), rt_fun_ext, rt_get_adr(), rt_get_name(), rt_gettimeorig(), rt_make_hard_real_time(), rt_make_soft_real_time(), rt_malloc(), rt_printk(), rt_register(), rtai_print_to_screen(), rtai_set_linux_task_priority(), RTAI_SYSCALL_MODE, set_lxrt_perm(), SET_USP_FLAGS, SET_USP_FLG_MSK, SRQ, srq, steal_from_linux(), task, TSKEXT0, TSKEXT1, and unlikely.

Referenced by rtai_lxrt_invoke().

Here is the call graph for this function:

void init_fun_ext ( void   ) 

Definition at line 772 of file sys.c.

References rt_fun_ext, and rt_fun_lxrt.

Referenced by lxrt_init().

void linux_process_termination ( void   ) 

Definition at line 707 of file sys.c.

References rt_registry_entry::adr, current, IS_MBX, is_process_registered(), IS_PRX, IS_RWL, IS_SEM, IS_SPL, IS_TASK, lxrt_mbx_delete, lxrt_Proxy_detach(), lxrt_rwl_delete, lxrt_sem_delete, lxrt_spl_delete, max_slots, rt_registry_entry::name, rt_drg_on_name_cnt(), rt_free(), rt_get_registry_slot(), rt_printk(), rt_registry_entry::tsk, and rt_registry_entry::type.

Referenced by lxrt_intercept_exit().

Here is the call graph for this function:

static void lxrt_fun_call ( RT_TASK task,
void *  fun,
int  narg,
long *  arg 
) [inline, static]

Definition at line 119 of file sys.c.

References likely, rt_schedule_soft(), rt_schedule_soft_tail(), RTAI_SYSCALL_MODE, task, and unlikely.

Referenced by handle_lxrt_request(), and lxrt_fun_call_wbuf().

Here is the call graph for this function:

static void lxrt_fun_call_wbuf ( RT_TASK rt_task,
void *  fun,
int  narg,
long *  arg,
unsigned long  type 
) [inline, static]

Definition at line 134 of file sys.c.

References lxrt_fun_call(), rt_free(), and rt_malloc().

Referenced by handle_lxrt_request().

Here is the call graph for this function:

static int lxrt_Proxy_detach ( pid_t  pid  )  [inline, static]

Definition at line 99 of file sys.c.

References PROXY_DETACH, rt_get_lxrt_fun_entry(), and RTAI_SYSCALL_MODE.

Referenced by linux_process_termination().

Here is the call graph for this function:

static int lxrt_spl_init ( SPL spl  )  [inline, static]

Definition at line 94 of file sys.c.

References rt_get_lxrt_fun_entry(), RTAI_SYSCALL_MODE, and SPL_INIT.

Referenced by handle_lxrt_request().

Here is the call graph for this function:

static int lxrt_typed_mbx_init ( MBX mbx,
int  bufsize,
int  type 
) [inline, static]

Definition at line 84 of file sys.c.

References rt_get_lxrt_fun_entry(), RTAI_SYSCALL_MODE, and TYPED_MBX_INIT.

Referenced by handle_lxrt_request().

Here is the call graph for this function:

static int lxrt_typed_rwl_init ( RWL rwl,
int  type 
) [inline, static]

Definition at line 89 of file sys.c.

References rt_get_lxrt_fun_entry(), RTAI_SYSCALL_MODE, and RWL_INIT.

Referenced by handle_lxrt_request().

Here is the call graph for this function:

static void lxrt_typed_sem_init ( SEM sem,
int  count,
int  type 
) [inline, static]

Definition at line 79 of file sys.c.

References rt_get_lxrt_fun_entry(), RTAI_SYSCALL_MODE, and TYPED_SEM_INIT.

Referenced by handle_lxrt_request().

Here is the call graph for this function:

void put_current_on_cpu ( int  cpuid  ) 

Definition at line 226 of file sched.c.

References current, task, and TSKEXT0.

Referenced by __task_init(), kthread_fun(), kthread_m(), and set_rtext().

void reset_rt_fun_ext_index ( struct rt_fun_entry *  fun,
int  idx 
)

Definition at line 700 of file sys.c.

References MAX_FUN_EXT, and rt_fun_ext.

Referenced by __rtai_tasklets_exit(), __rtai_wd_exit(), and unregister_lxrt_fifos_support().

void* rt_get_lxrt_fun_entry ( int  index  ) 

void rt_make_hard_real_time ( RT_TASK task  ) 

Definition at line 334 of file sys.c.

References steal_from_linux(), and task.

Here is the call graph for this function:

void rt_make_soft_real_time ( RT_TASK task  ) 

Definition at line 341 of file sys.c.

References give_back_to_linux(), and task.

Here is the call graph for this function:

void rt_schedule_soft ( RT_TASK task  ) 

Definition at line 1955 of file sched.c.

References _rt_schedule_soft_tail(), current, enq_soft_ready_task, LOCK_LINUX, RT_SCHED_READY, and rt_smp_current.

Here is the call graph for this function:

void rt_schedule_soft_tail ( RT_TASK ,
int   
)

Definition at line 1978 of file sched.c.

References _rt_schedule_soft_tail().

Referenced by lxrt_fun_call().

Here is the call graph for this function:

long long rtai_lxrt_invoke ( unsigned int  lxsrq,
void *  arg 
)

Definition at line 676 of file sys.c.

References check_to_soften_harden(), current, handle_lxrt_request(), likely, linux_syscalls_list::retval, task, and TSKEXT0.

Here is the call graph for this function:

static void set_lxrt_perm ( int  perm  )  [inline, static]

Definition at line 323 of file sys.c.

References current.

Referenced by handle_lxrt_request().

int set_rt_fun_ext_index ( struct rt_fun_entry *  fun,
int  idx 
)

Definition at line 691 of file sys.c.

References MAX_FUN_EXT, and rt_fun_ext.

Referenced by __rtai_tasklets_init(), __rtai_wd_init(), and register_lxrt_fifos_support().

int set_rtext ( RT_TASK task,
int  priority,
int  uses_fpu,
void(*)(void)  signal,
unsigned int  cpuid,
struct task_struct *  relink 
)

Definition at line 244 of file sched.c.

References atomic_inc, current, flags, lxrt_wdog_task, NR_RT_CPUS, put_current_on_cpu(), rt_printk(), RT_SCHED_HIGHEST_PRIORITY, RT_SCHED_READY, RT_SCHED_SUSPENDED, RT_TIME_END, RTAI_NR_TRAPS, task, TSKEXT0, and TSKEXT1.

Here is the call graph for this function:

void steal_from_linux ( RT_TASK task  ) 

Definition at line 2205 of file sched.c.

References lnxtsk_uses_fpu, rdtsc, restore_fpu, RT_SCHED_READY, rtai_cli, rtai_sti, and wake_up_sth.

Referenced by check_to_soften_harden(), handle_lxrt_request(), kthread_fun(), lxrt_intercept_syscall_epilogue(), lxrt_intercept_syscall_prologue(), and rt_make_hard_real_time().


Variable Documentation

struct rt_fun_entry* rt_fun_ext[MAX_FUN_EXT] [static]

Definition at line 53 of file sys.c.

Referenced by handle_lxrt_request(), init_fun_ext(), reset_rt_fun_ext_index(), and set_rt_fun_ext_index().


Generated on Tue Feb 2 17:48:14 2010 for RTAI API by  doxygen 1.4.7