base/wd/wd.c File Reference

#include <linux/module.h>
#include <linux/init.h>
#include <linux/version.h>
#include <asm/io.h>
#include <asm/rtai.h>
#include <rtai_sched.h>
#include <rtai_wd.h>

Include dependency graph for wd.c:

Include dependency graph

Go to the source code of this file.

Defines

#define DBUG(x...)
#define MY_ALLOC
#define BAD_TASK_MAX   100

Functions

 MODULE_PARM (TickPeriod,"i")
 MODULE_PARM (wd_OneShot,"i")
 MODULE_PARM (Grace,"i")
 MODULE_PARM (Safety,"i")
 MODULE_PARM (Policy,"i")
 MODULE_PARM (Stretch,"i")
 MODULE_PARM (Slip,"i")
 MODULE_PARM (Limit,"i")
int rt_wdset_grace (int new)
int rt_wdset_gracediv (int new)
int rt_wdset_safety (int new)
wd_policy rt_wdset_policy (wd_policy new)
int rt_wdset_slip (int new)
int rt_wdset_stretch (int new)
int rt_wdset_limit (int new)
BAD_RT_TASKnew_bad_task (void)
void free_bad_task (BAD_RT_TASK *bt)
void append_bad_task (BAD_RT_TASK **list, BAD_RT_TASK *new)
BAD_RT_TASKdelete_bad_task (BAD_RT_TASK **list, BAD_RT_TASK *del)
BAD_RT_TASKfind_bad_task (BAD_RT_TASK *list, RT_TASK *t)
int which_cpu (RT_TASK *t)
void smpproof_task_suspend (RT_TASK *t)
void smpproof_task_delete (RT_TASK *t)
void stretch_badtask (RT_TASK *t, BAD_RT_TASK *bt, int cpuid)
void start_slipping_badtask (RT_TASK *t, BAD_RT_TASK *bt, int cpuid)
void check_slipping_badtask (BAD_RT_TASK *bt)
void handle_badtask (int wd, RT_TASK *t, BAD_RT_TASK *bt, RTIME overrun)
void watchdog (long wd)
void dummy (long wd)
int __rtai_wd_init (void)
void __rtai_wd_exit (void)
 module_init (__rtai_wd_init)
 module_exit (__rtai_wd_exit)
 EXPORT_SYMBOL (rt_wdset_grace)
 EXPORT_SYMBOL (rt_wdset_safety)
 EXPORT_SYMBOL (rt_wdset_policy)
 EXPORT_SYMBOL (rt_wdset_slip)
 EXPORT_SYMBOL (rt_wdset_stretch)
 EXPORT_SYMBOL (rt_wdset_limit)

Variables

spinlock_t alloc_lock = SPIN_LOCK_UNLOCKED
BAD_RT_TASK bad_task_pool [BAD_TASK_MAX]
char version [] = "$Revision: 1.5 $"
char ver [10]
char * policy_name []
int num_wdogs
RT_TASK wdog [NR_RT_CPUS]
RT_TASKtlists [NR_RT_CPUS]
RT_TASK ** smp_current
BAD_RT_TASKbad_tl [NR_RT_CPUS]
int sched
int TickPeriod = 10000000
int wd_OneShot = 1
int Grace = 3
int GraceDiv = 1
int Safety = 100
wd_policy Policy = WD_SUSPEND
int Stretch = 10
int Slip = 10
int Limit = 100


Define Documentation

#define BAD_TASK_MAX   100
 

Definition at line 133 of file wd.c.

Referenced by __rtai_wd_init(), and new_bad_task().

#define DBUG x...   ) 
 

Definition at line 120 of file wd.c.

Referenced by check_slipping_badtask(), smpproof_task_delete(), smpproof_task_suspend(), start_slipping_badtask(), stretch_badtask(), and watchdog().

#define MY_ALLOC
 

Definition at line 124 of file wd.c.


Function Documentation

void __rtai_wd_exit void   ) 
 

Definition at line 780 of file wd.c.

References BAD_RT_TASK, bad_tl, delete_bad_task(), NR_RT_CPUS, num_wdogs, rt_busy_sleep(), rt_deregister_watchdog(), rt_task_delete(), rtai_proc_root, stop_rt_timer(), TickPeriod, WDLOG, and wdog.

Here is the call graph for this function:

int __rtai_wd_init void   ) 
 

Definition at line 665 of file wd.c.

References BAD_TASK_MAX, dummy(), Grace, GraceDiv, imuldiv(), Limit, nano2count(), nano2count_cpuid(), NR_RT_CPUS, NSECS_PER_SEC, num_wdogs, Policy, policy_name, rt_deregister_watchdog(), rt_get_base_linux_task(), rt_get_time_cpuid(), rt_printk(), rt_register_watchdog(), RT_SCHED_HIGHEST_PRIORITY, RT_SCHED_MUP, RT_SCHED_SMP, rt_sched_type(), RT_SCHED_UP, rt_set_oneshot_mode(), rt_set_periodic_mode(), RT_TASK, rt_task_init_cpuid(), rt_task_make_periodic(), rtai_proc_root, RTIME, Safety, sched, Slip, smp_current, start_rt_apic_timers(), start_rt_timer(), Stretch, TickPeriod, tlists, ver, version, watchdog(), WD_DEBUG, wd_OneShot, WD_STRETCH, WDLOG, and wdog.

Here is the call graph for this function:

void append_bad_task BAD_RT_TASK **  list,
BAD_RT_TASK new
[static]
 

Definition at line 282 of file wd.c.

References BAD_RT_TASK, and bad_rt_task::next.

Referenced by handle_badtask().

void check_slipping_badtask BAD_RT_TASK bt  )  [static]
 

Definition at line 387 of file wd.c.

References BAD_RT_TASK, bad_rt_task::count, bad_rt_task::countdown, DBUG, rt_task_resume(), bad_rt_task::slipping, and bad_rt_task::task.

Referenced by watchdog().

Here is the call graph for this function:

BAD_RT_TASK* delete_bad_task BAD_RT_TASK **  list,
BAD_RT_TASK del
[static]
 

Definition at line 294 of file wd.c.

References BAD_RT_TASK, free_bad_task(), and bad_rt_task::next.

Referenced by __rtai_wd_exit(), and watchdog().

Here is the call graph for this function:

void dummy long  wd  )  [static]
 

Definition at line 560 of file wd.c.

References rt_task_suspend(), and wdog.

Referenced by __rtai_wd_init().

Here is the call graph for this function:

EXPORT_SYMBOL rt_wdset_limit   ) 
 

EXPORT_SYMBOL rt_wdset_stretch   ) 
 

EXPORT_SYMBOL rt_wdset_slip   ) 
 

EXPORT_SYMBOL rt_wdset_policy   ) 
 

EXPORT_SYMBOL rt_wdset_safety   ) 
 

EXPORT_SYMBOL rt_wdset_grace   ) 
 

BAD_RT_TASK* find_bad_task BAD_RT_TASK list,
RT_TASK t
[static]
 

Definition at line 308 of file wd.c.

References BAD_RT_TASK, bad_rt_task::next, RT_TASK, and bad_rt_task::task.

Referenced by watchdog().

void free_bad_task BAD_RT_TASK bt  )  [static]
 

Definition at line 272 of file wd.c.

References BAD_RT_TASK, bad_rt_task::in_use, and rt_free().

Referenced by delete_bad_task().

Here is the call graph for this function:

void handle_badtask int  wd,
RT_TASK t,
BAD_RT_TASK bt,
RTIME  overrun
[static]
 

Definition at line 398 of file wd.c.

References append_bad_task(), BAD_RT_TASK, bad_tl, bad_rt_task::count, bad_rt_task::countdown, bad_rt_task::forced, Limit, new_bad_task(), bad_rt_task::next, bad_rt_task::orig_period, Policy, bad_rt_task::policy, RT_TASK, RTIME, Safety, bad_rt_task::slipping, smpproof_task_delete(), smpproof_task_suspend(), start_slipping_badtask(), stretch_badtask(), bad_rt_task::task, bad_rt_task::valid, WD_DEBUG, WD_KILL, WD_NOTHING, WD_RESYNC, WD_SLIP, WD_STRETCH, WD_SUSPEND, and WDLOG.

Referenced by watchdog().

Here is the call graph for this function:

module_exit __rtai_wd_exit   ) 
 

module_init __rtai_wd_init   ) 
 

MODULE_PARM Limit  ,
"i" 
 

MODULE_PARM Slip  ,
"i" 
 

MODULE_PARM Stretch  ,
"i" 
 

MODULE_PARM Policy  ,
"i" 
 

MODULE_PARM Safety  ,
"i" 
 

MODULE_PARM Grace  ,
"i" 
 

MODULE_PARM wd_OneShot  ,
"i" 
 

MODULE_PARM TickPeriod  ,
"i" 
 

BAD_RT_TASK* new_bad_task void   )  [static]
 

Definition at line 252 of file wd.c.

References alloc_lock, BAD_RT_TASK, BAD_TASK_MAX, bad_task_pool, bad_rt_task::in_use, and rt_malloc().

Referenced by handle_badtask().

Here is the call graph for this function:

int rt_wdset_grace int  new  ) 
 

Definition at line 185 of file wd.c.

References Grace, Policy, and WD_STRETCH.

int rt_wdset_gracediv int  new  ) 
 

Definition at line 195 of file wd.c.

References GraceDiv, Policy, and WD_STRETCH.

int rt_wdset_limit int  new  ) 
 

Definition at line 243 of file wd.c.

References Limit.

wd_policy rt_wdset_policy wd_policy  new  ) 
 

Definition at line 214 of file wd.c.

References Grace, GraceDiv, Limit, Policy, Safety, WD_DEBUG, WD_KILL, wd_policy, and WD_STRETCH.

int rt_wdset_safety int  new  ) 
 

Definition at line 205 of file wd.c.

References Grace, and Safety.

int rt_wdset_slip int  new  ) 
 

Definition at line 225 of file wd.c.

References Slip.

int rt_wdset_stretch int  new  ) 
 

Definition at line 234 of file wd.c.

References Stretch.

void smpproof_task_delete RT_TASK t  )  [static]
 

Definition at line 352 of file wd.c.

References cpuid, DBUG, num_wdogs, RT_TASK, rt_task_delete(), rt_task_resume(), wdog, and which_cpu().

Referenced by handle_badtask().

Here is the call graph for this function:

void smpproof_task_suspend RT_TASK t  )  [static]
 

Definition at line 341 of file wd.c.

References cpuid, DBUG, num_wdogs, RT_TASK, rt_task_resume(), rt_task_suspend(), wdog, and which_cpu().

Referenced by handle_badtask(), and start_slipping_badtask().

Here is the call graph for this function:

void start_slipping_badtask RT_TASK t,
BAD_RT_TASK bt,
int  cpuid
[static]
 

Definition at line 373 of file wd.c.

References BAD_RT_TASK, bad_rt_task::count, count2nano_cpuid(), bad_rt_task::countdown, cpuid, DBUG, llimd(), RT_TASK, Slip, bad_rt_task::slipping, smpproof_task_suspend(), and TickPeriod.

Referenced by handle_badtask().

Here is the call graph for this function:

void stretch_badtask RT_TASK t,
BAD_RT_TASK bt,
int  cpuid
[static]
 

Definition at line 364 of file wd.c.

References BAD_RT_TASK, count2nano_cpuid(), cpuid, DBUG, llimd(), bad_rt_task::orig_period, RT_TASK, and Stretch.

Referenced by handle_badtask().

Here is the call graph for this function:

void watchdog long  wd  )  [static]
 

Definition at line 474 of file wd.c.

References BAD_RT_TASK, bad_tl, check_slipping_badtask(), DBUG, delete_bad_task(), find_bad_task(), Grace, GraceDiv, handle_badtask(), llimd(), bad_rt_task::next, num_wdogs, rt_get_time_cpuid(), RT_SCHED_DELAYED, RT_SCHED_RECEIVE, RT_SCHED_RETURN, RT_SCHED_RPC, RT_SCHED_SEMAPHORE, RT_SCHED_SEND, RT_SCHED_SUSPENDED, RT_TASK, rt_task_wait_period(), rt_whoami(), RTIME, bad_rt_task::slipping, task, tlists, bad_rt_task::valid, WDLOG, and wdog.

Referenced by __rtai_wd_init().

Here is the call graph for this function:

int which_cpu RT_TASK t  )  [static]
 

Definition at line 320 of file wd.c.

References cpuid, NR_RT_CPUS, RT_SCHED_MUP, RT_SCHED_SMP, RT_SCHED_UP, RT_TASK, sched, and smp_current.

Referenced by smpproof_task_delete(), and smpproof_task_suspend().


Variable Documentation

spinlock_t alloc_lock = SPIN_LOCK_UNLOCKED [static]
 

Definition at line 135 of file wd.c.

Referenced by new_bad_task().

BAD_RT_TASK bad_task_pool[BAD_TASK_MAX] [static]
 

Definition at line 136 of file wd.c.

Referenced by new_bad_task().

BAD_RT_TASK* bad_tl[NR_RT_CPUS] [static]
 

Definition at line 152 of file wd.c.

Referenced by __rtai_wd_exit(), handle_badtask(), and watchdog().

int Grace = 3 [static]
 

Definition at line 163 of file wd.c.

Referenced by __rtai_wd_init(), rt_wdset_grace(), rt_wdset_policy(), rt_wdset_safety(), and watchdog().

int GraceDiv = 1 [static]
 

Definition at line 166 of file wd.c.

Referenced by __rtai_wd_init(), rt_wdset_gracediv(), rt_wdset_policy(), and watchdog().

int Limit = 100 [static]
 

Definition at line 181 of file wd.c.

Referenced by __rtai_wd_init(), handle_badtask(), rt_wdset_limit(), and rt_wdset_policy().

int num_wdogs [static]
 

Definition at line 148 of file wd.c.

Referenced by __rtai_wd_exit(), __rtai_wd_init(), smpproof_task_delete(), smpproof_task_suspend(), and watchdog().

wd_policy Policy = WD_SUSPEND [static]
 

Definition at line 172 of file wd.c.

Referenced by __rtai_wd_init(), handle_badtask(), rt_wdset_grace(), rt_wdset_gracediv(), and rt_wdset_policy().

char* policy_name[] [static]
 

Initial value:

{"Nothing", "Resync", "Debug", "Stretch", "Slip", "Suspend", "Kill"}
Definition at line 144 of file wd.c.

Referenced by __rtai_wd_init().

int Safety = 100 [static]
 

Definition at line 169 of file wd.c.

Referenced by __rtai_wd_init(), handle_badtask(), rt_wdset_policy(), and rt_wdset_safety().

int sched [static]
 

Definition at line 153 of file wd.c.

Referenced by __rtai_wd_init(), and which_cpu().

int Slip = 10 [static]
 

Definition at line 178 of file wd.c.

Referenced by __rtai_wd_init(), rt_wdset_slip(), and start_slipping_badtask().

RT_TASK** smp_current [static]
 

Definition at line 151 of file wd.c.

Referenced by __rtai_wd_init(), and which_cpu().

int Stretch = 10 [static]
 

Definition at line 175 of file wd.c.

Referenced by __rtai_wd_init(), rt_wdset_stretch(), and stretch_badtask().

int TickPeriod = 10000000 [static]
 

Definition at line 157 of file wd.c.

Referenced by __rtai_wd_exit(), __rtai_wd_init(), and start_slipping_badtask().

RT_TASK* tlists[NR_RT_CPUS] [static]
 

Definition at line 150 of file wd.c.

Referenced by __rtai_wd_init(), and watchdog().

char ver[10] [static]
 

Definition at line 141 of file wd.c.

Referenced by __rtai_wd_init().

char version[] = "$Revision: 1.5 $" [static]
 

Definition at line 140 of file wd.c.

Referenced by __rtai_wd_init().

int wd_OneShot = 1 [static]
 

Definition at line 160 of file wd.c.

Referenced by __rtai_wd_init().

RT_TASK wdog[NR_RT_CPUS] [static]
 

Definition at line 149 of file wd.c.

Referenced by __rtai_wd_exit(), __rtai_wd_init(), dummy(), smpproof_task_delete(), smpproof_task_suspend(), and watchdog().


Generated on Thu Nov 20 11:57:35 2008 for RTAI API by doxygen 1.3.8