diff options
| author | Jason King <jason.brian.king@gmail.com> | 2017-05-05 22:58:26 +0000 |
|---|---|---|
| committer | John Levon <john.levon@joyent.com> | 2018-10-12 15:51:25 +0000 |
| commit | b267fa2867fd98d2f8864fd82efc8ad4b2276f39 (patch) | |
| tree | 0cd175551d1706e0111fb4ee2b36ca0e82d6699a /usr/src/uts/common/exec | |
| parent | 789cf136e86bd7243b6ffd90333a23ba74b898e3 (diff) | |
| download | illumos-joyent-b267fa2867fd98d2f8864fd82efc8ad4b2276f39.tar.gz | |
OS-7200 would like thread name API
OS-7205 bhyve makefile uses wrong linker flags
Reviewed by: Robert Mustacchi <rm@joyent.com>
Reviewed by: Jason King <jason.king@joyent.com>
Reviewed by: Patrick Mooney <patrick.mooney@joyent.com>
Approved by: Patrick Mooney <patrick.mooney@joyent.com>
Diffstat (limited to 'usr/src/uts/common/exec')
| -rw-r--r-- | usr/src/uts/common/exec/elf/elf_notes.c | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/usr/src/uts/common/exec/elf/elf_notes.c b/usr/src/uts/common/exec/elf/elf_notes.c index 7453f6c745..d977d28540 100644 --- a/usr/src/uts/common/exec/elf/elf_notes.c +++ b/usr/src/uts/common/exec/elf/elf_notes.c @@ -26,7 +26,7 @@ /* * Copyright 2012 DEY Storage Systems, Inc. All rights reserved. - * Copyright 2016, Joyent, Inc. + * Copyright 2018, Joyent, Inc. */ #include <sys/types.h> @@ -94,7 +94,7 @@ setup_note_header(Phdr *v, proc_t *p) v[0].p_type = PT_NOTE; v[0].p_flags = PF_R; - v[0].p_filesz = (sizeof (Note) * (10 + 2 * nlwp + nzomb + nfd)) + v[0].p_filesz = (sizeof (Note) * (10 + 3 * nlwp + nzomb + nfd)) + roundup(sizeof (psinfo_t), sizeof (Word)) + roundup(sizeof (pstatus_t), sizeof (Word)) + roundup(prgetprivsize(), sizeof (Word)) @@ -107,6 +107,7 @@ setup_note_header(Phdr *v, proc_t *p) + roundup(sizeof (prsecflags_t), sizeof (Word)) + (nlwp + nzomb) * roundup(sizeof (lwpsinfo_t), sizeof (Word)) + nlwp * roundup(sizeof (lwpstatus_t), sizeof (Word)) + + nlwp * roundup(sizeof (prlwpname_t), sizeof (Word)) + nfd * roundup(sizeof (prfdinfo_t), sizeof (Word)); if (curproc->p_agenttp != NULL) { @@ -458,6 +459,7 @@ write_elfnotes(proc_t *p, int sig, vnode_t *vp, offset_t offset, nzomb = p->p_zombcnt; /* for each entry in the lwp directory ... */ for (ldp = p->p_lwpdir; nlwp + nzomb != 0; ldp++) { + prlwpname_t name = { 0, }; if ((lep = ldp->ld_entry) == NULL) /* empty slot */ continue; @@ -468,6 +470,10 @@ write_elfnotes(proc_t *p, int sig, vnode_t *vp, offset_t offset, lwp = ttolwp(t); mutex_enter(&p->p_lock); prgetlwpsinfo(t, &bigwad->lwpsinfo); + if (t->t_name != NULL) { + (void) strlcpy(name.pr_lwpname, t->t_name, + sizeof (name.pr_lwpname)); + } mutex_exit(&p->p_lock); } else { /* zombie lwp */ ASSERT(nzomb != 0); @@ -478,11 +484,15 @@ write_elfnotes(proc_t *p, int sig, vnode_t *vp, offset_t offset, bigwad->lwpsinfo.pr_sname = 'Z'; bigwad->lwpsinfo.pr_start.tv_sec = lep->le_start; } + + name.pr_lwpid = bigwad->lwpsinfo.pr_lwpid; + error = elfnote(vp, &offset, NT_LWPSINFO, sizeof (bigwad->lwpsinfo), (caddr_t)&bigwad->lwpsinfo, rlimit, credp); if (error) goto done; + if (t == NULL) /* nothing more to do for a zombie */ continue; @@ -516,6 +526,11 @@ write_elfnotes(proc_t *p, int sig, vnode_t *vp, offset_t offset, if (error) goto done; + if ((error = elfnote(vp, &offset, NT_LWPNAME, sizeof (name), + (caddr_t)&name, rlimit, credp)) != 0) + goto done; + + #if defined(__sparc) /* * Unspilled SPARC register windows. |
