@@ -305,12 +305,7 @@ pub type AsyncDmaFile = DmaFile<AsyncFile>;
305305
306306impl AsyncDmaFile {
307307 async fn open_fd ( path : impl AsRef < Path > , dio : bool ) -> io:: Result < AsyncFile > {
308- let flags = if cfg ! ( target_os = "linux" ) && dio {
309- OFlags :: DIRECT . bits ( ) as i32
310- } else {
311- 0
312- } ;
313-
308+ let flags = flags_direct_or_empty ( dio) . bits ( ) as i32 ;
314309 AsyncFile :: options ( )
315310 . read ( true )
316311 . custom_flags ( flags)
@@ -319,12 +314,7 @@ impl AsyncDmaFile {
319314 }
320315
321316 async fn create_fd ( path : impl AsRef < Path > , dio : bool ) -> io:: Result < AsyncFile > {
322- let flags = if cfg ! ( target_os = "linux" ) && dio {
323- OFlags :: EXCL | OFlags :: DIRECT
324- } else {
325- OFlags :: EXCL
326- } ;
327-
317+ let flags = flags_direct_or_empty ( dio) | OFlags :: EXCL ;
328318 AsyncFile :: options ( )
329319 . write ( true )
330320 . create ( true )
@@ -421,25 +411,34 @@ impl AsyncDmaFile {
421411 }
422412}
423413
414+ #[ cfg( target_os = "linux" ) ]
415+ fn flags_direct_or_empty ( dio : bool ) -> OFlags {
416+ if dio {
417+ OFlags :: DIRECT
418+ } else {
419+ OFlags :: empty ( )
420+ }
421+ }
422+
423+ #[ cfg( not( target_os = "linux" ) ) ]
424+ fn flags_direct_or_empty ( _dio : bool ) -> OFlags {
425+ OFlags :: empty ( )
426+ }
427+
424428pub type SyncDmaFile = DmaFile < OwnedFd > ;
425429
426430impl SyncDmaFile {
427431 fn open_fd ( path : impl rustix:: path:: Arg , dio : bool ) -> io:: Result < OwnedFd > {
428- let flags = if cfg ! ( target_os = "linux" ) && dio {
429- OFlags :: RDONLY | OFlags :: DIRECT
430- } else {
431- OFlags :: RDONLY
432- } ;
432+ let flags = OFlags :: RDONLY | flags_direct_or_empty ( dio) ;
433433 rustix:: fs:: open ( path, flags, rustix:: fs:: Mode :: empty ( ) ) . map_err ( io:: Error :: from)
434434 }
435435
436436 fn create_fd ( path : impl rustix:: path:: Arg , dio : bool ) -> io:: Result < OwnedFd > {
437- let flags = if cfg ! ( target_os = "linux" ) && dio {
438- OFlags :: EXCL | OFlags :: CREATE | OFlags :: TRUNC | OFlags :: WRONLY | OFlags :: DIRECT
439- } else {
440- OFlags :: EXCL | OFlags :: CREATE | OFlags :: TRUNC | OFlags :: WRONLY
441- } ;
442-
437+ let flags = OFlags :: EXCL
438+ | OFlags :: CREATE
439+ | OFlags :: TRUNC
440+ | OFlags :: WRONLY
441+ | flags_direct_or_empty ( dio) ;
443442 rustix:: fs:: open ( path, flags, rustix:: fs:: Mode :: from_raw_mode ( 0o666 ) )
444443 . map_err ( io:: Error :: from)
445444 }
0 commit comments