On 11 March 2014 16:36, Dr. David Alan Gilbert <[email protected]> wrote:
> * Peter Maydell ([email protected]) wrote:
>> On 11 March 2014 16:13, Dr. David Alan Gilbert <[email protected]> wrote:
>> > * Peter Maydell ([email protected]) 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