@@ -268,81 +268,80 @@ unsafe extern "C" fn poll_callback<T: FileOperations>(
268
268
pub ( crate ) struct FileOperationsVtable < A , T > ( marker:: PhantomData < A > , marker:: PhantomData < T > ) ;
269
269
270
270
impl < A : FileOpenAdapter , T : FileOpener < A :: Arg > > FileOperationsVtable < A , T > {
271
- const VTABLE : bindings:: file_operations = bindings:: file_operations {
272
- open : Some ( open_callback :: < A , T > ) ,
273
- release : Some ( release_callback :: < T > ) ,
274
- read : if T :: TO_USE . read {
275
- Some ( read_callback :: < T > )
276
- } else {
277
- None
278
- } ,
279
- write : if T :: TO_USE . write {
280
- Some ( write_callback :: < T > )
281
- } else {
282
- None
283
- } ,
284
- llseek : if T :: TO_USE . seek {
285
- Some ( llseek_callback :: < T > )
286
- } else {
287
- None
288
- } ,
289
-
290
- check_flags : None ,
291
- compat_ioctl : if T :: TO_USE . compat_ioctl {
292
- Some ( compat_ioctl_callback :: < T > )
293
- } else {
294
- None
295
- } ,
296
- copy_file_range : None ,
297
- fallocate : None ,
298
- fadvise : None ,
299
- fasync : None ,
300
- flock : None ,
301
- flush : None ,
302
- fsync : if T :: TO_USE . fsync {
303
- Some ( fsync_callback :: < T > )
304
- } else {
305
- None
306
- } ,
307
- get_unmapped_area : None ,
308
- iterate : None ,
309
- iterate_shared : None ,
310
- iopoll : None ,
311
- lock : None ,
312
- mmap : if T :: TO_USE . mmap {
313
- Some ( mmap_callback :: < T > )
314
- } else {
315
- None
316
- } ,
317
- mmap_supported_flags : 0 ,
318
- owner : ptr:: null_mut ( ) ,
319
- poll : if T :: TO_USE . poll {
320
- Some ( poll_callback :: < T > )
321
- } else {
322
- None
323
- } ,
324
- read_iter : None ,
325
- remap_file_range : None ,
326
- sendpage : None ,
327
- setlease : None ,
328
- show_fdinfo : None ,
329
- splice_read : None ,
330
- splice_write : None ,
331
- unlocked_ioctl : if T :: TO_USE . ioctl {
332
- Some ( unlocked_ioctl_callback :: < T > )
333
- } else {
334
- None
335
- } ,
336
- write_iter : None ,
337
- } ;
338
-
339
271
/// Builds an instance of [`struct file_operations`].
340
272
///
341
273
/// # Safety
342
274
///
343
275
/// The caller must ensure that the adapter is compatible with the way the device is registered.
344
- pub ( crate ) const unsafe fn build ( ) -> & ' static bindings:: file_operations {
345
- & Self :: VTABLE
276
+ /// The called must ensure that the `module` argument passed equals to the right `THIS_MODULE`.
277
+ pub ( crate ) unsafe fn build ( module : * mut bindings:: module ) -> bindings:: file_operations {
278
+ bindings:: file_operations {
279
+ open : Some ( open_callback :: < A , T > ) ,
280
+ release : Some ( release_callback :: < T > ) ,
281
+ read : if T :: TO_USE . read {
282
+ Some ( read_callback :: < T > )
283
+ } else {
284
+ None
285
+ } ,
286
+ write : if T :: TO_USE . write {
287
+ Some ( write_callback :: < T > )
288
+ } else {
289
+ None
290
+ } ,
291
+ llseek : if T :: TO_USE . seek {
292
+ Some ( llseek_callback :: < T > )
293
+ } else {
294
+ None
295
+ } ,
296
+
297
+ check_flags : None ,
298
+ compat_ioctl : if T :: TO_USE . compat_ioctl {
299
+ Some ( compat_ioctl_callback :: < T > )
300
+ } else {
301
+ None
302
+ } ,
303
+ copy_file_range : None ,
304
+ fallocate : None ,
305
+ fadvise : None ,
306
+ fasync : None ,
307
+ flock : None ,
308
+ flush : None ,
309
+ fsync : if T :: TO_USE . fsync {
310
+ Some ( fsync_callback :: < T > )
311
+ } else {
312
+ None
313
+ } ,
314
+ get_unmapped_area : None ,
315
+ iterate : None ,
316
+ iterate_shared : None ,
317
+ iopoll : None ,
318
+ lock : None ,
319
+ mmap : if T :: TO_USE . mmap {
320
+ Some ( mmap_callback :: < T > )
321
+ } else {
322
+ None
323
+ } ,
324
+ mmap_supported_flags : 0 ,
325
+ owner : module,
326
+ poll : if T :: TO_USE . poll {
327
+ Some ( poll_callback :: < T > )
328
+ } else {
329
+ None
330
+ } ,
331
+ read_iter : None ,
332
+ remap_file_range : None ,
333
+ sendpage : None ,
334
+ setlease : None ,
335
+ show_fdinfo : None ,
336
+ splice_read : None ,
337
+ splice_write : None ,
338
+ unlocked_ioctl : if T :: TO_USE . ioctl {
339
+ Some ( unlocked_ioctl_callback :: < T > )
340
+ } else {
341
+ None
342
+ } ,
343
+ write_iter : None ,
344
+ }
346
345
}
347
346
}
348
347
0 commit comments