|
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