Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Thread name longer than 15 chars?

By using functions like prctl, or pthread_set_name_np it's possible to change the name of a thread. The limit both functions imposes, at least in Linux 2.6.38, is that the name cannot be longer than 15 characters (NULL termination being the 16th byte).

Where is this 15 character limit imposed, and is there any (even unorthodox) way around it?

Update:

As mentioned in the comments, this is imposed by the kernel.

The definition can be found here: http://lxr.linux.no/linux+v2.6.37/include/linux/sched.h#L245

like image 747
dsvensson Avatar asked Feb 17 '11 08:02

dsvensson


People also ask

How to set thread name in c?

The pthread_setname_np() function can be used to set a unique name for a thread, which can be useful for debugging multithreaded applications. The thread name is a meaningful C language string, whose length is restricted to 16 characters, including the terminating null byte ('\0').

What is the default name of a thread?

By default, each thread has a name, i.e. thread-0, thread-1 and so on. By we can change the name of the thread by using the setName() method.

How do I get the thread name in Linux?

The pthread_getname_np() function retrieves the name of the thread. The buffer specified by name must be at least 16 characters in length. The returned thread name will be null terminated in the output buffer. By default, each thread is unnamed.


1 Answers

15-char limit is enforced by the kernel:

struct task_struct::comm[TASK_COMM_LEN]

which is 16-byte wide.

You have to recompile the kernel if you want to increase that.

like image 82
adobriyan Avatar answered Sep 18 '22 01:09

adobriyan