|
7 | 7 | //! Reference: <https://www.kernel.org/doc/Documentation/sysctl/README> |
8 | 8 |
|
9 | 9 | use alloc::boxed::Box; |
10 | | -use alloc::vec; |
| 10 | +use alloc::vec::Vec; |
11 | 11 | use core::mem; |
12 | 12 | use core::ptr; |
13 | 13 | use core::sync::atomic; |
@@ -141,22 +141,21 @@ impl<T: SysctlStorage> Sysctl<T> { |
141 | 141 | } |
142 | 142 |
|
143 | 143 | let storage = Box::try_new(storage)?; |
144 | | - let mut table = vec![ |
145 | | - bindings::ctl_table { |
146 | | - procname: name.as_char_ptr(), |
147 | | - mode: mode.as_int(), |
148 | | - data: &*storage as *const T as *mut c_types::c_void, |
149 | | - proc_handler: Some(proc_handler::<T>), |
150 | | - |
151 | | - maxlen: 0, |
152 | | - child: ptr::null_mut(), |
153 | | - poll: ptr::null_mut(), |
154 | | - extra1: ptr::null_mut(), |
155 | | - extra2: ptr::null_mut(), |
156 | | - }, |
157 | | - unsafe { mem::zeroed() }, |
158 | | - ] |
159 | | - .try_into_boxed_slice()?; |
| 144 | + let mut table = Vec::try_with_capacity(2)?; |
| 145 | + table.try_push(bindings::ctl_table { |
| 146 | + procname: name.as_char_ptr(), |
| 147 | + mode: mode.as_int(), |
| 148 | + data: &*storage as *const T as *mut c_types::c_void, |
| 149 | + proc_handler: Some(proc_handler::<T>), |
| 150 | + |
| 151 | + maxlen: 0, |
| 152 | + child: ptr::null_mut(), |
| 153 | + poll: ptr::null_mut(), |
| 154 | + extra1: ptr::null_mut(), |
| 155 | + extra2: ptr::null_mut(), |
| 156 | + })?; |
| 157 | + table.try_push(unsafe { mem::zeroed() })?; |
| 158 | + let mut table = table.try_into_boxed_slice()?; |
160 | 159 |
|
161 | 160 | let result = unsafe { bindings::register_sysctl(path.as_char_ptr(), table.as_mut_ptr()) }; |
162 | 161 | if result.is_null() { |
|
0 commit comments