MCPcopy Create free account
hub / github.com/bendudson/EuraliOS / return_error_message

Method return_error_message

kernel/src/process.rs:192–205  ·  view source on GitHub ↗

Modify a thread context, setting registers Note: Should only be applied to threads that will return from a syscall. If error != 0 then an error is sent along with the message Note: - RCX and R11 are used by sysret so can't be used to return data

(&self, error: usize, message: Message)

Source from the content-addressed store, hash-verified

190 /// - RCX and R11 are used by sysret so can't be used
191 /// to return data
192 pub fn return_error_message(&self, error: usize, message: Message) {
193 let context = self.context_mut();
194
195 let (ctrl, data1, data2, data3) = message.to_values(self);
196 context.rax = ctrl as usize;
197 if error != 0 {
198 // Error returning a message
199 context.rax |= syscalls::SYSCALL_ERROR_CONTAINS_MESSAGE |
200 (error & syscalls::SYSCALL_ERROR_MASK);
201 }
202 context.rdi = data1 as usize;
203 context.rsi = data2 as usize;
204 context.rdx = data3 as usize;
205 }
206
207 /// Return a message to the thread
208 pub fn return_message(&self, message: Message) {

Callers 4

return_messageMethod · 0.80
sendMethod · 0.80
send_receiveMethod · 0.80
closeMethod · 0.80

Calls 2

context_mutMethod · 0.80
to_valuesMethod · 0.45

Tested by

no test coverage detected