tracing task problem

This commit is contained in:
Ulrich Mohr 2023-11-16 16:12:33 +01:00
parent 63b0a25030
commit e1f250e8f7

View File

@ -88,11 +88,13 @@ extern "C" fn rust_main() {
#[no_mangle] #[no_mangle]
extern "C" fn task_entry(task_object: *mut cty::c_void) { extern "C" fn task_entry(task_object: *mut cty::c_void) {
sifln!("Task Entry"); sifln!("Task Entry");
sifln!("getting pointer {:p}", task_object);
let task: &mut PeriodicTaskRunner; let task: &mut PeriodicTaskRunner;
unsafe { unsafe {
let pointer = task_object as *mut PeriodicTaskRunner; let pointer = task_object as *mut PeriodicTaskRunner;
task = &mut *pointer; task = &mut *pointer;
} }
sifln!("casting pointer {:p}", task as *mut PeriodicTaskRunner);
task.execute(); task.execute();
} }
@ -134,6 +136,7 @@ impl<'a, const STACKSIZE: usize> PeriodicTask<'a, STACKSIZE> {
}; };
let runner_pointer: *mut cty::c_void = &mut instance.runner as *mut _ as *mut cty::c_void; let runner_pointer: *mut cty::c_void = &mut instance.runner as *mut _ as *mut cty::c_void;
let stack_pointer: *mut cty::c_void = &mut instance.stack as *mut _ as *mut cty::c_void; let stack_pointer: *mut cty::c_void = &mut instance.stack as *mut _ as *mut cty::c_void;
sifln!("giving pointer {:p} {:p}", runner_pointer, &mut instance.runner as *mut PeriodicTaskRunner);
unsafe { unsafe {
instance.task = create_task(task_entry, runner_pointer, stack_pointer, STACKSIZE); instance.task = create_task(task_entry, runner_pointer, stack_pointer, STACKSIZE);
} }
@ -163,16 +166,16 @@ struct HandlerSender {
other_handler: MessageQueueSender<Message>, other_handler: MessageQueueSender<Message>,
} }
impl Handler { // impl Handler {
fn handle_message(&self, message: Message) { // fn handle_message(&self, message: Message) {
match message { // match message {
Message::OK=> {sifln!("OK");}, // Message::OK=> {sifln!("OK");},
Message::FAILED => {sifln!("FAILED");}, // Message::FAILED => {sifln!("FAILED");},
Message::DATA(data) => {sifln!("p1: {}, p2 {}", data.p1, data.p2);} // Message::DATA(data) => {sifln!("p1: {}, p2 {}", data.p1, data.p2);}
} // }
} // }
} // }
impl ExecutableObjectIF for Handler { impl ExecutableObjectIF for Handler {
fn perform(&mut self) { fn perform(&mut self) {
@ -318,7 +321,9 @@ fn mission() {
// h2.other_handler = h1.command_queue.get_sender(); // h2.other_handler = h1.command_queue.get_sender();
let _t1: PeriodicTask<'_, 512> = PeriodicTask::new(&mut h1); let mut _t1: PeriodicTask<'_, 512> = PeriodicTask::new(&mut h1);
sifln!("mission pointer {:p}", &mut _t1.runner as *mut PeriodicTaskRunner);
//let _t2: PeriodicTask<'_, 512> = PeriodicTask::new(&mut h2); //let _t2: PeriodicTask<'_, 512> = PeriodicTask::new(&mut h2);