base/arch/ppc/hal/hal.c File Reference


Detailed Description

ARTI -- RTAI-compatible Adeos-based Real-Time Interface.

Based on the original RTAI layer for PPC and the RTAI/x86 rewrite over ADEOS.

Original RTAI/PPC layer implementation:
Copyright © 2000-2007 Paolo Mantegazza,
Copyright © 2001 David Schleef,
Copyright © 2001 Lineo, Inc,
Copyright © 2002 Wolfgang Grandegger.

RTAI/PPC rewrite over hal-linux patches:
Copyright &copy 2006 Antonio Barbalace.

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, Inc., 675 Mass Ave, Cambridge MA 02139, USA; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.

Definition in file hal.c.

Include dependency graph for hal.c:

Go to the source code of this file.

Data Structures

struct  intercept_entry

Defines

#define __RTAI_HAL__
#define INTR_VECTOR   5
#define DECR_VECTOR   9
#define RTAI_NR_IRQS   IPIPE_NR_XIRQS
#define RTAI_SCHED_ISR_LOCK()
#define RTAI_SCHED_ISR_UNLOCK()
#define HAL_TICK_REGS   hal_tick_regs[cpuid]
#define HAL_LOCK_LINUX()   do { sflags = rt_save_switch_to_real_time(cpuid = rtai_cpuid()); } while (0)
#define HAL_UNLOCK_LINUX()   do { rtai_cli(); rt_restore_switch_to_linux(sflags, cpuid); } while (0)
#define RTAI_IRQ_ACK(irq)
#define CHECK_KERCTX()
#define rtai_irq_desc(irq)   (&hal_std_irq_dtype[irq])
#define BEGIN_PIC()
#define END_PIC()
#define NR_EXCEPT   48
#define LINE_LENGTH   200

Functions

 MODULE_LICENSE ("GPL")
 RTAI_MODULE_PARM (rtai_cpufreq_arg, ulong)
 RTAI_MODULE_PARM (PrintFpuTrap, int)
 RTAI_MODULE_PARM (PrintFpuInit, int)
 RTAI_MODULE_PARM (IsolCpusMask, ulong)
unsigned long rtai_critical_enter (void(*synch)(void))
void rtai_critical_exit (unsigned long flags)
int rt_request_irq (unsigned irq, int(*handler)(unsigned irq, void *cookie), void *cookie, int retmode)
int rt_release_irq (unsigned irq)
int rt_set_irq_ack (unsigned irq, int(*irq_ack)(unsigned int))
void rt_set_irq_cookie (unsigned irq, void *cookie)
void rt_set_irq_retmode (unsigned irq, int retmode)
unsigned rt_startup_irq (unsigned irq)
void rt_shutdown_irq (unsigned irq)
static void _rt_enable_irq (unsigned irq)
void rt_disable_irq (unsigned irq)
static void _rt_end_irq (unsigned irq)
void rt_mask_and_ack_irq (unsigned irq)
void rt_enable_irq (unsigned irq)
void rt_unmask_irq (unsigned irq)
void rt_ack_irq (unsigned irq)
void rt_end_irq (unsigned irq)
int rt_request_linux_irq (unsigned irq, void *handler, char *name, void *dev_id)
int rt_free_linux_irq (unsigned irq, void *dev_id)
void rt_pend_linux_irq (unsigned irq)
RTAI_SYSCALL_MODE void usr_rt_pend_linux_irq (unsigned irq)
int rt_request_srq (unsigned label, void(*k_handler)(void), long long(*u_handler)(unsigned long))
int rt_free_srq (unsigned srq)
void rt_pend_linux_srq (unsigned srq)
intercept_entry rtai_set_gate_vector (unsigned vector, void *handler, void *rethandler)
void rtai_reset_gate_vector (unsigned vector, unsigned long handler, unsigned long rethandler)
int rtai_decr_timer_handler (struct pt_regs *regs)
void rt_request_apic_timers (void(*handler)(void), struct apic_timer_setup_data *tmdata)
void rt_free_apic_timers (void)
int rt_assign_irq_to_cpu (int irq, unsigned long cpus_mask)
int rt_reset_irq_to_sym_mode (int irq)
static int rtai_request_tickdev (void)
static void rtai_release_tickdev (void)
int rt_request_timer (void(*handler)(void), unsigned tick, int use_apic)
void rt_free_timer (void)
void rt_request_rtc (long rtc_freq, void *handler)
void rt_release_rtc (void)
static int rtai_hirq_dispatcher (struct pt_regs *regs)
RT_TRAP_HANDLER rt_set_trap_handler (RT_TRAP_HANDLER handler)
static int rtai_trap_fault (unsigned event, void *evdata)
static void rtai_lsrq_dispatcher (unsigned virq)
static long long rtai_usrq_dispatcher (unsigned long srq, unsigned long label)
static int intercept_syscall_prologue (unsigned long event, struct pt_regs *regs)
asmlinkage int rtai_syscall_dispatcher (struct pt_regs *regs)
static void rtai_install_archdep (void)
static void rtai_uninstall_archdep (void)
void(*)(int) rt_set_ihook (void(*hookfn)(int))
void rtai_set_linux_task_priority (struct task_struct *task, int policy, int prio)
static void rtai_domain_entry (int iflag)
long rtai_catch_event (struct hal_domain_struct *from, unsigned long event, int(*handler)(unsigned long, void *))
int __rtai_hal_init (void)
void __rtai_hal_exit (void)
 module_init (__rtai_hal_init)
 module_exit (__rtai_hal_exit)
asmlinkage int rt_printk (const char *fmt,...)
asmlinkage int rt_sync_printk (const char *fmt,...)
void * ll2a (long long ll, char *s)
 EXPORT_SYMBOL (rtai_realtime_irq)
 EXPORT_SYMBOL (rt_request_irq)
 EXPORT_SYMBOL (rt_release_irq)
 EXPORT_SYMBOL (rt_set_irq_cookie)
 EXPORT_SYMBOL (rt_set_irq_retmode)
 EXPORT_SYMBOL (rt_set_irq_ack)
 EXPORT_SYMBOL (rt_startup_irq)
 EXPORT_SYMBOL (rt_shutdown_irq)
 EXPORT_SYMBOL (rt_enable_irq)
 EXPORT_SYMBOL (rt_disable_irq)
 EXPORT_SYMBOL (rt_mask_and_ack_irq)
 EXPORT_SYMBOL (rt_unmask_irq)
 EXPORT_SYMBOL (rt_ack_irq)
 EXPORT_SYMBOL (rt_request_linux_irq)
 EXPORT_SYMBOL (rt_free_linux_irq)
 EXPORT_SYMBOL (rt_pend_linux_irq)
 EXPORT_SYMBOL (usr_rt_pend_linux_irq)
 EXPORT_SYMBOL (rt_request_srq)
 EXPORT_SYMBOL (rt_free_srq)
 EXPORT_SYMBOL (rt_pend_linux_srq)
 EXPORT_SYMBOL (rt_assign_irq_to_cpu)
 EXPORT_SYMBOL (rt_reset_irq_to_sym_mode)
 EXPORT_SYMBOL (rt_request_apic_timers)
 EXPORT_SYMBOL (rt_free_apic_timers)
 EXPORT_SYMBOL (rt_request_timer)
 EXPORT_SYMBOL (rt_free_timer)
 EXPORT_SYMBOL (rt_request_rtc)
 EXPORT_SYMBOL (rt_release_rtc)
 EXPORT_SYMBOL (rt_set_trap_handler)
 EXPORT_SYMBOL (rt_set_ihook)
 EXPORT_SYMBOL (rtai_critical_enter)
 EXPORT_SYMBOL (rtai_critical_exit)
 EXPORT_SYMBOL (rtai_set_linux_task_priority)
 EXPORT_SYMBOL (rtai_linux_context)
 EXPORT_SYMBOL (rtai_domain)
 EXPORT_SYMBOL (rtai_proc_root)
 EXPORT_SYMBOL (rtai_tunables)
 EXPORT_SYMBOL (rtai_cpu_lock)
 EXPORT_SYMBOL (rtai_cpu_realtime)
 EXPORT_SYMBOL (rt_times)
 EXPORT_SYMBOL (rt_smp_times)
 EXPORT_SYMBOL (rt_printk)
 EXPORT_SYMBOL (rt_sync_printk)
 EXPORT_SYMBOL (ll2a)
 EXPORT_SYMBOL (rtai_set_gate_vector)
 EXPORT_SYMBOL (rtai_reset_gate_vector)
 EXPORT_SYMBOL (rtai_catch_event)
 EXPORT_SYMBOL (rtai_lxrt_dispatcher)
 EXPORT_SYMBOL (rt_scheduling)
void up_task_sw (void *, void *)
 EXPORT_SYMBOL (up_task_sw)
void __save_fpenv (void *fpenv)
 EXPORT_SYMBOL (__save_fpenv)
void __restore_fpenv (void *fpenv)
 EXPORT_SYMBOL (__restore_fpenv)
 EXPORT_SYMBOL (IsolCpusMask)
 EXPORT_SYMBOL (rt_linux_hrt_set_mode)
 EXPORT_SYMBOL (rt_linux_hrt_next_shot)

Variables

static unsigned long rtai_cpufreq_arg = RTAI_CALIBRATED_CPU_FREQ
static int PrintFpuTrap = 0
static int PrintFpuInit = 0
unsigned long IsolCpusMask = 0
struct {
   volatile int   locked
   volatile int   rqsted
rt_scheduling [RTAI_NR_CPUS]
static void(*) rtai_isr_hook (int cpuid)
hw_interrupt_type hal_std_irq_dtype []
static atomic_t rtai_sync_count = ATOMIC_INIT(1)
static volatile int rtai_sync_level
static unsigned rtai_sysreq_virq
rtai_realtime_irq_s rtai_realtime_irq [RTAI_NR_IRQS]
calibration_data rtai_tunables
void * hal_syscall_handler
static RT_TRAP_HANDLER rtai_trap_handler
machdep_calls ppc_md
static unsigned rtai_sysreq_virq
static unsigned long rtai_sysreq_map = 1
static unsigned long rtai_sysreq_pending
static unsigned long rtai_sysreq_running
static spinlock_t rtai_lsrq_lock = SPIN_LOCK_UNLOCKED
struct {
   unsigned long   flags
   int   count
rtai_linux_irq [RTAI_NR_IRQS]
struct {
   void(*   k_handler )(void)
   long long(*   u_handler )(unsigned long)
   unsigned long   label
rtai_sysreq_table [RTAI_NR_SRQS]
volatile unsigned long rtai_cpu_lock [2]
hal_domain_struct rtai_domain
volatile unsigned long rtai_cpu_realtime
rt_times rt_times
rtai_switch_data rtai_linux_context [RTAI_NR_CPUS]
rt_times rt_smp_times [RTAI_NR_CPUS]
intercept_entryintercept_table []
static struct intercept_entry old_intercept_table [NR_EXCEPT]
static void(*) decr_timer_handler (void)
static int spurious_interrupts
long long(*) rtai_lxrt_dispatcher (unsigned long, unsigned long, void *)
static int(*) sched_intercept_syscall_prologue (struct pt_regs *)
int ipipe_events_diverted
void(*) rt_linux_hrt_set_mode (int clock_event_mode, void *)
int(*) rt_linux_hrt_next_shot (unsigned long, void *)


Define Documentation

#define __RTAI_HAL__

Definition at line 53 of file hal.c.

 
#define BEGIN_PIC (  ) 

Value:

do { \
        unsigned long flags, pflags, cpuid; \
    rtai_save_flags_and_cli(flags); \
    cpuid = rtai_cpuid(); \
    pflags = xchg((unsigned long *)ROOT_STATUS_ADR(cpuid), 1 << IPIPE_STALL_FLAG); \
    rtai_save_and_lock_preempt_count()

Definition at line 164 of file hal.c.

 
#define CHECK_KERCTX (  ) 

Definition at line 142 of file hal.c.

#define DECR_VECTOR   9

Definition at line 70 of file hal.c.

Referenced by rt_free_timer(), and rt_request_timer().

 
#define END_PIC (  ) 

Value:

rtai_restore_preempt_count(); \
    ROOT_STATUS_VAL(cpuid) = pflags; \
    rtai_restore_flags(flags); \
} while (0)

Definition at line 172 of file hal.c.

 
#define HAL_LOCK_LINUX (  )     do { sflags = rt_save_switch_to_real_time(cpuid = rtai_cpuid()); } while (0)

Definition at line 119 of file hal.c.

#define HAL_TICK_REGS   hal_tick_regs[cpuid]

Definition at line 113 of file hal.c.

 
#define HAL_UNLOCK_LINUX (  )     do { rtai_cli(); rt_restore_switch_to_linux(sflags, cpuid); } while (0)

Definition at line 120 of file hal.c.

#define INTR_VECTOR   5

Definition at line 69 of file hal.c.

Referenced by __rtai_hal_exit(), and __rtai_hal_init().

#define LINE_LENGTH   200

Definition at line 1272 of file hal.c.

Referenced by rt_printk(), and rt_sync_printk().

#define NR_EXCEPT   48

Definition at line 561 of file hal.c.

#define RTAI_IRQ_ACK ( irq   ) 

Value:

do { \
        ((void (*)(unsigned int))rtai_realtime_irq[irq].irq_ack)(irq); \
    } while (0)

Definition at line 135 of file hal.c.

Referenced by rtai_hirq_dispatcher().

#define rtai_irq_desc ( irq   )     (&hal_std_irq_dtype[irq])

Definition at line 162 of file hal.c.

#define RTAI_NR_IRQS   IPIPE_NR_XIRQS

Definition at line 75 of file hal.c.

 
#define RTAI_SCHED_ISR_LOCK (  ) 

Value:

do { \
        if (!rt_scheduling[cpuid].locked++) { \
            rt_scheduling[cpuid].rqsted = 0; \
        } \
    } while (0)

Definition at line 91 of file hal.c.

 
#define RTAI_SCHED_ISR_UNLOCK (  ) 

Value:

do { \
        if (rt_scheduling[cpuid].locked && !(--rt_scheduling[cpuid].locked)) { \
            if (rt_scheduling[cpuid].rqsted > 0 && rtai_isr_hook) { \
                rtai_isr_hook(cpuid); \
                } \
        } \
    } while (0)

Definition at line 97 of file hal.c.


Function Documentation

void __restore_fpenv ( void *  fpenv  ) 

void __rtai_hal_exit ( void   ) 

Definition at line 1230 of file hal.c.

References flags, hal_catch_event, hal_free_irq, HAL_NR_FAULTS, hal_root_domain, hal_unregister_domain, hal_virtualize_irq, INTR_VECTOR, printk(), rtai_domain, rtai_reset_gate_vector(), rtai_restore_flags, rtai_save_flags_and_cli, rtai_sysreq_virq, and rtai_uninstall_archdep().

Here is the call graph for this function:

int __rtai_hal_init ( void   ) 

Definition at line 1150 of file hal.c.

References hal_alloc_irq, hal_attr_struct, hal_catch_event, hal_domain_struct, hal_init_attr, HAL_NR_EVENTS, HAL_NR_FAULTS, hal_register_domain, hal_root_domain, HAL_TYPE, hal_virtualize_irq, INTR_VECTOR, ipipe_root_status, printk(), rtai_domain, rtai_domain_entry(), rtai_hirq_dispatcher(), rtai_install_archdep(), rtai_lsrq_dispatcher(), RTAI_NR_CPUS, rtai_realtime_irq, rtai_set_gate_vector(), rtai_sysreq_virq, and rtai_trap_fault().

Here is the call graph for this function:

void __save_fpenv ( void *  fpenv  ) 

static void _rt_enable_irq ( unsigned  irq  )  [inline, static]

Definition at line 377 of file hal.c.

References BEGIN_PIC, END_PIC, hal_root_domain, hal_unlock_irq, and rtai_irq_desc.

static void _rt_end_irq ( unsigned  irq  )  [inline, static]

Definition at line 403 of file hal.c.

References BEGIN_PIC, END_PIC, hal_root_domain, hal_unlock_irq, and rtai_irq_desc.

EXPORT_SYMBOL ( rt_linux_hrt_next_shot   ) 

EXPORT_SYMBOL ( rt_linux_hrt_set_mode   ) 

EXPORT_SYMBOL ( IsolCpusMask   ) 

EXPORT_SYMBOL ( __restore_fpenv   ) 

EXPORT_SYMBOL ( __save_fpenv   ) 

EXPORT_SYMBOL ( up_task_sw   ) 

EXPORT_SYMBOL ( rt_scheduling   ) 

EXPORT_SYMBOL ( rtai_lxrt_dispatcher   ) 

EXPORT_SYMBOL ( rtai_catch_event   ) 

EXPORT_SYMBOL ( rtai_reset_gate_vector   ) 

EXPORT_SYMBOL ( rtai_set_gate_vector   ) 

EXPORT_SYMBOL ( ll2a   ) 

EXPORT_SYMBOL ( rt_sync_printk   ) 

EXPORT_SYMBOL ( rt_printk   ) 

EXPORT_SYMBOL ( rt_smp_times   ) 

EXPORT_SYMBOL ( rt_times   ) 

EXPORT_SYMBOL ( rtai_cpu_realtime   ) 

EXPORT_SYMBOL ( rtai_cpu_lock   ) 

EXPORT_SYMBOL ( rtai_tunables   ) 

EXPORT_SYMBOL ( rtai_proc_root   ) 

EXPORT_SYMBOL ( rtai_domain   ) 

EXPORT_SYMBOL ( rtai_linux_context   ) 

EXPORT_SYMBOL ( rtai_set_linux_task_priority   ) 

EXPORT_SYMBOL ( rtai_critical_exit   ) 

EXPORT_SYMBOL ( rtai_critical_enter   ) 

EXPORT_SYMBOL ( rt_set_ihook   ) 

EXPORT_SYMBOL ( rt_set_trap_handler   ) 

EXPORT_SYMBOL ( rt_release_rtc   ) 

EXPORT_SYMBOL ( rt_request_rtc   ) 

EXPORT_SYMBOL ( rt_free_timer   ) 

EXPORT_SYMBOL ( rt_request_timer   ) 

EXPORT_SYMBOL ( rt_free_apic_timers   ) 

EXPORT_SYMBOL ( rt_request_apic_timers   ) 

EXPORT_SYMBOL ( rt_reset_irq_to_sym_mode   ) 

EXPORT_SYMBOL ( rt_assign_irq_to_cpu   ) 

EXPORT_SYMBOL ( rt_pend_linux_srq   ) 

EXPORT_SYMBOL ( rt_free_srq   ) 

EXPORT_SYMBOL ( rt_request_srq   ) 

EXPORT_SYMBOL ( usr_rt_pend_linux_irq   ) 

EXPORT_SYMBOL ( rt_pend_linux_irq   ) 

EXPORT_SYMBOL ( rt_free_linux_irq   ) 

EXPORT_SYMBOL ( rt_request_linux_irq   ) 

EXPORT_SYMBOL ( rt_ack_irq   ) 

EXPORT_SYMBOL ( rt_unmask_irq   ) 

EXPORT_SYMBOL ( rt_mask_and_ack_irq   ) 

EXPORT_SYMBOL ( rt_disable_irq   ) 

EXPORT_SYMBOL ( rt_enable_irq   ) 

EXPORT_SYMBOL ( rt_shutdown_irq   ) 

EXPORT_SYMBOL ( rt_startup_irq   ) 

EXPORT_SYMBOL ( rt_set_irq_ack   ) 

EXPORT_SYMBOL ( rt_set_irq_retmode   ) 

EXPORT_SYMBOL ( rt_set_irq_cookie   ) 

EXPORT_SYMBOL ( rt_release_irq   ) 

EXPORT_SYMBOL ( rt_request_irq   ) 

EXPORT_SYMBOL ( rtai_realtime_irq   ) 

static int intercept_syscall_prologue ( unsigned long  event,
struct pt_regs *  regs 
) [static]

Definition at line 925 of file hal.c.

References likely, rtai_lxrt_dispatcher, RTAI_SYSCALL_NR, rtai_usrq_dispatcher(), sched_intercept_syscall_prologue, and srq.

Here is the call graph for this function:

void* ll2a ( long long  ll,
char *  s 
)

Definition at line 1313 of file hal.c.

References LOW, and rtai_ulldiv.

module_exit ( __rtai_hal_exit   ) 

module_init ( __rtai_hal_init   ) 

MODULE_LICENSE ( "GPL"   ) 

void rt_ack_irq ( unsigned  irq  ) 

Definition at line 421 of file hal.c.

References _rt_enable_irq().

Here is the call graph for this function:

int rt_assign_irq_to_cpu ( int  irq,
unsigned long  cpus_mask 
)

Definition at line 625 of file hal.c.

void rt_disable_irq ( unsigned  irq  ) 

Definition at line 390 of file hal.c.

References BEGIN_PIC, cpuid, END_PIC, hal_lock_irq, hal_root_domain, and rtai_irq_desc.

void rt_enable_irq ( unsigned  irq  ) 

Definition at line 417 of file hal.c.

References _rt_enable_irq().

Here is the call graph for this function:

void rt_end_irq ( unsigned  irq  ) 

Definition at line 423 of file hal.c.

References _rt_end_irq().

Here is the call graph for this function:

void rt_free_apic_timers ( void   ) 

Definition at line 624 of file hal.c.

References rt_free_timer().

Here is the call graph for this function:

int rt_free_linux_irq ( unsigned  irq,
void *  dev_id 
)

Definition at line 458 of file hal.c.

References count, flags, rtai_linux_irq, RTAI_NR_IRQS, rtai_restore_flags, and rtai_save_flags_and_cli.

int rt_free_srq ( unsigned  srq  ) 

Definition at line 540 of file hal.c.

References rtai_sysreq_map.

void rt_free_timer ( void   ) 

Definition at line 691 of file hal.c.

References DECR_VECTOR, flags, rtai_release_tickdev(), rtai_reset_gate_vector(), rtai_restore_flags, and rtai_save_flags_and_cli.

Here is the call graph for this function:

void rt_mask_and_ack_irq ( unsigned  irq  ) 

Definition at line 415 of file hal.c.

References rtai_irq_desc.

void rt_pend_linux_irq ( unsigned  irq  ) 

Definition at line 485 of file hal.c.

References flags, rtai_restore_flags, and rtai_save_flags_and_cli.

void rt_pend_linux_srq ( unsigned  srq  ) 

Definition at line 550 of file hal.c.

References flags, rtai_restore_flags, rtai_save_flags_and_cli, rtai_sysreq_pending, and rtai_sysreq_virq.

asmlinkage int rt_printk ( const char *  fmt,
  ... 
)

Definition at line 1274 of file hal.c.

References args, line, LINE_LENGTH, and printk().

Here is the call graph for this function:

int rt_release_irq ( unsigned  irq  ) 

Definition at line 285 of file hal.c.

References flags, hal_root_domain, IsolCpusMask, rt_assign_irq_to_cpu(), rtai_critical_enter(), rtai_critical_exit(), RTAI_NR_IRQS, and rtai_realtime_irq.

Here is the call graph for this function:

void rt_release_rtc ( void   ) 

Definition at line 713 of file hal.c.

References rt_printk().

Here is the call graph for this function:

void rt_request_apic_timers ( void(*)(void)  handler,
struct apic_timer_setup_data tmdata 
)

Definition at line 623 of file hal.c.

int rt_request_irq ( unsigned  irq,
int(*)(unsigned irq, void *cookie)  handler,
void *  cookie,
int  retmode 
)

Definition at line 255 of file hal.c.

References flags, hal_root_domain, IsolCpusMask, rt_assign_irq_to_cpu(), rtai_critical_enter(), rtai_critical_exit(), RTAI_NR_IRQS, and rtai_realtime_irq.

Here is the call graph for this function:

int rt_request_linux_irq ( unsigned  irq,
void *  handler,
char *  name,
void *  dev_id 
)

Definition at line 430 of file hal.c.

References count, flags, rtai_linux_irq, RTAI_NR_IRQS, rtai_restore_flags, and rtai_save_flags_and_cli.

void rt_request_rtc ( long  rtc_freq,
void *  handler 
)

Definition at line 708 of file hal.c.

References rt_printk().

Here is the call graph for this function:

int rt_request_srq ( unsigned  label,
void(*)(void)  k_handler,
long long(*)(unsigned long)  u_handler 
)

Definition at line 511 of file hal.c.

References flags, rtai_restore_flags, rtai_save_flags_and_cli, rtai_sysreq_map, rtai_sysreq_table, and srq.

int rt_request_timer ( void(*)(void)  handler,
unsigned  tick,
int  use_apic 
)

Definition at line 637 of file hal.c.

References decr_timer_handler, DECR_VECTOR, flags, rt_release_irq(), rt_set_timer_delay, rt_times, rtai_decr_timer_handler(), rtai_rdtsc, rtai_request_tickdev(), rtai_restore_flags, rtai_save_flags_and_cli, and rtai_set_gate_vector().

Here is the call graph for this function:

int rt_reset_irq_to_sym_mode ( int  irq  ) 

Definition at line 626 of file hal.c.

void(*)(int) rt_set_ihook (  ) 

Definition at line 997 of file hal.c.

References rtai_isr_hook.

int rt_set_irq_ack ( unsigned  irq,
int(*)(unsigned int)  irq_ack 
)

Definition at line 309 of file hal.c.

References hal_root_domain, RTAI_NR_IRQS, and rtai_realtime_irq.

void rt_set_irq_cookie ( unsigned  irq,
void *  cookie 
)

Definition at line 323 of file hal.c.

References RTAI_NR_IRQS, and rtai_realtime_irq.

void rt_set_irq_retmode ( unsigned  irq,
int  retmode 
)

Definition at line 335 of file hal.c.

References RTAI_NR_IRQS, and rtai_realtime_irq.

RT_TRAP_HANDLER rt_set_trap_handler ( RT_TRAP_HANDLER  handler  ) 

Definition at line 774 of file hal.c.

References rtai_trap_handler.

void rt_shutdown_irq ( unsigned  irq  ) 

Definition at line 363 of file hal.c.

References BEGIN_PIC, END_PIC, hal_clear_irq, hal_root_domain, and rtai_irq_desc.

unsigned rt_startup_irq ( unsigned  irq  ) 

Definition at line 347 of file hal.c.

References BEGIN_PIC, END_PIC, hal_root_domain, hal_unlock_irq, and rtai_irq_desc.

asmlinkage int rt_sync_printk ( const char *  fmt,
  ... 
)

Definition at line 1293 of file hal.c.

References args, hal_set_printk_async, hal_set_printk_sync, line, LINE_LENGTH, printk(), and rtai_domain.

Here is the call graph for this function:

void rt_unmask_irq ( unsigned  irq  ) 

Definition at line 419 of file hal.c.

References _rt_end_irq().

Here is the call graph for this function:

long rtai_catch_event ( struct hal_domain_struct *  from,
unsigned long  event,
int(*)(unsigned long, void *)  handler 
)

Definition at line 1135 of file hal.c.

References hal_catch_event, HAL_SYSCALL_PROLOGUE, and sched_intercept_syscall_prologue.

unsigned long rtai_critical_enter ( void(*)(void)  synch  ) 

Definition at line 226 of file hal.c.

References atomic_dec_and_test, flags, hal_critical_enter, printk(), rtai_sync_count, and rtai_sync_level.

Here is the call graph for this function:

void rtai_critical_exit ( unsigned long  flags  ) 

Definition at line 244 of file hal.c.

References atomic_inc, hal_critical_exit, and rtai_sync_count.

int rtai_decr_timer_handler ( struct pt_regs *  regs  ) 

Definition at line 600 of file hal.c.

References cpuid, decr_timer_handler, HAL_LOCK_LINUX, HAL_UNLOCK_LINUX, RTAI_SCHED_ISR_LOCK, RTAI_SCHED_ISR_UNLOCK, and rtai_sti.

Referenced by rt_request_timer().

static void rtai_domain_entry ( int  iflag  )  [static]

Definition at line 1121 of file hal.c.

References hal_suspend_domain, HAL_TYPE, HAL_VERSION_STRING, and rt_printk().

Here is the call graph for this function:

static int rtai_hirq_dispatcher ( struct pt_regs *  regs  )  [static]

Definition at line 725 of file hal.c.

References cpuid, HAL_LOCK_LINUX, HAL_UNLOCK_LINUX, ppc_md, RTAI_IRQ_ACK, RTAI_NR_IRQS, rtai_realtime_irq, RTAI_SCHED_ISR_LOCK, RTAI_SCHED_ISR_UNLOCK, and rtai_sti.

static void rtai_install_archdep ( void   )  [static]

Definition at line 959 of file hal.c.

References hal_catch_event, hal_get_sysinfo, hal_root_domain, HAL_SYSCALL_PROLOGUE, hal_sysinfo_struct, intercept_syscall_prologue(), printk(), rtai_cpufreq_arg, and rtai_tunables.

Here is the call graph for this function:

static void rtai_lsrq_dispatcher ( unsigned  virq  )  [static]

Definition at line 862 of file hal.c.

References ffnz(), rtai_lsrq_lock, rtai_sysreq_map, rtai_sysreq_pending, rtai_sysreq_running, rtai_sysreq_table, and srq.

Here is the call graph for this function:

RTAI_MODULE_PARM ( IsolCpusMask  ,
ulong   
)

RTAI_MODULE_PARM ( PrintFpuInit  ,
int   
)

RTAI_MODULE_PARM ( PrintFpuTrap  ,
int   
)

RTAI_MODULE_PARM ( rtai_cpufreq_arg  ,
ulong   
)

static void rtai_release_tickdev ( void   )  [static]

Definition at line 1495 of file hal.c.

Referenced by rt_free_timer().

static int rtai_request_tickdev ( void   )  [static]

Definition at line 1493 of file hal.c.

Referenced by rt_request_timer().

void rtai_reset_gate_vector ( unsigned  vector,
unsigned long  handler,
unsigned long  rethandler 
)

Definition at line 588 of file hal.c.

References intercept_entry::handler, old_intercept_table, and intercept_entry::rethandler.

struct intercept_entry rtai_set_gate_vector ( unsigned  vector,
void *  handler,
void *  rethandler 
)

Definition at line 571 of file hal.c.

References intercept_entry::handler, old_intercept_table, and intercept_entry::rethandler.

void rtai_set_linux_task_priority ( struct task_struct *  task,
int  policy,
int  prio 
)

Definition at line 1011 of file hal.c.

References hal_set_linux_task_priority, and printk().

Here is the call graph for this function:

asmlinkage int rtai_syscall_dispatcher ( struct pt_regs *  regs  ) 

Definition at line 940 of file hal.c.

References rtai_lxrt_dispatcher, rtai_usrq_dispatcher(), and srq.

Here is the call graph for this function:

static int rtai_trap_fault ( unsigned  event,
void *  evdata 
) [static]

Definition at line 784 of file hal.c.

References flags, HINT_DIAG_MSG, rt_printk(), rtai_save_flags_and_cli, rtai_trap_handler, TRACE_RTAI_TRAP_ENTRY, and TRACE_RTAI_TRAP_EXIT.

Here is the call graph for this function:

static void rtai_uninstall_archdep ( void   )  [static]

Definition at line 986 of file hal.c.

References hal_catch_event, hal_root_domain, and HAL_SYSCALL_PROLOGUE.

static long long rtai_usrq_dispatcher ( unsigned long  srq,
unsigned long  label 
) [inline, static]

Definition at line 887 of file hal.c.

References rtai_sysreq_map, rtai_sysreq_table, TRACE_RTAI_SRQ_ENTRY, and TRACE_RTAI_SRQ_EXIT.

void up_task_sw ( void *  ,
void *   
)

RTAI_SYSCALL_MODE void usr_rt_pend_linux_irq ( unsigned  irq  ) 

Definition at line 498 of file hal.c.

References flags, rtai_restore_flags, and rtai_save_flags_and_cli.


Variable Documentation

int count

Definition at line 205 of file hal.c.

void(*) decr_timer_handler(void) [static]

Definition at line 597 of file hal.c.

Referenced by rt_request_timer(), and rtai_decr_timer_handler().

unsigned long flags

Definition at line 204 of file hal.c.

struct hw_interrupt_type hal_std_irq_dtype[]

void* hal_syscall_handler

struct intercept_entry* intercept_table[]

int ipipe_events_diverted

unsigned long IsolCpusMask = 0

Definition at line 81 of file hal.c.

void(* k_handler)(void)

unsigned long label

Definition at line 211 of file hal.c.

volatile int locked

Definition at line 84 of file hal.c.

struct intercept_entry old_intercept_table[NR_EXCEPT] [static]

Definition at line 565 of file hal.c.

Referenced by rtai_reset_gate_vector(), and rtai_set_gate_vector().

struct machdep_calls ppc_md

Referenced by rtai_hirq_dispatcher().

int PrintFpuInit = 0 [static]

Definition at line 79 of file hal.c.

int PrintFpuTrap = 0 [static]

Definition at line 77 of file hal.c.

volatile int rqsted

Definition at line 84 of file hal.c.

int(*) rt_linux_hrt_next_shot(unsigned long, void *)

Definition at line 1491 of file hal.c.

void(*) rt_linux_hrt_set_mode(int clock_event_mode, void *)

Definition at line 1490 of file hal.c.

struct { ... } rt_scheduling[RTAI_NR_CPUS]

struct rt_times rt_smp_times[RTAI_NR_CPUS]

Definition at line 219 of file hal.c.

struct rt_times rt_times

Definition at line 217 of file hal.c.

volatile unsigned long rtai_cpu_lock[2]

Definition at line 214 of file hal.c.

volatile unsigned long rtai_cpu_realtime

Definition at line 216 of file hal.c.

unsigned long rtai_cpufreq_arg = RTAI_CALIBRATED_CPU_FREQ [static]

Definition at line 72 of file hal.c.

struct hal_domain_struct rtai_domain

Definition at line 215 of file hal.c.

void(*) rtai_isr_hook(int cpuid) [static]

Definition at line 87 of file hal.c.

struct rtai_switch_data rtai_linux_context[RTAI_NR_CPUS]

Definition at line 218 of file hal.c.

struct { ... } rtai_linux_irq[RTAI_NR_IRQS] [static]

spinlock_t rtai_lsrq_lock = SPIN_LOCK_UNLOCKED [static]

Definition at line 201 of file hal.c.

struct rtai_realtime_irq_s rtai_realtime_irq[RTAI_NR_IRQS]

Definition at line 185 of file hal.c.

atomic_t rtai_sync_count = ATOMIC_INIT(1) [static]

Definition at line 182 of file hal.c.

volatile int rtai_sync_level [static]

Definition at line 183 of file hal.c.

unsigned long rtai_sysreq_map = 1 [static]

Definition at line 198 of file hal.c.

unsigned long rtai_sysreq_pending [static]

Definition at line 199 of file hal.c.

unsigned long rtai_sysreq_running [static]

Definition at line 200 of file hal.c.

struct { ... } rtai_sysreq_table[RTAI_NR_SRQS] [static]

unsigned rtai_sysreq_virq [static]

Definition at line 197 of file hal.c.

unsigned rtai_sysreq_virq [static]

Definition at line 184 of file hal.c.

RT_TRAP_HANDLER rtai_trap_handler [static]

Definition at line 195 of file hal.c.

int(*) sched_intercept_syscall_prologue(struct pt_regs *) [static]

Definition at line 923 of file hal.c.

int spurious_interrupts [static]

Definition at line 723 of file hal.c.

long long(* u_handler)(unsigned long)


Generated on Tue Feb 2 17:46:08 2010 for RTAI API by  doxygen 1.4.7