6fe1e37a5e
There are 3 fixes in thie commit. First, update ztest_run() to store the thread id and not the address of the kthread_t. This will be freed on thread exit and is not safe to use. This is pretty close to how things were done in the original ztest code before I got there. Second, for extra paranoia update thread_exit() to return a special TS_MAGIC value via pthread_exit(). This value is then verified in pthread_join() to ensure the thread exited cleanly. This can be done cleanly because the kthread doesn't provide a return code mechanism we need to worry about. Third, replace the ztest deadman thread with a signal handler. We cannot use the previous approach because the correct behavior for pthreads is to wait for all threads to exit before terminating the process. Since the deadman thread won't call exit by design we end up hanging in kernel_exit(). To avoid this we just setup a SIGALRM signal handle and register a deadman alarm. IMHO this is simpler and cleaner anyway. |
||
---|---|---|
.. | ||
.gitignore | ||
ztest.c |