@@ -180,7 +180,6 @@ impl AsRawFd for Kvm {
180180}
181181
182182/// An address either in programmable I/O space or in memory mapped I/O space.
183- #[ derive( Copy , Clone ) ]
184183pub enum IoeventAddress {
185184 /// Representation of an programmable I/O address.
186185 Pio ( u64 ) ,
@@ -298,26 +297,26 @@ impl VmFd {
298297 pub fn register_ioevent < T : Into < u64 > > (
299298 & self ,
300299 evt : & EventFd ,
301- addr : IoeventAddress ,
300+ addr : & IoeventAddress ,
302301 datamatch : T ,
303302 ) -> Result < ( ) > {
304303 let mut flags = 0 ;
305304 if std:: mem:: size_of :: < T > ( ) > 0 {
306305 flags |= 1 << kvm_ioeventfd_flag_nr_datamatch
307306 }
308307 match addr {
309- IoeventAddress :: Pio ( _) => flags |= 1 << kvm_ioeventfd_flag_nr_pio,
308+ & IoeventAddress :: Pio ( _) => flags |= 1 << kvm_ioeventfd_flag_nr_pio,
310309 _ => { }
311310 } ;
312311 let ioeventfd = kvm_ioeventfd {
313312 datamatch : datamatch. into ( ) ,
314313 len : std:: mem:: size_of :: < T > ( ) as u32 ,
315314 addr : match addr {
316- IoeventAddress :: Pio ( p) => p as u64 ,
317- IoeventAddress :: Mmio ( m) => m,
315+ IoeventAddress :: Pio ( ref p) => * p as u64 ,
316+ IoeventAddress :: Mmio ( ref m) => * m,
318317 } ,
319318 fd : evt. as_raw_fd ( ) ,
320- flags : flags ,
319+ flags,
321320 ..Default :: default ( )
322321 } ;
323322 // Safe because we know that our file is a VM fd, we know the kernel will only read the
@@ -936,22 +935,22 @@ mod tests {
936935 let vm_fd = kvm. create_vm ( ) . unwrap ( ) ;
937936 let evtfd = EventFd :: new ( ) . unwrap ( ) ;
938937 vm_fd
939- . register_ioevent ( & evtfd, IoeventAddress :: Pio ( 0xf4 ) , NoDatamatch )
938+ . register_ioevent ( & evtfd, & IoeventAddress :: Pio ( 0xf4 ) , NoDatamatch )
940939 . unwrap ( ) ;
941940 vm_fd
942- . register_ioevent ( & evtfd, IoeventAddress :: Mmio ( 0x1000 ) , NoDatamatch )
941+ . register_ioevent ( & evtfd, & IoeventAddress :: Mmio ( 0x1000 ) , NoDatamatch )
943942 . unwrap ( ) ;
944943 vm_fd
945- . register_ioevent ( & evtfd, IoeventAddress :: Pio ( 0xc1 ) , 0x7fu8 )
944+ . register_ioevent ( & evtfd, & IoeventAddress :: Pio ( 0xc1 ) , 0x7fu8 )
946945 . unwrap ( ) ;
947946 vm_fd
948- . register_ioevent ( & evtfd, IoeventAddress :: Pio ( 0xc2 ) , 0x1337u16 )
947+ . register_ioevent ( & evtfd, & IoeventAddress :: Pio ( 0xc2 ) , 0x1337u16 )
949948 . unwrap ( ) ;
950949 vm_fd
951- . register_ioevent ( & evtfd, IoeventAddress :: Pio ( 0xc4 ) , 0xdeadbeefu32 )
950+ . register_ioevent ( & evtfd, & IoeventAddress :: Pio ( 0xc4 ) , 0xdeadbeefu32 )
952951 . unwrap ( ) ;
953952 vm_fd
954- . register_ioevent ( & evtfd, IoeventAddress :: Pio ( 0xc8 ) , 0xdeadbeefdeadbeefu64 )
953+ . register_ioevent ( & evtfd, & IoeventAddress :: Pio ( 0xc8 ) , 0xdeadbeefdeadbeefu64 )
955954 . unwrap ( ) ;
956955 }
957956
@@ -1237,7 +1236,7 @@ mod tests {
12371236 let event_fd = EventFd :: new ( ) . unwrap ( ) ;
12381237 assert_eq ! (
12391238 faulty_vm_fd
1240- . register_ioevent( & event_fd, IoeventAddress :: Pio ( 0 ) , 0u64 )
1239+ . register_ioevent( & event_fd, & IoeventAddress :: Pio ( 0 ) , 0u64 )
12411240 . unwrap_err( ) ,
12421241 badf_error
12431242 ) ;
0 commit comments