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 15errval_t store_int_cap(int start, int end, struct driver_argument *arg){ 16 errval_t err; 17 assert(!cnoderef_is_null(arg->argnode_ref)); 18 assert(!capref_is_null(all_irq_cap)); 19 20 struct capref cap = { 21 .cnode = arg->argnode_ref, 22 .slot = PCIARG_SLOT_INT 23 }; 24 err = cap_retype(cap, all_irq_cap, start, ObjType_IRQSrc, 25 end, 1); 26 if(err_is_fail(err)){ 27 DEBUG_ERR(err, "Could not create int_src cap"); 28 return err; 29 } 30 return SYS_ERR_OK; 31} 32 33/** 34 * Initialize the cap manager. It will track retypes of all_irq_cap 35 */ 36errval_t init_int_caps_manager(struct capref irq) 37{ 38 assert(!capref_is_null(irq)); 39 all_irq_cap = irq; 40 return SYS_ERR_OK; 41} 42