diff options
author | Luis Machado <luisgpm@br.ibm.com> | 2011-08-24 12:07:28 +0000 |
---|---|---|
committer | Luis Machado <luisgpm@br.ibm.com> | 2011-08-24 12:07:28 +0000 |
commit | 13da1c9782f523debe697aa1415b7b4f96fe4f93 (patch) | |
tree | 0cc8eb2413196e9f8c4af3cb2e4e1d7f0524add3 /gdb/common | |
parent | f040079fa2855244f39a6a39d6f03a4e80128d6d (diff) | |
download | gdb-13da1c9782f523debe697aa1415b7b4f96fe4f93.zip gdb-13da1c9782f523debe697aa1415b7b4f96fe4f93.tar.gz gdb-13da1c9782f523debe697aa1415b7b4f96fe4f93.tar.bz2 |
Move common linux procfs code to common/
Diffstat (limited to 'gdb/common')
-rw-r--r-- | gdb/common/linux-procfs.c | 55 | ||||
-rw-r--r-- | gdb/common/linux-procfs.h | 29 |
2 files changed, 84 insertions, 0 deletions
diff --git a/gdb/common/linux-procfs.c b/gdb/common/linux-procfs.c new file mode 100644 index 0000000..33730b2 --- /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; +} diff --git a/gdb/common/linux-procfs.h b/gdb/common/linux-procfs.h new file mode 100644 index 0000000..bdfa569 --- /dev/null +++ b/gdb/common/linux-procfs.h @@ -0,0 +1,29 @@ +/* Linux-specific PROCFS manipulation routines. + Copyright (C) 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/>. */ + +#ifndef COMMON_LINUX_PROCFS_H +#define COMMON_LINUX_PROCFS_H + +#include <unistd.h> + +/* Return the TGID of LWPID from /proc/pid/status. Returns -1 if not + found. */ + +extern int linux_proc_get_tgid (int lwpid); + +#endif /* COMMON_LINUX_PROCFS_H */ |