]> rtime.felk.cvut.cz Git - l4.git/blobdiff - l4/pkg/io/server/src/resource.h
update
[l4.git] / l4 / pkg / io / server / src / resource.h
index f65c4f204793a368d368d7281847cf1f7b0de319..81a3cee6e4c8ab690f27bdb7e061a84af02d1cac 100644 (file)
@@ -71,15 +71,22 @@ public:
     F_width_64bit   = 0x010000,
     F_relative      = 0x040000,
 
-    Irq_info_base   = 0x100000,
-    Irq_info_factor = Irq_info_base / 2,
-    Irq_level       = L4_IRQ_F_LEVEL * Irq_info_factor, //0x000000,
-    Irq_edge        = L4_IRQ_F_EDGE  * Irq_info_factor, //0x100000,
-    Irq_high        = L4_IRQ_F_POS   * Irq_info_factor, //0x000000,
-    Irq_low         = L4_IRQ_F_NEG   * Irq_info_factor, //0x200000,
-    Irq_both        = L4_IRQ_F_BOTH  * Irq_info_factor, //0x400000,
+    Irq_type_base         = 0x100000,
+    Irq_type_mask         = L4_IRQ_F_MASK       * Irq_type_base,
+    Irq_type_none         = L4_IRQ_F_NONE       * Irq_type_base,
+    Irq_type_level_high   = L4_IRQ_F_LEVEL_HIGH * Irq_type_base,
+    Irq_type_level_low    = L4_IRQ_F_LEVEL_LOW  * Irq_type_base,
+    Irq_type_raising_edge = L4_IRQ_F_POS_EDGE   * Irq_type_base,
+    Irq_type_falling_edge = L4_IRQ_F_NEG_EDGE   * Irq_type_base,
+    Irq_type_both_edges   = L4_IRQ_F_BOTH_EDGE  * Irq_type_base,
   };
 
+  bool irq_is_level_triggered() const
+  { return (_f & Irq_type_mask) & (L4_IRQ_F_LEVEL * Irq_type_base); }
+
+  bool irq_is_low_polarity() const
+  { return (_f & Irq_type_mask) & (L4_IRQ_F_NEG   * Irq_type_base); }
+
   explicit Resource(unsigned long flags = 0)
   : _f(flags | F_fixed_size), _p(0), _s(0), _e(0), _a(0) {}