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 Paolo Mantegazza,
Copyright © 2001 David Schleef,
Copyright © 2001 Lineo, Inc,
Copyright © 2002 Wolfgang Grandegger.

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

RTAI/PPC rewrite over Adeos:
Copyright &copy 2004 Wolfgang Grandegger.

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 <linux/version.h>
#include <linux/slab.h>
#include <linux/errno.h>
#include <linux/module.h>
#include <linux/interrupt.h>
#include <linux/irq.h>
#include <linux/console.h>
#include <asm/system.h>
#include <asm/hw_irq.h>
#include <asm/irq.h>
#include <asm/io.h>
#include <asm/mmu_context.h>
#include <asm/uaccess.h>
#include <asm/time.h>
#include <asm/types.h>
#include <asm/rtai_lxrt.h>
#include <asm/rtai_hal.h>
#include <stdarg.h>
#include <asm/rtai_usi.h>

Include dependency graph for hal.c:

Include dependency graph

Go to the source code of this file.

Defines

#define __RTAI_HAL__
#define RTAI_NR_IRQS   (RTAI_TIMER_DECR_IRQ + 1)
#define BEGIN_PIC()
#define END_PIC()
#define adeos_pend_irq(irq)
#define rtai_critical_sync   NULL
#define rt_free_apic_timers()   rt_free_timer()
#define RTAI_SCHED_ISR_LOCK()
#define RTAI_SCHED_ISR_UNLOCK()
#define RT_PRINTK_SRQ   1
#define PRINTK_BUF_SIZE   (10000)
#define TEMP_BUF_SIZE   (500)

Functions

 MODULE_LICENSE ("GPL")
 MODULE_PARM (rtai_cpufreq_arg,"i")
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)
void rt_set_irq_cookie (unsigned irq, void *cookie)
void rt_set_irq_retmode (unsigned irq, int retmode)
 rtai_save_and_lock_preempt_count ()
 start and initialize the PIC to accept interrupt request irq.
void rt_shutdown_irq (unsigned irq)
 Shut down an IRQ source.
void _rt_enable_irq (unsigned irq)
 Enable an IRQ source.
void rt_enable_irq (unsigned irq)
void rt_disable_irq (unsigned irq)
 Disable an IRQ source.
void rt_mask_and_ack_irq (unsigned irq)
 Mask and acknowledge and IRQ source.
void _rt_end_irq (unsigned irq)
 Unmask and IRQ source.
void rt_unmask_irq (unsigned irq)
void rt_ack_irq (unsigned irq)
 Acknowledge an IRQ source.
int rt_request_linux_irq (unsigned irq, irqreturn_t(*handler)(int irq, void *dev_id, struct pt_regs *regs), 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.
int rt_request_srq (unsigned label, void(*k_handler)(void), long long(*u_handler)(unsigned))
 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.
void rtai_broadcast_to_timers (int irq, void *dev_id, struct pt_regs *regs)
void rt_request_apic_timers (void(*handler)(void), struct apic_timer_setup_data *tmdata)
int rt_assign_irq_to_cpu (int irq, unsigned long cpus_mask)
int rt_reset_irq_to_sym_mode (int irq)
void rt_request_timer_cpuid (void(*handler)(void), unsigned tick, int cpuid)
int rt_request_timer (void(*handler)(void), unsigned tick, int use_apic)
 Install a timer interrupt handler.
void rt_free_timer (void)
 Uninstall a timer interrupt handler.
 rtai_isr_hook (cpuid)
 while (0)
void rtai_ssrq_trampoline (unsigned virq)
long long rtai_usrq_trampoline (unsigned srq, unsigned label)
asmlinkage int rtai_syscall_entry (struct pt_regs *regs)
void rtai_install_archdep (void)
void rtai_uninstall_archdep (void)
void(*)(int) rt_set_ihook (void(*hookfn)(int))
void rtai_domain_entry (int iflag)
void rt_printk_srq_handler (void)
int __rtai_hal_init (void)
void __rtai_hal_exit (void)
 module_init (__rtai_hal_init)
 module_exit (__rtai_hal_exit)
int rt_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_request_linux_irq)
 EXPORT_SYMBOL (rt_free_linux_irq)
 EXPORT_SYMBOL (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_request_timer)
 EXPORT_SYMBOL (rt_free_timer)
 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 (ll2a)
 EXPORT_SYMBOL (rtai_lxrt_invoke_entry)
 EXPORT_SYMBOL (rt_scheduling)

Variables

unsigned long rtai_cpufreq_arg = RTAI_CALIBRATED_CPU_FREQ
struct {
   volatile int   locked
   volatile int   rqsted
rt_scheduling [RTAI_NR_CPUS]
void(* rtai_isr_hook )(int cpuid)
desc_struct idt_table []
adomain_t rtai_domain
struct {
   int(*   handler )(unsigned irq, void *cookie)
   void *   cookie
   int   retmode
rtai_realtime_irq [RTAI_NR_IRQS]
struct {
   unsigned long   flags
   int   count
rtai_linux_irq [NR_IRQS]
struct {
   void(*   k_handler )(void)
   long long(*   u_handler )(unsigned)
   unsigned   label
rtai_sysreq_table [RTAI_NR_SRQS]
unsigned rtai_sysreq_virq
unsigned long rtai_sysreq_map = 3
unsigned long rtai_sysreq_pending
unsigned long rtai_sysreq_running
spinlock_t rtai_ssrq_lock = SPIN_LOCK_UNLOCKED
volatile int rtai_sync_level
atomic_t rtai_sync_count = ATOMIC_INIT(1)
rt_times rt_times = { 0 }
rt_times rt_smp_times [RTAI_NR_CPUS] = { { 0 } }
rtai_switch_data rtai_linux_context [RTAI_NR_CPUS] = { { 0 } }
calibration_data rtai_tunables = { 0 }
volatile unsigned long rtai_cpu_realtime = 0
volatile unsigned long rtai_cpu_lock = 0
int rtai_adeos_ptdbase = -1
hw_interrupt_type __adeos_std_irq_dtype []
unsigned long adeos_pended
long long(* rtai_lxrt_invoke_entry )(unsigned long, unsigned long)
void * adeos_extern_irq_handler
char rt_printk_buf [PRINTK_BUF_SIZE]
int buf_front
int buf_back
char buf [TEMP_BUF_SIZE]


Define Documentation

 
#define END_PIC  ) 
 

Value:

rtai_restore_preempt_count(); \ adp_root->cpudata[cpuid].status = lflags; \ rtai_restore_flags(flags); \ } while (0)

Referenced by _rt_enable_irq(), _rt_end_irq(), rt_disable_irq(), rt_shutdown_irq(), and rtai_save_and_lock_preempt_count().


Variable Documentation

void* cookie
 

Definition at line 93 of file hal.c.

int count
 

Definition at line 99 of file hal.c.

unsigned long flags
 

Definition at line 98 of file hal.c.

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

void(* k_handler)(void)
 

unsigned label
 

Definition at line 105 of file hal.c.

volatile int locked
 

Definition at line 79 of file hal.c.

int retmode
 

Definition at line 94 of file hal.c.

volatile int rqsted
 

Definition at line 79 of file hal.c.

long long(* u_handler)(unsigned)
 


Generated on Thu Nov 20 11:49:58 2008 for RTAI API by doxygen 1.3.8