diff options
author | Luis Machado <luisgpm@br.ibm.com> | 2011-08-24 12:07:20 +0000 |
---|---|---|
committer | Luis Machado <luisgpm@br.ibm.com> | 2011-08-24 12:07:20 +0000 |
commit | 4ff200690b4b07bb32b8cb14b0dab34fa33e9df7 (patch) | |
tree | 4c87feff0406c6095195b10693b69865259bf8ee /gdb/common/linux-procfs.c | |
parent | 4d06a7b17d793a2d4a69c1286ab57752ef2dfcfb (diff) | |
download | gdb-4ff200690b4b07bb32b8cb14b0dab34fa33e9df7.tar.gz |
Move common linux procfs code to common/
Diffstat (limited to 'gdb/common/linux-procfs.c')
-rw-r--r-- | gdb/common/linux-procfs.c | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/gdb/common/linux-procfs.c b/gdb/common/linux-procfs.c new file mode 100644 index 00000000000..33730b299de --- /dev/null +++ b/gdb/common/linux-procfs.c @@ -0,0 +1,55 @@ +/* Linux-specific PROCFS manipulation routines. + Copyright (C) 2009, 2010, 2011 Free Software Foundation, Inc. + + This file is part of GDB. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +#ifdef GDBSERVER +#include "server.h" +#else +#include "defs.h" +#include "gdb_string.h" +#endif + +#include "linux-procfs.h" + +/* Return the TGID of LWPID from /proc/pid/status. Returns -1 if not + found. */ + +int +linux_proc_get_tgid (int lwpid) +{ + FILE *status_file; + char buf[100]; + int tgid = -1; + + snprintf (buf, sizeof (buf), "/proc/%d/status", (int) lwpid); + status_file = fopen (buf, "r"); + if (status_file != NULL) + { + while (fgets (buf, sizeof (buf), status_file)) + { + if (strncmp (buf, "Tgid:", 5) == 0) + { + tgid = strtoul (buf + strlen ("Tgid:"), NULL, 10); + break; + } + } + + fclose (status_file); + } + + return tgid; +} |