-
Notifications
You must be signed in to change notification settings - Fork 9
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[update] Modified syscalls mechanism #4
Conversation
* Therefore, each syscall is requested by a distinct SVC interrupt
Hello Arnauld ! Thanks for this PR ! It's clearly simplify the 'oldy' syscall handling. 3 questions here:
What is your point of view on this ? |
Re, Is it possible to define a t_syscall_svc as a subset of t_svc for syscall execution functions (i.e. push_syscall and do_syncrhonous_syscall) ? |
INFO: patch in association with libstd PR 1 |
Good comment ! I slightly modified the ewok.syscall.handler package and I removed the 'exec_synchronous' function whose presence was no more justified.
I'm not sure that end_of_task() and end_of_isr() syscalls should be considered as special services.
It should not because switch statements are optimized by gcc using jump tables and ARM architectures have special instructions to deal with that kind of construct (TBB and TBH instructions). |
Hello ! I'm asking myself... Should end_of_task and end_of_isr be replaced with a trap on effective return address on the isr root function or main function ? This would not be a svc no more, but a real trap. Svc would then be only syscalls, not events. What do you think about it ? |
Ack for sys_exit() 👍 Using task current state instead of defining 2 independent system calls is cleaner to handle ISR & thread exit |
* Replacing SVC_TASK_DONE and SVC_ISR_DONE by SVC_EXIT * Renaming some syscalls so their name is more self-explanatory
Rationale: