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


Detailed Description

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

Based on the original RTAI layer for x86.

Original RTAI/x86 layer implementation: Copyright © 2000 Paolo Mantegazza, Copyright © 2000 Steve Papacharalambous, Copyright © 2000 Stuart Hughes, and others.

RTAI/x86 rewrite over Adeos: Copyright &copy 2002 Philippe Gerum. Copyright &copy 2005 Paolo Mantegazza.

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.

Defines

#define INCLUDED_BY_HAL_C
#define CHECK_STACK_IN_IRQ   0
#define __RTAI_HAL__
#define RTAI_NR_IRQS   IPIPE_NR_XIRQS
#define rtai_setup_periodic_apic(count, vector)
#define rtai_setup_oneshot_apic(count, vector)
#define __ack_APIC_irq()
#define rtai_irq_desc(irq)   (irq_desc[irq].chip)
#define BEGIN_PIC()
#define END_PIC()
#define hal_lock_irq(x, y, z)
#define hal_unlock_irq(x, y)
#define REQUEST_LINUX_IRQ_BROADCAST_TO_APIC_TIMERS()   0
#define FREE_LINUX_IRQ_BROADCAST_TO_APIC_TIMERS()   ;
#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); } while (0)
#define HAL_UNLOCK_LINUX()   do { rtai_cli(); rt_restore_switch_to_linux(sflags, cpuid); } while (0)
#define __STR(x)   #x
#define STR(x)   __STR(x)
#define SYMBOL_NAME_STR(X)   #X
#define SAVE_REG
#define RSTR_REG
#define DEFINE_VECTORED_ISR(name, fun)
#define rtai_critical_sync   NULL
#define CHECK_KERCTX()   ;
#define HINT_DIAG_MSG(x)

Functions

 MODULE_LICENSE ("GPL")
 RTAI_MODULE_PARM (rtai_cpufreq_arg, ulong)
unsigned long rtai_critical_enter (void(*synch)(void))
void rtai_critical_exit (unsigned long flags)
 RTAI_MODULE_PARM (IsolCpusMask, ulong)
int rt_request_irq (unsigned irq, int(*handler)(unsigned irq, void *cookie), void *cookie, int retmode)
int rt_release_irq (unsigned irq)
int rt_ack_tmr (unsigned int irq)
int rt_ack_uart (unsigned int 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)
 start and initialize the PIC to accept interrupt request irq.
void rt_shutdown_irq (unsigned irq)
 Shut down an IRQ source.
static void _rt_enable_irq (unsigned irq)
void rt_enable_irq (unsigned irq)
 Enable an IRQ source.
void rt_disable_irq (unsigned irq)
 Disable an IRQ source.
void rt_mask_and_ack_irq (unsigned irq)
 Mask and acknowledge and IRQ source.
static void _rt_end_irq (unsigned irq)
void rt_unmask_irq (unsigned irq)
 Unmask and IRQ source.
void rt_ack_irq (unsigned irq)
 Acknowledge an IRQ source.
void rt_end_irq (unsigned irq)
void rt_eoi_irq (unsigned irq)
int rt_request_linux_irq (unsigned irq, void *handler, char *name, void *dev_id)
 Install shared Linux interrupt handler.
int rt_free_linux_irq (unsigned irq, void *dev_id)
 Uninstall shared Linux interrupt handler.
void rt_pend_linux_irq (unsigned irq)
 Pend an IRQ to Linux.
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))
 Install a system request handler.
int rt_free_srq (unsigned srq)
 Uninstall a system request handler.
void rt_pend_linux_srq (unsigned srq)
 Append a Linux IRQ.
irqreturn_t rtai_broadcast_to_local_timers (int irq, void *dev_id, struct pt_regs *regs)
int rt_assign_irq_to_cpu (int irq, unsigned long cpus_mask)
int rt_reset_irq_to_sym_mode (int irq)
void mcf_settimericr (int timer, int level)
int rt_request_timer (void(*handler)(void), unsigned tick, int unused)
 Install a timer interrupt handler.
void rt_free_timer (void)
 Uninstall a timer interrupt handler.
long long rdtsc ()
RT_TRAP_HANDLER rt_set_trap_handler (RT_TRAP_HANDLER handler)
int rtai_8254_timer_handler (struct pt_regs regs)
static int rtai_hirq_dispatcher (unsigned irq, struct pt_regs *regs)
 RTAI_MODULE_PARM (PrintFpuTrap, int)
 RTAI_MODULE_PARM (PrintFpuInit, int)
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)
int usi_SRQ_call (unsigned long srq, unsigned long args, long long *result, unsigned long lsr)
asmlinkage int rtai_syscall_dispatcher (__volatile struct pt_regs pt)
void rtai_uvec_handler (void)
 DEFINE_VECTORED_ISR (rtai_uvec_handler, rtai_syscall_dispatcher)
desc_struct rtai_set_gate_vector (unsigned vector, int type, int dpl, void *handler)
void rtai_cmpxchg_trap_handler (void)
 __asm__ ("rtai_cmpxchg_trap_handler:\n\t""move #0x2700,%sr\n\t""movel %a1@, %d0\n\t""cmpl %d0,%d2\n\t""bnes 1f\n\t""movel %d3,%a1@\n\t""1:\n\t""rte")
void rtai_xchg_trap_handler (void)
 __asm__ ("rtai_xchg_trap_handler:\n\t""move #0x2700,%sr\n\t""movel %a1@, %d0\n\t""movel %d2,%a1@\n\t""rte")
void rtai_reset_gate_vector (unsigned vector, struct desc_struct e)
static void rtai_install_archdep (void)
static void rtai_uninstall_archdep (void)
int rtai_calibrate_8254 (void)
void(*)(int) rt_set_ihook (void(*hookfn)(int))
void rtai_set_linux_task_priority (struct task_struct *task, int policy, int prio)
void ack_bad_irq (unsigned int irq)
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_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_end_irq)
 EXPORT_SYMBOL (rt_eoi_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_timer)
 EXPORT_SYMBOL (rt_free_timer)
 EXPORT_SYMBOL (rdtsc)
 EXPORT_SYMBOL (rt_set_trap_handler)
 EXPORT_SYMBOL (rt_set_ihook)
 EXPORT_SYMBOL (rt_set_irq_ack)
 EXPORT_SYMBOL (rtai_calibrate_8254)
 EXPORT_SYMBOL (rtai_broadcast_to_local_timers)
 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)
 EXPORT_SYMBOL (rt_linux_hrt_set_mode)
 EXPORT_SYMBOL (rt_linux_hrt_next_shot)
void rt_release_rtc (void)
void rt_request_rtc (long rtc_freq, void *handler)
 EXPORT_SYMBOL (rt_request_rtc)
 EXPORT_SYMBOL (rt_release_rtc)

Variables

static unsigned long rtai_cpufreq_arg = CONFIG_CLOCK_FREQ
struct {
   volatile int   locked
   volatile int   rqsted
rt_scheduling [RTAI_NR_CPUS]
static void(*) rtai_isr_hook (int cpuid)
hal_domain_struct rtai_domain
rtai_realtime_irq_s rtai_realtime_irq [RTAI_NR_IRQS]
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]
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
static volatile int rtai_sync_level
static atomic_t rtai_sync_count = ATOMIC_INIT(1)
static struct desc_struct rtai_sysvec
static struct desc_struct rtai_cmpxchg_trap_vec
static struct desc_struct rtai_xchg_trap_vec
static RT_TRAP_HANDLER rtai_trap_handler
rt_times rt_times
rt_times rt_smp_times [RTAI_NR_CPUS]
rtai_switch_data rtai_linux_context [RTAI_NR_CPUS]
calibration_data rtai_tunables
volatile unsigned long rtai_cpu_realtime
volatile unsigned long rtai_cpu_lock [2]
unsigned long IsolCpusMask = 0
static int timer_inuse = 0
unsigned long io_apic_irqs
static int PrintFpuTrap = 0
static int PrintFpuInit = 0
long long(*) rtai_lxrt_dispatcher (unsigned long, unsigned long)
static int(*) sched_intercept_syscall_prologue (struct pt_regs *)
void * _ramvec
void * hal_irq_handler
void(*) rt_linux_hrt_set_mode (int clock_event_mode, void *)
int(*) rt_linux_hrt_next_shot (unsigned long, void *)


Function Documentation

EXPORT_SYMBOL ( rt_release_rtc   ) 

EXPORT_SYMBOL ( rt_request_rtc   ) 

EXPORT_SYMBOL ( rt_linux_hrt_next_shot   ) 

EXPORT_SYMBOL ( rt_linux_hrt_set_mode   ) 

void rt_release_rtc ( void   ) 

Definition at line 1681 of file hal.c.

void rt_request_rtc ( long  rtc_freq,
void *  handler 
)

Definition at line 1686 of file hal.c.


Variable Documentation

int count

Definition at line 108 of file hal.c.

unsigned long flags

Definition at line 107 of file hal.c.

void(* k_handler)(void)

unsigned long label

Definition at line 114 of file hal.c.

volatile int locked

Definition at line 96 of file hal.c.

volatile int rqsted

Definition at line 96 of file hal.c.

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

Definition at line 1672 of file hal.c.

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

Definition at line 1671 of file hal.c.

long long(* u_handler)(unsigned long)


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