@@ -48,6 +48,7 @@ pub struct Config {
4848 pub fan_out_limit : u64 ,
4949 pub hypervisor : bool ,
5050 pub arm_pa_size_bits : usize ,
51+ pub benchmark : bool ,
5152}
5253
5354pub enum Arch {
@@ -584,6 +585,15 @@ impl Invocation {
584585 arg_strs. push ( Invocation :: fmt_field ( "attr" , attr) ) ;
585586 ( page, cap_lookup. get ( & page) . unwrap ( ) . as_str ( ) )
586587 }
588+ InvocationArgs :: CnodeCopy { cnode, dest_index, dest_depth, src_root, src_obj, src_depth, rights } => {
589+ arg_strs. push ( Invocation :: fmt_field ( "dest_index" , dest_index) ) ;
590+ arg_strs. push ( Invocation :: fmt_field ( "dest_depth" , dest_depth) ) ;
591+ arg_strs. push ( Invocation :: fmt_field_cap ( "src_root" , src_root, cap_lookup) ) ;
592+ arg_strs. push ( Invocation :: fmt_field_cap ( "src_obj" , src_obj, cap_lookup) ) ;
593+ arg_strs. push ( Invocation :: fmt_field ( "src_depth" , src_depth) ) ;
594+ arg_strs. push ( Invocation :: fmt_field ( "rights" , rights) ) ;
595+ ( cnode, cap_lookup. get ( & cnode) . unwrap ( ) . as_str ( ) )
596+ }
587597 InvocationArgs :: CnodeMint { cnode, dest_index, dest_depth, src_root, src_obj, src_depth, rights, badge } => {
588598 arg_strs. push ( Invocation :: fmt_field ( "dest_index" , dest_index) ) ;
589599 arg_strs. push ( Invocation :: fmt_field ( "dest_depth" , dest_depth) ) ;
@@ -628,7 +638,8 @@ impl Invocation {
628638 InvocationLabel :: IrqSetIrqHandler => "IRQ Handler" ,
629639 InvocationLabel :: ArmPageTableMap => "Page Table" ,
630640 InvocationLabel :: ArmPageMap => "Page" ,
631- InvocationLabel :: CnodeMint => "CNode" ,
641+ InvocationLabel :: CnodeMint |
642+ InvocationLabel :: CnodeCopy => "CNode" ,
632643 InvocationLabel :: SchedControlConfigureFlags => "SchedControl" ,
633644 InvocationLabel :: ArmVcpuSetTcb => "VCPU" ,
634645 _ => panic ! ( "Internal error: unexpected label when getting object type '{:?}'" , self . label)
@@ -649,6 +660,7 @@ impl Invocation {
649660 InvocationLabel :: IrqSetIrqHandler => "SetNotification" ,
650661 InvocationLabel :: ArmPageTableMap |
651662 InvocationLabel :: ArmPageMap => "Map" ,
663+ InvocationLabel :: CnodeCopy => "Copy" ,
652664 InvocationLabel :: CnodeMint => "Mint" ,
653665 InvocationLabel :: SchedControlConfigureFlags => "ConfigureFlags" ,
654666 InvocationLabel :: ArmVcpuSetTcb => "VCPUSetTcb" ,
@@ -672,6 +684,7 @@ impl InvocationArgs {
672684 InvocationArgs :: IrqHandlerSetNotification { .. } => InvocationLabel :: IrqSetIrqHandler ,
673685 InvocationArgs :: PageTableMap { .. } => InvocationLabel :: ArmPageTableMap ,
674686 InvocationArgs :: PageMap { .. } => InvocationLabel :: ArmPageMap ,
687+ InvocationArgs :: CnodeCopy { .. } => InvocationLabel :: CnodeCopy ,
675688 InvocationArgs :: CnodeMint { .. } => InvocationLabel :: CnodeMint ,
676689 InvocationArgs :: SchedControlConfigureFlags { .. } => InvocationLabel :: SchedControlConfigureFlags ,
677690 InvocationArgs :: ArmVcpuSetTcb { .. } => InvocationLabel :: ArmVcpuSetTcb ,
@@ -728,6 +741,12 @@ impl InvocationArgs {
728741 vec ! [ vspace]
729742 ) ,
730743 InvocationArgs :: PageMap { page, vspace, vaddr, rights, attr } => ( page, vec ! [ vaddr, rights, attr] , vec ! [ vspace] ) ,
744+ InvocationArgs :: CnodeCopy { cnode, dest_index, dest_depth, src_root, src_obj, src_depth, rights } =>
745+ (
746+ cnode,
747+ vec ! [ dest_index, dest_depth, src_obj, src_depth, rights] ,
748+ vec ! [ src_root]
749+ ) ,
731750 InvocationArgs :: CnodeMint { cnode, dest_index, dest_depth, src_root, src_obj, src_depth, rights, badge } =>
732751 (
733752 cnode,
@@ -822,6 +841,15 @@ pub enum InvocationArgs {
822841 rights : u64 ,
823842 attr : u64 ,
824843 } ,
844+ CnodeCopy {
845+ cnode : u64 ,
846+ dest_index : u64 ,
847+ dest_depth : u64 ,
848+ src_root : u64 ,
849+ src_obj : u64 ,
850+ src_depth : u64 ,
851+ rights : u64 ,
852+ } ,
825853 CnodeMint {
826854 cnode : u64 ,
827855 dest_index : u64 ,
0 commit comments