Today, let's just think about it. In fact, we can recompile it to see what is the difference between Kyth in user mode and libpthread in FreeBSD. Later found that this libpthread-kyth.so is not strip (unlike the new 2.1-01 kernel of Qilin actually went through strip, and also modified the boot part, I don't know what it is to avoid, huh) so that I can see what source files are available for this executable file.
If you are willing to reproduce it, You can reproduce it in the following ways, which is very simple.
Run the following command in the operating system of Qilin:
Strings/lib/libpthread-kyth.so | grep kyth | sort
Run FreeBSD:
Strings/usr/lib/libpthread. so | grep src | sort
The results are compared as follows:
/Lib/libpthread-kyth.so |
/Usr/lib/libpthread. so.1 |
/Root/Kyth1.6/Sys/lock. c /Root/kyth1.6/thread/thr_cancel.c /Root/kyth1.6/thread/thr_concurrency.c /Root/kyth1.6/thread/thr_cond.c /Root/kyth1.6/thread/thr_create.c /Root/kyth1.6/thread/thr_detach.c /Root/kyth1.6/thread/thr_exit.c /Root/kyth1.6/thread/thr_find_thread.c /Root/kyth1.6/thread/thr_getschedparam.c /Root/kyth1.6/thread/thr_init.c /Root/kyth1.6/thread/thr_join.c /Root/kyth1.6/thread/thr_kern.c /Root/kyth1.6/thread/thr_mutex.c /Root/kyth1.6/thread/thr_nanosleep.c /Root/kyth1.6/thread/thr_priority_queue.c /Root/kyth1.6/thread/thr_resume_np.c /Root/kyth1.6/thread/thr_rwlock.c /Root/kyth1.6/thread/thr_setschedparam.c /Root/kyth1.6/thread/thr_sigaction.c /Root/kyth1.6/thread/thr_sig.c /Root/kyth1.6/thread/thr_sigmask.c /Root/kyth1.6/thread/thr_sigpending.c /Root/kyth1.6/thread/thr_sigsuspend.c /Root/kyth1.6/thread/thr_sigwait.c /Root/kyth1.6/thread/thr_spec.c /Root/kyth1.6/thread/thr_spinlock.c /Root/kyth1.6/thread/thr_stack.c /Root/kyth1.6/thread/thr_suspend_np.c |
$ FreeBSD: src/lib/csu/i386-elf/crti. S,V 1.62002/05/15 04:19:49 obrien Exp $ $ FreeBSD: src/lib/csu/i386-elf/crtn. S, v 1.5 04:19:49 obrien Exp $ /Usr/src/lib/libpthread/sys/lock. c /Usr/src/lib/libpthread/thread/thr_cancel.c /Usr/src/lib/libpthread/thread/thr_concurrency.c /Usr/src/lib/libpthread/thread/thr_cond.c /Usr/src/lib/libpthread/thread/thr_create.c /Usr/src/lib/libpthread/thread/thr_detach.c /Usr/src/lib/libpthread/thread/thr_exit.c /Usr/src/lib/libpthread/thread/thr_find_thread.c /Usr/src/lib/libpthread/thread/thr_getschedparam.c /Usr/src/lib/libpthread/thread/thr_init.c /Usr/src/lib/libpthread/thread/thr_join.c /Usr/src/lib/libpthread/thread/thr_kern.c /Usr/src/lib/libpthread/thread/thr_mutex.c /Usr/src/lib/libpthread/thread/thr_nanosleep.c /Usr/src/lib/libpthread/thread/thr_priority_queue.c /Usr/src/lib/libpthread/thread/thr_resume_np.c /Usr/src/lib/libpthread/thread/thr_rtld.c /Usr/src/lib/libpthread/thread/thr_rwlock.c /Usr/src/lib/libpthread/thread/thr_setschedparam.c /Usr/src/lib/libpthread/thread/thr_sig.c /Usr/src/lib/libpthread/thread/thr_sigaction.c /Usr/src/lib/libpthread/thread/thr_sigmask.c /Usr/src/lib/libpthread/thread/thr_sigpending.c /Usr/src/lib/libpthread/thread/thr_sigsuspend.c /Usr/src/lib/libpthread/thread/thr_sigwait.c /Usr/src/lib/libpthread/thread/thr_spec.c /Usr/src/lib/libpthread/thread/thr_spinlock.c /Usr/src/lib/libpthread/thread/thr_stack.c /Usr/src/lib/libpthread/thread/thr_suspend_np.c |
I don't know what the relationship between kyth1.6 and the v 1.6 in FreeBSD. You can also get different results by converting the grep string. For example, if you change to kse, you will find that there are many similar kse function calls between the two. However, I am too lazy to analyze it. If you are interested, you can analyze it further :)