[rtems commit] pc386 - Clock driver compiles again plus clean up

Joel Sherrill joel at rtems.org
Thu May 10 16:15:48 UTC 2012


Module:    rtems
Branch:    master
Commit:    eb7c6a84b65e110034ec481c6e9dd09f728240e7
Changeset: http://git.rtems.org/rtems/commit/?id=eb7c6a84b65e110034ec481c6e9dd09f728240e7

Author:    Joel Sherrill <joel.sherrill at oarcorp.com>
Date:      Thu May 10 11:17:59 2012 -0500

pc386 - Clock driver compiles again plus clean up

The clock drivers were very inconsistent about prototyping
the ISR handlers. This broke with the recent clean up.

Tested on qemu.

---

 c/src/lib/libbsp/i386/pc386/clock/ckinit.c |   44 ++++++++++++++++-----------
 1 files changed, 26 insertions(+), 18 deletions(-)

diff --git a/c/src/lib/libbsp/i386/pc386/clock/ckinit.c b/c/src/lib/libbsp/i386/pc386/clock/ckinit.c
index c88d3b8..974a4ea 100644
--- a/c/src/lib/libbsp/i386/pc386/clock/ckinit.c
+++ b/c/src/lib/libbsp/i386/pc386/clock/ckinit.c
@@ -1,4 +1,6 @@
-/*
+/**
+ *  @file
+ *
  *  Clock Tick Device Driver
  *
  *  History:
@@ -10,8 +12,10 @@
  *    + Reworked by Joel Sherrill to use clock driver template.
  *      This removes all boilerplate and leave original hardware
  *      code I developed for the go32 BSP.
- *
- *  COPYRIGHT (c) 1989-2008.
+ */
+
+/*
+ *  COPYRIGHT (c) 1989-2012.
  *  On-Line Applications Research Corporation (OAR).
  *
  *  The license and distribution terms for this file may be
@@ -32,6 +36,18 @@ volatile uint32_t pc386_microseconds_per_isr;
 volatile uint32_t pc386_isrs_per_tick;
 uint32_t pc386_clock_click_count;
 
+/* forward declaration */
+void Clock_isr(void *param);
+void Clock_driver_support_at_tick_tsc(void);
+void Clock_driver_support_at_tick_empty(void);
+uint32_t bsp_clock_nanoseconds_since_last_tick_tsc(void);
+uint32_t bsp_clock_nanoseconds_since_last_tick_i8254(void);
+void Clock_isr_handler(rtems_irq_hdl_param param);
+int clockIsOn(const rtems_irq_connect_data* unused);
+void clockOff(const rtems_irq_connect_data* unused);
+void Clock_driver_install_handler(void);
+void Clock_driver_support_initialize_hardware(void);
+
 /*
  * Roughly the number of cycles per tick and per nanosecond. Note that these
  * will be wildly inaccurate if the chip speed changes due to power saving
@@ -96,12 +112,11 @@ void Clock_driver_support_at_tick_empty(void)
 
 extern volatile uint32_t Clock_driver_isrs;
 
+/*
+ * Get nanoseconds using Pentium-compatible TSC register
+ */
 uint32_t bsp_clock_nanoseconds_since_last_tick_tsc(void)
 {
-  /******
-   * Get nanoseconds using Pentium-compatible TSC register
-   ******/
-
   uint64_t                 diff_nsec;
 
   diff_nsec = rdtsc() - pc586_tsc_at_tick;
@@ -124,13 +139,11 @@ uint32_t bsp_clock_nanoseconds_since_last_tick_tsc(void)
   return (uint32_t)diff_nsec;
 }
 
+/*
+ * Get nanoseconds using 8254 timer chip
+ */
 uint32_t bsp_clock_nanoseconds_since_last_tick_i8254(void)
 {
-
-  /******
-   * Get nanoseconds using 8254 timer chip
-   ******/
-
   uint32_t                 usecs, clicks, isrs;
   uint32_t                 usecs1, usecs2;
   uint8_t                  lsb, msb;
@@ -269,18 +282,13 @@ int clockIsOn(const rtems_irq_connect_data* unused)
   return ((i8259s_cache & 0x1) == 0);
 }
 
-/* a bit of a hack since the ISR models do not match */
-rtems_isr Clock_isr(
-  rtems_vector_number vector
-);
-
 bool Clock_isr_enabled = false;
 void Clock_isr_handler(
   rtems_irq_hdl_param param 
 )
 {
   if ( Clock_isr_enabled )
-    Clock_isr( 0 );
+    Clock_isr( param );
 }
 
 static rtems_irq_connect_data clockIrqData = {




More information about the vc mailing list