IRQ: refactoring caps names
authorLukas Humbel <lukas.humbel@inf.ethz.ch>
Tue, 5 Apr 2016 13:05:59 +0000 (15:05 +0200)
committerLukas Humbel <lukas.humbel@inf.ethz.ch>
Wed, 6 Apr 2016 08:37:43 +0000 (10:37 +0200)
Signed-off-by: Lukas Humbel <lukas.humbel@inf.ethz.ch>

capabilities/caps.hl
include/arch/x86_64/barrelfish/invocations_arch.h
include/barrelfish_kpi/capabilities.h
kernel/arch/x86_64/irq.c
kernel/arch/x86_64/syscall.c
kernel/capabilities.c
lib/barrelfish/debug.c
lib/barrelfish/inthandler.c
lib/pci/pci_client.c

index 1d69017..6eae853 100644 (file)
@@ -388,14 +388,14 @@ cap IRQTable is_always_copy {
     **/
 };
 
-cap IRQVector from IRQTable {
+cap IRQDest {
     eq uint64 controller;
     eq uint64 vector;
 };
 
-cap IRQ {
-       /* IRQ capability. Represents an interrupt line at an interrupt controller. */
-       eq uint64 line;
+cap IRQSrc {
+       /* IRQ capability. Represents an interrupt vector at an interrupt controller. */
+       eq uint64 vector;
        eq uint64 controller;
 };
 
index 26f43a9..199cc18 100644 (file)
@@ -414,22 +414,22 @@ invoke_dispatcher_setup_guest(struct capref dispatcher,
                        get_cap_addr(guest_control_cap)).error;
 }
 
-static inline errval_t invoke_irqvector_connect(struct capref irqcap, struct capref epcap)
+static inline errval_t invoke_irqdest_connect(struct capref irqcap, struct capref epcap)
 {
-    struct sysret ret = cap_invoke2(irqcap, IRQVectorCmd_Connect, get_cap_addr(epcap));
+    struct sysret ret = cap_invoke2(irqcap, IRQDestCmd_Connect, get_cap_addr(epcap));
     return ret.error;
 }
 
-static inline errval_t invoke_irqvector_get_vector(struct capref irqcap, uint32_t * out_vec)
+static inline errval_t invoke_irqdest_get_vector(struct capref irqcap, uint32_t * out_vec)
 {
-    struct sysret ret = cap_invoke1(irqcap, IRQVectorCmd_GetVector);
+    struct sysret ret = cap_invoke1(irqcap, IRQDestCmd_GetVector);
     *out_vec = ret.value;
     return ret.error;
 }
 
-static inline errval_t invoke_irq_get_vector(struct capref irqcap, uint32_t * out_vec)
+static inline errval_t invoke_irqsrc_get_vector(struct capref irqcap, uint32_t * out_vec)
 {
-    struct sysret ret = cap_invoke1(irqcap, IRQCmd_GetVector);
+    struct sysret ret = cap_invoke1(irqcap, IRQSrcCmd_GetVector);
     *out_vec = ret.value;
     return ret.error;
 }
@@ -443,7 +443,7 @@ static inline errval_t invoke_irqtable_alloc_dest_cap(struct capref irqcap, stru
 }
 
 /**
- * Deprecated. Use
+ * Deprecated. Use invoke_irqtable_alloc_dest_cap
  */
 static inline errval_t invoke_irqtable_alloc_vector(struct capref irqcap, int *retirq)
 {
index e6e1a60..0c5479f 100644 (file)
@@ -342,17 +342,17 @@ enum irqtable_cmd {
  * IRQ Vector commands.
  */
 
-enum irqvector_cmd {
-       IRQVectorCmd_Connect,   ///< Connect this capability to a messaging channel
-       IRQVectorCmd_GetVector ///< Return the local interrupt vector
+enum irqdest_cmd {
+       IRQDestCmd_Connect,     ///< Connect this capability to a messaging channel
+       IRQDestCmd_GetVector ///< Return the local interrupt vector
 };
 
 /**
  * IRQ Vector commands.
  */
 
-enum irq_cmd {
-    IRQCmd_GetVector   ///< Return vector and controller saved in this cap.
+enum irqsrc_cmd {
+    IRQSrcCmd_GetVector   ///< Return vector and controller saved in this cap.
 };
 
 
index bc0e4b7..6e4c4ff 100644 (file)
@@ -526,10 +526,10 @@ errval_t irq_debug_create_src_cap(uint8_t dcn_vbits, capaddr_t dcn, capaddr_t ou
     struct cte out_cap;
     memset(&out_cap, 0, sizeof(struct cte));
 
-    out_cap.cap.type = ObjType_IRQ;
-    out_cap.cap.u.irq.line = gsi;
-    const uint32_t ioapic_controller_id = 2;
-    out_cap.cap.u.irq.controller = ioapic_controller_id;
+    out_cap.cap.type = ObjType_IRQSrc;
+    out_cap.cap.u.irqsrc.vector = gsi;
+    const uint32_t ioapic_controller_id = 1000;
+    out_cap.cap.u.irqsrc.controller = ioapic_controller_id;
 
     struct cte * cn;
     err = caps_lookup_slot(&dcb_current->cspace.cap, dcn, dcn_vbits, &cn, CAPRIGHTS_WRITE);
@@ -571,9 +571,9 @@ errval_t irq_table_alloc_dest_cap(uint8_t dcn_vbits, capaddr_t dcn, capaddr_t ou
         memset(&out_cap, 0, sizeof(struct cte));
         bitmap_set_true(kcb_current->irq_in_use, i);
 
-        out_cap.cap.type = ObjType_IRQVector;
-        out_cap.cap.u.irqvector.controller = my_core_id;
-        out_cap.cap.u.irqvector.vector = i;
+        out_cap.cap.type = ObjType_IRQDest;
+        out_cap.cap.u.irqdest.controller = my_core_id;
+        out_cap.cap.u.irqdest.vector = i;
 
         struct cte * cn;
         err = caps_lookup_slot(&dcb_current->cspace.cap, dcn, dcn_vbits, &cn, CAPRIGHTS_WRITE);
@@ -611,12 +611,12 @@ errval_t irq_connect(struct capability *dest_cap, capaddr_t endpoint_adr)
         return SYS_ERR_IRQ_NO_LISTENER;
     }
 
-    assert(dest_cap->type == ObjType_IRQVector);
-    if(dest_cap->u.irqvector.controller != my_core_id){
+    assert(dest_cap->type == ObjType_IRQDest);
+    if(dest_cap->u.irqdest.controller != my_core_id){
         return SYS_ERR_IRQ_WRONG_CONTROLLER;
     }
 
-    uint64_t dest_vec = dest_cap->u.irqvector.vector;
+    uint64_t dest_vec = dest_cap->u.irqdest.vector;
     assert(kcb_current->irq_dispatch[dest_vec].cap.type == ObjType_Null);
     caps_copy_to_cte(&kcb_current->irq_dispatch[dest_vec],
             endpoint,0,0,0);
index 4e56f07..8891259 100644 (file)
@@ -799,26 +799,27 @@ static struct sysret handle_trace_setup(struct capability *cap,
     return SYSRET(SYS_ERR_OK);
 }
 
-static struct sysret handle_irq_get_vector(struct capability * to, int cmd,
+static struct sysret handle_irqsrc_get_vector(struct capability * to, int cmd,
         uintptr_t *args)
 {
     struct sysret ret;
     ret.error = SYS_ERR_OK;
-    ret.value = to->u.irq.line;
+    ret.value = to->u.irqsrc.vector;
     return ret;
 
 }
 
-static struct sysret handle_irqvector_get_vector(struct capability *to, int cmd,
+
+static struct sysret handle_irqdest_get_vector(struct capability *to, int cmd,
                                             uintptr_t *args)
 {
     struct sysret ret;
     ret.error = SYS_ERR_OK;
-    ret.value = to->u.irqvector.vector;
+    ret.value = to->u.irqdest.vector;
     return ret;
 }
 
-static struct sysret handle_irqvector_connect(struct capability *to, int cmd,
+static struct sysret handle_irqdest_connect(struct capability *to, int cmd,
                                             uintptr_t *args)
 {
     return SYSRET(irq_connect(to, args[0]));
@@ -1180,12 +1181,12 @@ static invocation_handler_t invocations[ObjType_Num][CAP_MAX_CMD] = {
         [IPICmd_Send_Start] = kernel_send_start_ipi,
         [IPICmd_Send_Init] = kernel_send_init_ipi,
     },
-    [ObjType_IRQ] = {
-        [IRQCmd_GetVector] = handle_irq_get_vector
-    },
-       [ObjType_IRQVector] = {
-                       [IRQVectorCmd_Connect] = handle_irqvector_connect,
-                       [IRQVectorCmd_GetVector] = handle_irqvector_get_vector
+       [ObjType_IRQDest] = {
+        [IRQDestCmd_Connect] = handle_irqdest_connect,
+        [IRQDestCmd_GetVector] = handle_irqdest_get_vector
+       },
+       [ObjType_IRQSrc] = {
+        [IRQSrcCmd_GetVector] = handle_irqsrc_get_vector,
        },
     [ObjType_IRQTable] = {
         [IRQTableCmd_Alloc] = handle_irq_table_alloc,
index d5b9141..5b9055e 100644 (file)
@@ -232,16 +232,13 @@ int sprint_cap(char *buf, size_t len, struct capability *cap)
                                   cap->u.vnode_aarch64_l3_mapping.frame,
                                   cap->u.vnode_aarch64_l3_mapping.pte,
                                   cap->u.vnode_aarch64_l3_mapping.pte_count);
-    case ObjType_IRQ:
-            return snprintf(buf, len, "IRQ cap (line: %"PRIu64", ctrl:%"PRIu64")",
-                        cap->u.irq.line, cap->u.irq.controller);
 
     case ObjType_IRQTable:
         return snprintf(buf, len, "IRQTable cap");
 
-    case ObjType_IRQVector:
-        return snprintf(buf, len, "IRQVector cap (vec: %"PRIu64", ctrl: %"PRIu64")",
-                cap->u.irqvector.vector, cap->u.irqvector.controller);
+    case ObjType_IRQDest:
+        return snprintf(buf, len, "IRQDest cap (vec: %"PRIu64", ctrl: %"PRIu64")",
+                cap->u.irqdest.vector, cap->u.irqdest.controller);
 
     case ObjType_EndPoint:
         return snprintf(buf, len, "EndPoint cap (disp %p offset 0x%" PRIxLVADDR ")",
@@ -398,8 +395,8 @@ static size_t caps_numobjs(enum objtype type, uint8_t bits, uint8_t objbits)
 
     case ObjType_Kernel:
     case ObjType_IRQTable:
-    case ObjType_IRQVector:
-    case ObjType_IRQ:
+    case ObjType_IRQDest:
+    case ObjType_IRQSrc:
     case ObjType_IO:
     case ObjType_EndPoint:
     case ObjType_ID:
@@ -995,7 +992,8 @@ static errval_t caps_create(enum objtype type, lpaddr_t lpaddr, uint8_t bits,
     case ObjType_Kernel:
     case ObjType_IPI:
     case ObjType_IRQTable:
-    case ObjType_IRQVector:
+    case ObjType_IRQDest:
+    case ObjType_IRQSrc:
     case ObjType_EndPoint:
     case ObjType_Notify_RCK:
     case ObjType_Notify_IPI:
index 294ec3d..4213908 100644 (file)
@@ -309,16 +309,13 @@ int debug_print_cap(char *buf, size_t len, struct capability *cap)
                                   cap->u.vnode_aarch64_l3_mapping.pte,
                                   cap->u.vnode_aarch64_l3_mapping.pte_count);
 
-    case ObjType_IRQ:
-                return snprintf(buf, len, "IRQ cap (line: %"PRIu64", ctrl:%"PRIu64")",
-                        cap->u.irq.line, cap->u.irq.controller);
 
     case ObjType_IRQTable:
         return snprintf(buf, len, "IRQTable cap");
 
-    case ObjType_IRQVector:
-        return snprintf(buf, len, "IRQVector cap (vec: %"PRIu64", ctrl: %"PRIu64")",
-                cap->u.irqvector.vector, cap->u.irqvector.controller);
+    case ObjType_IRQDest:
+        return snprintf(buf, len, "IRQDest cap (vec: %"PRIu64", ctrl: %"PRIu64")",
+                cap->u.irqdest.vector, cap->u.irqdest.controller);
 
     case ObjType_EndPoint:
         return snprintf(buf, len, "EndPoint cap (disp %p offset 0x%" PRIxLVADDR ")",
index ab683cd..aa6ad22 100644 (file)
@@ -201,7 +201,7 @@ errval_t inthandler_setup_movable_cap(struct capref dest_cap, interrupt_handler_
     }
 
     // Connect dest_cap with endpoint
-    invoke_irqvector_connect(dest_cap, epcap);
+    invoke_irqdest_connect(dest_cap, epcap);
 
 
     return SYS_ERR_OK;
@@ -254,13 +254,13 @@ errval_t inthandler_setup_movable(interrupt_handler_fn handler, void *handler_ar
         return err_push(err, LIB_ERR_ENDPOINT_CREATE);
     }
 
-    err = invoke_irqvector_connect(irq_dest_cap, epcap);
+    err = invoke_irqdest_connect(irq_dest_cap, epcap);
     if (err_is_fail(err)) {
         DEBUG_ERR(err, "Could not connect irq_cap and endpoint");
         return err;
     }
 
-    err = invoke_irqvector_get_vector(irq_dest_cap, ret_vector);
+    err = invoke_irqdest_get_vector(irq_dest_cap, ret_vector);
     if (err_is_fail(err)) {
         DEBUG_ERR(err, "Could not lookup irq vector");
         return err;
index d0eea5c..58e3d91 100644 (file)
@@ -108,12 +108,12 @@ errval_t pci_register_driver_movable_irq(pci_driver_init_fn init_func, uint32_t
     }
 
     uint32_t gsi = INVALID_VECTOR;
-    err = invoke_irq_get_vector(irq_src_cap, &gsi);
+    err = invoke_irqsrc_get_vector(irq_src_cap, &gsi);
     if (err_is_fail(err)) {
         DEBUG_ERR(err, "Could not lookup GSI vector");
         return err;
     }
-    PCI_CLIENT_DEBUG("Got irq cap, gsi: %"PRIu32"\n", gsi);
+    PCI_CLIENT_DEBUG("Got irqsrc cap, gsi: %"PRIu32"\n", gsi);
 
     // Get irq_dest_cap from monitor
     struct capref irq_dest_cap;
@@ -123,7 +123,7 @@ errval_t pci_register_driver_movable_irq(pci_driver_init_fn init_func, uint32_t
         goto out;
     }
     uint32_t irq_dest_vec = INVALID_VECTOR;
-    err = invoke_irqvector_get_vector(irq_dest_cap, &irq_dest_vec);
+    err = invoke_irqdest_get_vector(irq_dest_cap, &irq_dest_vec);
     if (err_is_fail(err)) {
         DEBUG_ERR(err, "Could not lookup irq vector");
         return err;