7d9c80f626
I'm fairly sure that there is no way on Linux to inspect the process
tree without using procfs, any tool such as ps(1), top(1) etc. that
shows this sort of information ultimately looks the information up in
procfs.
So let's remove this comment added in 2f732bf15e
(tr2: log parent
process name, 2021-07-21), it's setting us up for an impossible task.
Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Acked-by: Taylor Blau <me@ttaylorr.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
55 lines
1.4 KiB
C
55 lines
1.4 KiB
C
#include "cache.h"
|
|
|
|
#include "strbuf.h"
|
|
#include "strvec.h"
|
|
#include "trace2.h"
|
|
|
|
static void get_ancestry_names(struct strvec *names)
|
|
{
|
|
/*
|
|
* NEEDSWORK: We could gather the entire pstree into an array to match
|
|
* functionality with compat/win32/trace2_win32_process_info.c.
|
|
* To do so, we may want to examine /proc/<pid>/stat. For now, just
|
|
* gather the immediate parent name which is readily accessible from
|
|
* /proc/$(getppid())/comm.
|
|
*/
|
|
struct strbuf procfs_path = STRBUF_INIT;
|
|
struct strbuf name = STRBUF_INIT;
|
|
|
|
/* try to use procfs if it's present. */
|
|
strbuf_addf(&procfs_path, "/proc/%d/comm", getppid());
|
|
if (strbuf_read_file(&name, procfs_path.buf, 0)) {
|
|
strbuf_release(&procfs_path);
|
|
strbuf_trim_trailing_newline(&name);
|
|
strvec_push(names, strbuf_detach(&name, NULL));
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
void trace2_collect_process_info(enum trace2_process_info_reason reason)
|
|
{
|
|
if (!trace2_is_enabled())
|
|
return;
|
|
|
|
/* someday we may want to write something extra here, but not today */
|
|
if (reason == TRACE2_PROCESS_INFO_EXIT)
|
|
return;
|
|
|
|
if (reason == TRACE2_PROCESS_INFO_STARTUP) {
|
|
/*
|
|
* NEEDSWORK: we could do the entire ptree in an array instead,
|
|
* see compat/win32/trace2_win32_process_info.c.
|
|
*/
|
|
struct strvec names = STRVEC_INIT;
|
|
|
|
get_ancestry_names(&names);
|
|
|
|
if (names.nr)
|
|
trace2_cmd_ancestry(names.v);
|
|
strvec_clear(&names);
|
|
}
|
|
|
|
return;
|
|
}
|