dinoo u onoj petlji while(ih) dodaješ prekide, a izvan nje u nekoj drugoj petlji hendlaš prekide sve dok ih ima i sve dok postoji prekid koji nije hendlan.
npr u to drugoj petlji staviš redom (meni je tak):
pi = list_get(&pr_reqs, FIRST);
while (pi && !pi->done)
{
p->done = 1
enable_interrupts(); // funkcija već postoji
pi->ihandler(pi->irq_number, pi->device);
disable_interrupts(); // postoji
list_remove(&pr_reqs, FIRST, NULL);
kfree(pi);
pi = list_get(&pr_reqs, FIRST);
}
ovaj treći parametar je ne znam ni ja točno što.
imam nešto tipa
list_h *p_lh; // nisam ni ja siguran za list_h što je, samo sam vidio da se koristio
// u list_sort_add za treći parametar stavim p_lh, ovo je u onoj petlji while(ih)
p_lh = kmalloc(sizeof(list_h));
nisam ni ja baš siguran u sve to, al na neku foru mi je radilo