uchar Isrc_mask,
uint Iaddr,
bool Iclr_bit,
- char *Iname):
+ char *Iname,
+ int apoll_priority):
cl_base()
{
+ poll_priority= apoll_priority;
ie_mask = Iie_mask;
src_reg = Isrc_reg;
src_mask= Isrc_mask;
addr = Iaddr;
clr_bit = Iclr_bit;
if (Iname != NULL)
- name= strdup(Iname);
+ set_name(Iname);
else
- name= strdup("unknown");
+ set_name("unknown");
active= DD_TRUE;
}
-cl_it_src::~cl_it_src(void)
-{
- free(name);
-}
+cl_it_src::~cl_it_src(void) {}
bool
cl_it_src::is_active(void)
}
+/*
+ */
+
+cl_irqs::cl_irqs(t_index alimit, t_index adelta):
+ cl_sorted_list(alimit, adelta, "irqs")
+{
+ Duplicates= DD_TRUE;
+}
+
+void *
+cl_irqs::key_of(void *item)
+{
+ class cl_it_src *itsrc= (class cl_it_src *)item;
+ return(&itsrc->poll_priority);
+}
+
+int
+cl_irqs::compare(void *key1, void *key2)
+{
+ int *k1= (int*)key1, *k2= (int*)key2;
+
+ if (*k1 == *k2)
+ return(0);
+ else if (*k1 < *k2)
+ return(-1);
+ return(1);
+}
+
+
/*
* Interrupt level
******************************************************************************