@@ -180,7 +180,6 @@ impl AsRawFd for Kvm {
180
180
}
181
181
182
182
/// An address either in programmable I/O space or in memory mapped I/O space.
183
- #[ derive( Copy , Clone ) ]
184
183
pub enum IoeventAddress {
185
184
/// Representation of an programmable I/O address.
186
185
Pio ( u64 ) ,
@@ -298,26 +297,26 @@ impl VmFd {
298
297
pub fn register_ioevent < T : Into < u64 > > (
299
298
& self ,
300
299
evt : & EventFd ,
301
- addr : IoeventAddress ,
300
+ addr : & IoeventAddress ,
302
301
datamatch : T ,
303
302
) -> Result < ( ) > {
304
303
let mut flags = 0 ;
305
304
if std:: mem:: size_of :: < T > ( ) > 0 {
306
305
flags |= 1 << kvm_ioeventfd_flag_nr_datamatch
307
306
}
308
307
match addr {
309
- IoeventAddress :: Pio ( _) => flags |= 1 << kvm_ioeventfd_flag_nr_pio,
308
+ & IoeventAddress :: Pio ( _) => flags |= 1 << kvm_ioeventfd_flag_nr_pio,
310
309
_ => { }
311
310
} ;
312
311
let ioeventfd = kvm_ioeventfd {
313
312
datamatch : datamatch. into ( ) ,
314
313
len : std:: mem:: size_of :: < T > ( ) as u32 ,
315
314
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,
318
317
} ,
319
318
fd : evt. as_raw_fd ( ) ,
320
- flags : flags ,
319
+ flags,
321
320
..Default :: default ( )
322
321
} ;
323
322
// 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 {
936
935
let vm_fd = kvm. create_vm ( ) . unwrap ( ) ;
937
936
let evtfd = EventFd :: new ( ) . unwrap ( ) ;
938
937
vm_fd
939
- . register_ioevent ( & evtfd, IoeventAddress :: Pio ( 0xf4 ) , NoDatamatch )
938
+ . register_ioevent ( & evtfd, & IoeventAddress :: Pio ( 0xf4 ) , NoDatamatch )
940
939
. unwrap ( ) ;
941
940
vm_fd
942
- . register_ioevent ( & evtfd, IoeventAddress :: Mmio ( 0x1000 ) , NoDatamatch )
941
+ . register_ioevent ( & evtfd, & IoeventAddress :: Mmio ( 0x1000 ) , NoDatamatch )
943
942
. unwrap ( ) ;
944
943
vm_fd
945
- . register_ioevent ( & evtfd, IoeventAddress :: Pio ( 0xc1 ) , 0x7fu8 )
944
+ . register_ioevent ( & evtfd, & IoeventAddress :: Pio ( 0xc1 ) , 0x7fu8 )
946
945
. unwrap ( ) ;
947
946
vm_fd
948
- . register_ioevent ( & evtfd, IoeventAddress :: Pio ( 0xc2 ) , 0x1337u16 )
947
+ . register_ioevent ( & evtfd, & IoeventAddress :: Pio ( 0xc2 ) , 0x1337u16 )
949
948
. unwrap ( ) ;
950
949
vm_fd
951
- . register_ioevent ( & evtfd, IoeventAddress :: Pio ( 0xc4 ) , 0xdeadbeefu32 )
950
+ . register_ioevent ( & evtfd, & IoeventAddress :: Pio ( 0xc4 ) , 0xdeadbeefu32 )
952
951
. unwrap ( ) ;
953
952
vm_fd
954
- . register_ioevent ( & evtfd, IoeventAddress :: Pio ( 0xc8 ) , 0xdeadbeefdeadbeefu64 )
953
+ . register_ioevent ( & evtfd, & IoeventAddress :: Pio ( 0xc8 ) , 0xdeadbeefdeadbeefu64 )
955
954
. unwrap ( ) ;
956
955
}
957
956
@@ -1237,7 +1236,7 @@ mod tests {
1237
1236
let event_fd = EventFd :: new ( ) . unwrap ( ) ;
1238
1237
assert_eq ! (
1239
1238
faulty_vm_fd
1240
- . register_ioevent( & event_fd, IoeventAddress :: Pio ( 0 ) , 0u64 )
1239
+ . register_ioevent( & event_fd, & IoeventAddress :: Pio ( 0 ) , 0u64 )
1241
1240
. unwrap_err( ) ,
1242
1241
badf_error
1243
1242
) ;
0 commit comments