1#include <barrelfish/barrelfish.h> 2#include <barrelfish/capabilities.h> 3#include <barrelfish/nameservice_client.h> 4 5#include <pci/pci.h> 6 7#include <stdio.h> 8#include <stdlib.h> 9#include <if/monitor_blocking_defs.h> 10 11#include "kaluga.h" 12 13static struct capref all_irq_cap; 14 15struct capref * get_irq_cap(void) 16{ 17 return &all_irq_cap; 18} 19 20errval_t store_int_cap(int start, int end, struct driver_argument *arg){ 21 errval_t err; 22 assert(!cnoderef_is_null(arg->argnode_ref)); 23 assert(!capref_is_null(all_irq_cap)); 24 25 struct capref cap = { 26 .cnode = arg->argnode_ref, 27 .slot = PCIARG_SLOT_INT 28 }; 29 err = cap_retype(cap, all_irq_cap, start, ObjType_IRQSrc, 30 end, 1); 31 if(err_is_fail(err)){ 32 DEBUG_ERR(err, "Could not create int_src cap"); 33 return err; 34 } 35 return SYS_ERR_OK; 36} 37 38/** 39 * Initialize the cap manager. It will track retypes of all_irq_cap 40 */ 41errval_t init_int_caps_manager(struct capref irq) 42{ 43 assert(!capref_is_null(irq)); 44 all_irq_cap = irq; 45 return SYS_ERR_OK; 46} 47