@@ -12,7 +12,7 @@ use alloc::boxed::Box;
1212use crate :: {
1313 bindings, c_types,
1414 error:: { Error , Result } ,
15- file:: File ,
15+ file:: { File , FileRef } ,
1616 from_kernel_result,
1717 io_buffer:: { IoBufferReader , IoBufferWriter } ,
1818 iov_iter:: IovIter ,
@@ -102,7 +102,7 @@ unsafe extern "C" fn read_callback<T: FileOperations>(
102102 let f = & * ( ( * file) . private_data as * const T ) ;
103103 // No `FMODE_UNSIGNED_OFFSET` support, so `offset` must be in [0, 2^63).
104104 // See discussion in https://github.com/fishinabarrel/linux-kernel-module-rust/pull/113
105- let read = f. read( & File :: from_ptr( file) , & mut data, ( * offset) . try_into( ) ?) ?;
105+ let read = f. read( & FileRef :: from_ptr( file) , & mut data, ( * offset) . try_into( ) ?) ?;
106106 ( * offset) += bindings:: loff_t:: try_from( read) . unwrap( ) ;
107107 Ok ( read as _)
108108 }
@@ -117,7 +117,7 @@ unsafe extern "C" fn read_iter_callback<T: FileOperations>(
117117 let file = ( * iocb) . ki_filp;
118118 let offset = ( * iocb) . ki_pos;
119119 let f = & * ( ( * file) . private_data as * const T ) ;
120- let read = f. read( & File :: from_ptr( file) , & mut iter, offset. try_into( ) ?) ?;
120+ let read = f. read( & FileRef :: from_ptr( file) , & mut iter, offset. try_into( ) ?) ?;
121121 ( * iocb) . ki_pos += bindings:: loff_t:: try_from( read) . unwrap( ) ;
122122 Ok ( read as _)
123123 }
@@ -134,7 +134,7 @@ unsafe extern "C" fn write_callback<T: FileOperations>(
134134 let f = & * ( ( * file) . private_data as * const T ) ;
135135 // No `FMODE_UNSIGNED_OFFSET` support, so `offset` must be in [0, 2^63).
136136 // See discussion in https://github.com/fishinabarrel/linux-kernel-module-rust/pull/113
137- let written = f. write( & File :: from_ptr( file) , & mut data, ( * offset) . try_into( ) ?) ?;
137+ let written = f. write( & FileRef :: from_ptr( file) , & mut data, ( * offset) . try_into( ) ?) ?;
138138 ( * offset) += bindings:: loff_t:: try_from( written) . unwrap( ) ;
139139 Ok ( written as _)
140140 }
@@ -149,7 +149,7 @@ unsafe extern "C" fn write_iter_callback<T: FileOperations>(
149149 let file = ( * iocb) . ki_filp;
150150 let offset = ( * iocb) . ki_pos;
151151 let f = & * ( ( * file) . private_data as * const T ) ;
152- let written = f. write( & File :: from_ptr( file) , & mut iter, offset. try_into( ) ?) ?;
152+ let written = f. write( & FileRef :: from_ptr( file) , & mut iter, offset. try_into( ) ?) ?;
153153 ( * iocb) . ki_pos += bindings:: loff_t:: try_from( written) . unwrap( ) ;
154154 Ok ( written as _)
155155 }
@@ -160,7 +160,7 @@ unsafe extern "C" fn release_callback<T: FileOperations>(
160160 file : * mut bindings:: file ,
161161) -> c_types:: c_int {
162162 let ptr = mem:: replace ( & mut ( * file) . private_data , ptr:: null_mut ( ) ) ;
163- T :: release ( T :: Wrapper :: from_pointer ( ptr as _ ) , & File :: from_ptr ( file) ) ;
163+ T :: release ( T :: Wrapper :: from_pointer ( ptr as _ ) , & FileRef :: from_ptr ( file) ) ;
164164 0
165165}
166166
@@ -177,7 +177,7 @@ unsafe extern "C" fn llseek_callback<T: FileOperations>(
177177 _ => return Err ( Error :: EINVAL ) ,
178178 } ;
179179 let f = & * ( ( * file) . private_data as * const T ) ;
180- let off = f. seek( & File :: from_ptr( file) , off) ?;
180+ let off = f. seek( & FileRef :: from_ptr( file) , off) ?;
181181 Ok ( off as bindings:: loff_t)
182182 }
183183}
@@ -191,7 +191,7 @@ unsafe extern "C" fn unlocked_ioctl_callback<T: FileOperations>(
191191 let f = & * ( ( * file) . private_data as * const T ) ;
192192 // SAFETY: This function is called by the kernel, so it must set `fs` appropriately.
193193 let mut cmd = IoctlCommand :: new( cmd as _, arg as _) ;
194- let ret = f. ioctl( & File :: from_ptr( file) , & mut cmd) ?;
194+ let ret = f. ioctl( & FileRef :: from_ptr( file) , & mut cmd) ?;
195195 Ok ( ret as _)
196196 }
197197}
@@ -205,7 +205,7 @@ unsafe extern "C" fn compat_ioctl_callback<T: FileOperations>(
205205 let f = & * ( ( * file) . private_data as * const T ) ;
206206 // SAFETY: This function is called by the kernel, so it must set `fs` appropriately.
207207 let mut cmd = IoctlCommand :: new( cmd as _, arg as _) ;
208- let ret = f. compat_ioctl( & File :: from_ptr( file) , & mut cmd) ?;
208+ let ret = f. compat_ioctl( & FileRef :: from_ptr( file) , & mut cmd) ?;
209209 Ok ( ret as _)
210210 }
211211}
@@ -216,7 +216,7 @@ unsafe extern "C" fn mmap_callback<T: FileOperations>(
216216) -> c_types:: c_int {
217217 from_kernel_result ! {
218218 let f = & * ( ( * file) . private_data as * const T ) ;
219- f. mmap( & File :: from_ptr( file) , & mut * vma) ?;
219+ f. mmap( & FileRef :: from_ptr( file) , & mut * vma) ?;
220220 Ok ( 0 )
221221 }
222222}
@@ -232,7 +232,7 @@ unsafe extern "C" fn fsync_callback<T: FileOperations>(
232232 let end = end. try_into( ) ?;
233233 let datasync = datasync != 0 ;
234234 let f = & * ( ( * file) . private_data as * const T ) ;
235- let res = f. fsync( & File :: from_ptr( file) , start, end, datasync) ?;
235+ let res = f. fsync( & FileRef :: from_ptr( file) , start, end, datasync) ?;
236236 Ok ( res. try_into( ) . unwrap( ) )
237237 }
238238}
@@ -242,7 +242,7 @@ unsafe extern "C" fn poll_callback<T: FileOperations>(
242242 wait : * mut bindings:: poll_table_struct ,
243243) -> bindings:: __poll_t {
244244 let f = & * ( ( * file) . private_data as * const T ) ;
245- match f. poll ( & File :: from_ptr ( file) , & PollTable :: from_ptr ( wait) ) {
245+ match f. poll ( & FileRef :: from_ptr ( file) , & PollTable :: from_ptr ( wait) ) {
246246 Ok ( v) => v,
247247 Err ( _) => bindings:: POLLERR ,
248248 }
0 commit comments