File tree Expand file tree Collapse file tree 1 file changed +8
-7
lines changed Expand file tree Collapse file tree 1 file changed +8
-7
lines changed Original file line number Diff line number Diff line change 66 use crate :: sys:: utsname:: uname;
77 use crate :: Result ;
88 use std:: os:: unix:: ffi:: OsStrExt ;
9+ use std:: sync:: atomic:: { AtomicUsize , Ordering } ;
910
1011 // Features:
1112 // * atomic cloexec on socket: 2.6.27
@@ -72,15 +73,15 @@ mod os {
7273 }
7374
7475 fn kernel_version ( ) -> Result < usize > {
75- static mut KERNEL_VERS : usize = 0 ;
76+ static KERNEL_VERS : AtomicUsize = AtomicUsize :: new ( 0 ) ;
77+ let mut kernel_vers = KERNEL_VERS . load ( Ordering :: Relaxed ) ;
7678
77- unsafe {
78- if KERNEL_VERS == 0 {
79- KERNEL_VERS = parse_kernel_version ( ) ?;
80- }
81-
82- Ok ( KERNEL_VERS )
79+ if kernel_vers == 0 {
80+ kernel_vers = parse_kernel_version ( ) ?;
81+ KERNEL_VERS . store ( kernel_vers, Ordering :: Relaxed ) ;
8382 }
83+
84+ Ok ( kernel_vers)
8485 }
8586
8687 /// Check if the OS supports atomic close-on-exec for sockets
You can’t perform that action at this time.
0 commit comments