On 11 March 2014 16:36, Dr. David Alan Gilbert <dgilb...@redhat.com> wrote: > * Peter Maydell (peter.mayd...@linaro.org) wrote: >> On 11 March 2014 16:13, Dr. David Alan Gilbert <dgilb...@redhat.com> wrote: >> > * Peter Maydell (peter.mayd...@linaro.org) wrote: >> >> Can we have a configure test for the function instead, please? >> >> We don't generally do tests for specific glibc versions >> >> (among other things, glibc is not the only C library we >> >> might be compiled against -- consider MacOSX, the BSDs, >> >> and occasionally somebody tries to compile against one >> >> of the embedded libcs). >> > >> > Except pthread_setname_np is not portable and was previously >> > ifdef'd _GNU_SOURCE anyway >> >> I still think it's a generally worse way to do checks. >> We currently have only one check against __GLIBC_MINOR__ >> in the tree (and that's in extremely Linux-specific >> code). >> >> > the parameters on other OSs >> > maybe different (freebsd has got a 3rd parameter for no >> > apparent reason). >> >> This rather suggests we should abstract the "set thread >> name" functionality out into its own function so we >> can easily provide other implementations for those >> other OSes later. > > OK, well there is already a > > void os_set_proc_name(const char *s) > > in os-posix.c but it has ~2 problems: > 1) If the OS doesn't support doing it that way it exit(1)'s > 2) it uses prctl to set it on the current thread, where > pthread_setname_np has the advantage that it sets it on > something you have a pthread* for. > 3) There isn't a matching entry in os-win32.c > > is the best thing to add another function to os-posix and os-win > then?
Given this function's only for use in qemu-thread-posix.c I think it would be reasonable to just have it live there. It would be nicer to have an static void qemu_thread_set_name(QemuThread *thread, const char *name) { #ifdef CONFIG_THREAD_SETNAME_NP pthread_setname_np(thread->thread, name); #endif } rather than #ifdefs in the middle of functions, that's all. thanks -- PMM