MCPcopy Create free account
hub / github.com/Starry-OS/StarryOS / resize

Method resize

api/src/file/pipe.rs:85–100  ·  view source on GitHub ↗
(&self, new_size: usize)

Source from the content-addressed store, hash-verified

83 }
84
85 pub fn resize(&self, new_size: usize) -> AxResult<()> {
86 let new_size = new_size.div_ceil(PAGE_SIZE_4K).max(1) * PAGE_SIZE_4K;
87
88 let mut buffer = self.shared.buffer.lock();
89 if new_size == buffer.capacity().get() {
90 return Ok(());
91 }
92 if new_size < buffer.occupied_len() {
93 return Err(AxError::ResourceBusy);
94 }
95 let old_buffer = mem::replace(&mut *buffer, HeapRb::new(new_size));
96 let (left, right) = old_buffer.as_slices();
97 buffer.push_slice(left);
98 buffer.push_slice(right);
99 Ok(())
100 }
101}
102
103fn raise_pipe() {

Callers 3

write_atMethod · 0.80
set_lenMethod · 0.80
sys_fcntlFunction · 0.80

Calls 2

capacityMethod · 0.80
getMethod · 0.45

Tested by

no test coverage detected