Contrary to lstopo, hwloc-ps has no problem with long command-lines.
What's the point of shortening to comm here?
Brice
Le 29/08/2017 18:27, 'Gitdub ' a écrit :
> This is an automated email from the git hooks/post-receive script. It was
> generated because a ref change was pushed to the repository containing
> the project "open-mpi/hwloc".
>
> The branch, master has been updated
>via 37eb93c7dfeca1a0ce84474bac9d2f234bcbacd4 (commit)
> from be52ce0ca44b36cc50b55b0ab2cf784f1a2a1c75 (commit)
>
> Those revisions listed above that are new to this repository have
> not appeared on any other notification email; so we list those
> revisions in full, below.
>
> - Log -
> https://github.com/open-mpi/hwloc/commit/37eb93c7dfeca1a0ce84474bac9d2f234bcbacd4
>
> commit 37eb93c7dfeca1a0ce84474bac9d2f234bcbacd4
> Author: Samuel Thibault
> Date: Tue Aug 29 18:25:36 2017 +0200
>
> hwloc-ps: harmonize with lstopo --ps
>
> Harmonize the hwloc-ps source code for getting process name with lstopo
> --ps
> source code. This thus gets 11e1957 ('show only comm of processes').
>
> (cherry picked from commit d801688ef7e5fbf22c7259f679d350d6f41ebea1)
>
> diff --git a/utils/hwloc/hwloc-ps.c b/utils/hwloc/hwloc-ps.c
> index 095e8c7..c5256a9 100644
> --- a/utils/hwloc/hwloc-ps.c
> +++ b/utils/hwloc/hwloc-ps.c
> @@ -1,6 +1,6 @@
> /*
> * Copyright © 2009-2017 Inria. All rights reserved.
> - * Copyright © 2009-2012 Université Bordeaux
> + * Copyright © 2009-2012, 2017 Université Bordeaux
> * Copyright © 2009-2011 Cisco Systems, Inc. All rights reserved.
> * See COPYING in top-level directory.
> */
> @@ -116,20 +116,69 @@ static void one_process(hwloc_topology_t topology,
> hwloc_const_bitmap_t topocpus
>path = malloc(pathlen);
>snprintf(path, pathlen, "/proc/%ld/cmdline", pid);
>file = open(path, O_RDONLY);
> - free(path);
> + if (file < 0) {
> + /* Ignore errors */
> + free(path);
> + goto out;
> + }
> + n = read(file, name, sizeof(name) - 1);
> + close(file);
>
> - if (file >= 0) {
> -n = read(file, name, sizeof(name) - 1);
> -close(file);
> + if (n <= 0) {
> + /* Ignore kernel threads and errors */
> + free(path);
> + goto out;
> + }
> +
> + snprintf(path, pathlen, "/proc/%ld/comm", pid);
> + file = open(path, O_RDONLY);
>
> -if (n <= 0)
> - /* Ignore kernel threads and errors */
> - goto out;
> + if (file >= 0) {
> + n = read(file, name, sizeof(name) - 1);
> + close(file);
> + if (n > 0) {
> + name[n] = 0;
> + if (n > 1 && name[n-1] == '\n')
> + name[n-1] = 0;
> + } else {
> + snprintf(name, sizeof(name), "(unknown)");
> + }
> + } else {
> + /* Old kernel, have to look at old file */
> + char stats[32];
> + char *parenl = NULL, *parenr;
>
> -name[n] = 0;
> + snprintf(path, pathlen, "/proc/%ld/stat", pid);
> + file = open(path, O_RDONLY);
>
> - if (only_name && !strstr(name, only_name))
> + if (file < 0) {
> + /* Ignore errors */
> + free(path);
> goto out;
> + }
> +
> + /* "pid (comm) ..." */
> + n = read(file, stats, sizeof(stats) - 1);
> + close(file);
> + if (n > 0) {
> + stats[n] = 0;
> + parenl = strchr(stats, '(');
> + parenr = strchr(stats, ')');
> + if (!parenr)
> + parenr = [sizeof(stats)-1];
> + *parenr = 0;
> + }
> + if (!parenl) {
> + snprintf(name, sizeof(name), "(unknown)");
> + } else {
> + snprintf(name, sizeof(name), parenl+1);
> + }
> + }
> +
> + free(path);
> +
> + if (only_name && !strstr(name, only_name)) {
> + goto out;
>}
> }
> #endif /* HWLOC_LINUX_SYS */
> diff --git a/utils/lstopo/lstopo.c b/utils/lstopo/lstopo.c
> index cb4f7dc..70c78eb 100644
> --- a/utils/lstopo/lstopo.c
> +++ b/utils/lstopo/lstopo.c
> @@ -217,12 +217,12 @@ static void add_process_objects(hwloc_topology_t
> topology)
>{
> /* Get threads */
> DIR *task_dir;
> -struct dirent *task_dirent;
>
> snprintf(path, pathlen, "/proc/%s/task", dirent->d_name);
> task_dir = opendir(path);
>
> if (task_dir) {
> + struct dirent *task_dirent;
>while ((task_dirent = readdir(task_dir))) {
> long local_tid;
> char *task_end;
>
>
> ---
>
> Summary of changes:
> utils/hwloc/hwloc-ps.c | 69
> ++
> utils/lstopo/lstopo.c | 2 +-
> 2 files changed, 60 insertions(+), 11 deletions(-)
>
>
> hooks/post-receive
___
hwloc-devel mailing list
hwloc-devel@lists.open-mpi.org