feat: nearly complete POSIX.1-2008 compliant terminal interface implementation
[lunaix-os.git] / lunaix-os / hal / ahci / io_event.c
index bb3142b37aefedc6749835460d61b6bba80a4afa..c843d29661553e4a2fabfefeb683e720a0732e89 100644 (file)
@@ -6,14 +6,14 @@
 
 LOG_MODULE("io_evt")
 
 
 LOG_MODULE("io_evt")
 
-extern struct llist_header ahcis;
-
 void
 void
-__ahci_hba_isr(const isr_param* param)
+ahci_hba_isr(const isr_param* param)
 {
     struct ahci_hba* hba;
     struct ahci_driver *pos, *n;
 {
     struct ahci_hba* hba;
     struct ahci_driver *pos, *n;
-    llist_for_each(pos, n, &ahcis, ahci_drvs)
+    struct llist_header* ahcis = (struct llist_header*)isrm_get_payload(param);
+
+    llist_for_each(pos, n, ahcis, ahci_drvs)
     {
         if (pos->id == (int)param->execp->vector) {
             hba = &pos->hba;
     {
         if (pos->id == (int)param->execp->vector) {
             hba = &pos->hba;
@@ -65,7 +65,7 @@ proceed:
 
     blkio_schedule(ioreq->io_ctx);
     blkio_complete(ioreq);
 
     blkio_schedule(ioreq->io_ctx);
     blkio_complete(ioreq);
-    vfree(cmdstate->cmd_table);
+    vfree_dma(cmdstate->cmd_table);
 
 done:
     hba_clear_reg(port->regs[HBA_RPxIS]);
 
 done:
     hba_clear_reg(port->regs[HBA_RPxIS]);