]> rtime.felk.cvut.cz Git - l4.git/blobdiff - kernel/fiasco/src/kern/ux/timer-ux.cpp
update
[l4.git] / kernel / fiasco / src / kern / ux / timer-ux.cpp
index b1656720f19bfcd36ebc238c6757f45ec172b8b4..2bcce1bdd81468b9743973ba52872459b9f43688 100644 (file)
@@ -1,14 +1,10 @@
 // ------------------------------------------------------------------------
 INTERFACE[ux]:
 
-#include "irq_chip.h"
-
 EXTENSION class Timer
 {
 private:
   static void bootstrap();
-
-  static Irq_base *irq;
 };
 
 // ------------------------------------------------------------------------
@@ -21,62 +17,44 @@ IMPLEMENTATION[ux]:
 #include "boot_info.h"
 #include "initcalls.h"
 #include "irq_chip.h"
-#include "irq_pin.h"
+#include "irq_mgr.h"
 #include "pic.h"
 
-Irq_base *Timer::irq;
+PUBLIC static inline NEEDS["pic.h"]
+unsigned
+Timer::irq() { return Pic::Irq_timer; }
+
+PUBLIC static inline
+unsigned
+Timer::irq_mode() { return 0; }
 
 IMPLEMENT FIASCO_INIT_CPU
 void
-Timer::init()
+Timer::init(unsigned)
 {
   if (Boot_info::irq0_disabled())
     return;
 
-  if (!Pic::setup_irq_prov (Pic::IRQ_TIMER, Boot_info::irq0_path(), bootstrap))
+  if (!Pic::setup_irq_prov(Pic::Irq_timer, Boot_info::irq0_path(), bootstrap))
     {
       puts ("Problems setting up timer interrupt!");
       exit (1);
     }
-
-  // reserve timer IRQ
-  Irq_chip *c = Irq_chip::hw_chip;
-  c->reserve(Pic::IRQ_TIMER);
-
-  static Irq_base ib;
-  c->setup(&ib, Pic::IRQ_TIMER);
-  irq = &ib;
 }
 
 IMPLEMENT FIASCO_INIT_CPU
 void
 Timer::bootstrap()
 {
-  close (Boot_info::fd());
-  execl (Boot_info::irq0_path(), "[I](irq0)", NULL);
+  close(Boot_info::fd());
+  execl(Boot_info::irq0_path(), "[I](irq0)", NULL);
 }
 
-IMPLEMENT inline
+PUBLIC static inline
 void
 Timer::acknowledge()
 {}
 
-IMPLEMENT inline NEEDS["boot_info.h", "irq_pin.h"]
-void
-Timer::enable()
-{
-  if (Boot_info::irq0_disabled())
-    return;
-
-  irq->pin()->unmask();
-}
-
-IMPLEMENT inline NEEDS["irq_pin.h"]
-void
-Timer::disable()
-{
-  irq->pin()->mask();
-}
 
 IMPLEMENT inline
 void