patacongo commented on pull request #3626: URL: https://github.com/apache/incubator-nuttx/pull/3626#issuecomment-846350804
@no1wudi Are you interested in finishing this job? That is, fixing on_exit() and atexit() callbacks so that they execute in user mode in all build modes? Logically this would be a very similar job: task_startup() and task exits would have to be moved to libs/libc and the callbacks would have to be re-architected so that the call back function points and parameters lie in TLS and the functions are called in some user-space task exit logic. This, however, is more complex for a couple of reasons: 1. on_exit() and atexit() processing is more entangled task_exithook(). However, I think that that entanglement is no longer necessary. I think it is an artifact from an older design. It should be okay to move those callbacks to the beginning of the exit sequence in the current design. Hmm.. is there some reason why the exit callbacks should not execute while there could be pthreads running in an SMP configuration? There are a few things to think about. 2. There are several ways to exit: exit(), task_delete(), task_reset(), assert(), abort(), .... others? _exit() might also be in that group, but since that is reserved for emergency terminations, it probably does not need to honor the on_exit() / atexit() (In fact, it is not really safe to call _exit() at all in an embedded system since it leaves files open). There is a block diagram of the exit sequence here: https://cwiki.apache.org/confluence/display/NUTTX/Task+Exit+Sequence I am not sure if that is 100% up to date. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org