@@ -102,21 +102,21 @@ impl<H: Hal, T: Transport> VirtIOInput<H, T> {
102102 select : InputConfigSelect ,
103103 subsel : u8 ,
104104 out : & mut [ u8 ] ,
105- ) -> u8 {
105+ ) -> Result < u8 , Error > {
106106 self . transport
107- . write_config_space ( offset_of ! ( Config , select) , select as u8 ) ;
107+ . write_config_space ( offset_of ! ( Config , select) , select as u8 ) ? ;
108108 self . transport
109- . write_config_space ( offset_of ! ( Config , subsel) , subsel) ;
110- let size: u8 = self . transport . read_config_space ( offset_of ! ( Config , size) ) ;
109+ . write_config_space ( offset_of ! ( Config , subsel) , subsel) ? ;
110+ let size: u8 = self . transport . read_config_space ( offset_of ! ( Config , size) ) ? ;
111111 // Safe because config points to a valid MMIO region for the config space.
112112 let size_to_copy = min ( usize:: from ( size) , out. len ( ) ) ;
113113 for ( i, out_item) in out. iter_mut ( ) . take ( size_to_copy) . enumerate ( ) {
114114 * out_item = self
115115 . transport
116- . read_config_space ( offset_of ! ( Config , data) + i * size_of :: < u8 > ( ) ) ;
116+ . read_config_space ( offset_of ! ( Config , data) + i * size_of :: < u8 > ( ) ) ? ;
117117 }
118118
119- size
119+ Ok ( size)
120120 }
121121
122122 /// Queries a specific piece of information by `select` and `subsel`, allocates a sufficiently
@@ -127,12 +127,12 @@ impl<H: Hal, T: Transport> VirtIOInput<H, T> {
127127 subsel : u8 ,
128128 ) -> Result < Box < [ u8 ] > , Error > {
129129 self . transport
130- . write_config_space ( offset_of ! ( Config , select) , select as u8 ) ;
130+ . write_config_space ( offset_of ! ( Config , select) , select as u8 ) ? ;
131131 self . transport
132- . write_config_space ( offset_of ! ( Config , subsel) , subsel) ;
132+ . write_config_space ( offset_of ! ( Config , subsel) , subsel) ? ;
133133 let size = usize:: from (
134134 self . transport
135- . read_config_space :: < u8 > ( offset_of ! ( Config , size) ) ,
135+ . read_config_space :: < u8 > ( offset_of ! ( Config , size) ) ? ,
136136 ) ;
137137 if size > CONFIG_DATA_MAX_LENGTH {
138138 return Err ( Error :: IoError ) ;
@@ -141,7 +141,7 @@ impl<H: Hal, T: Transport> VirtIOInput<H, T> {
141141 for i in 0 ..size {
142142 buf[ i] = self
143143 . transport
144- . read_config_space ( offset_of ! ( Config , data) + i * size_of :: < u8 > ( ) ) ;
144+ . read_config_space ( offset_of ! ( Config , data) + i * size_of :: < u8 > ( ) ) ? ;
145145 }
146146 Ok ( buf)
147147 }
@@ -173,7 +173,7 @@ impl<H: Hal, T: Transport> VirtIOInput<H, T> {
173173 /// Queries and returns the ID information of the device.
174174 pub fn ids ( & mut self ) -> Result < DevIDs , Error > {
175175 let mut ids = DevIDs :: default ( ) ;
176- let size = self . query_config_select ( InputConfigSelect :: IdDevids , 0 , ids. as_bytes_mut ( ) ) ;
176+ let size = self . query_config_select ( InputConfigSelect :: IdDevids , 0 , ids. as_bytes_mut ( ) ) ? ;
177177 if usize:: from ( size) == size_of :: < DevIDs > ( ) {
178178 Ok ( ids)
179179 } else {
@@ -196,7 +196,8 @@ impl<H: Hal, T: Transport> VirtIOInput<H, T> {
196196 /// Queries and returns information about the given axis of the device.
197197 pub fn abs_info ( & mut self , axis : u8 ) -> Result < AbsInfo , Error > {
198198 let mut info = AbsInfo :: default ( ) ;
199- let size = self . query_config_select ( InputConfigSelect :: AbsInfo , axis, info. as_bytes_mut ( ) ) ;
199+ let size =
200+ self . query_config_select ( InputConfigSelect :: AbsInfo , axis, info. as_bytes_mut ( ) ) ?;
200201 if usize:: from ( size) == size_of :: < AbsInfo > ( ) {
201202 Ok ( info)
202203 } else {
0 commit comments