]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - gdb/nat/linux-nat.h
GDB copyright headers update after running GDB's copyright.py script.
[thirdparty/binutils-gdb.git] / gdb / nat / linux-nat.h
CommitLineData
96d7229d
LM
1/* Code for native debugging support for GNU/Linux (LWP layer).
2
618f726f 3 Copyright (C) 2000-2016 Free Software Foundation, Inc.
96d7229d
LM
4
5 This file is part of GDB.
6
7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 3 of the License, or
10 (at your option) any later version.
11
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
16
17 You should have received a copy of the GNU General Public License
18 along with this program. If not, see <http://www.gnu.org/licenses/>. */
19
20#ifndef LINUX_NAT_H
21#define LINUX_NAT_H
22
2465e12e
PA
23#include "target/waitstatus.h"
24
6d4ee8c6 25struct lwp_info;
4b134ca1 26struct arch_lwp_info;
6d4ee8c6 27
682b2546
DE
28/* This is the kernel's hard limit. Not to be confused with SIGRTMIN. */
29#ifndef __SIGRTMIN
30#define __SIGRTMIN 32
31#endif
32
96d7229d
LM
33/* Unlike other extended result codes, WSTOPSIG (status) on
34 PTRACE_O_TRACESYSGOOD syscall events doesn't return SIGTRAP, but
35 instead SIGTRAP with bit 7 set. */
36#define SYSCALL_SIGTRAP (SIGTRAP | 0x80)
37
7b669087
GB
38/* Return the ptid of the current lightweight process. With NPTL
39 threads and LWPs map 1:1, so this is equivalent to returning the
40 ptid of the current thread. This function must be provided by
41 the client. */
42
43extern ptid_t current_lwp_ptid (void);
44
6d4ee8c6
GB
45/* Function type for the CALLBACK argument of iterate_over_lwps. */
46typedef int (iterate_over_lwps_ftype) (struct lwp_info *lwp, void *arg);
47
48/* Iterate over all LWPs. Calls CALLBACK with its second argument set
49 to DATA for every LWP in the list. If CALLBACK returns nonzero for
50 a particular LWP, return a pointer to the structure describing that
51 LWP immediately. Otherwise return NULL. This function must be
52 provided by the client. */
53
54extern struct lwp_info *iterate_over_lwps (ptid_t filter,
55 iterate_over_lwps_ftype callback,
56 void *data);
57
cff068da
GB
58/* Return the ptid of LWP. */
59
60extern ptid_t ptid_of_lwp (struct lwp_info *lwp);
61
4b134ca1
GB
62/* Set the architecture-specific data of LWP. This function must be
63 provided by the client. */
64
65extern void lwp_set_arch_private_info (struct lwp_info *lwp,
66 struct arch_lwp_info *info);
67
68/* Return the architecture-specific data of LWP. This function must
69 be provided by the client. */
70
71extern struct arch_lwp_info *lwp_arch_private_info (struct lwp_info *lwp);
72
cff068da
GB
73/* Return nonzero if LWP is stopped, zero otherwise. This function
74 must be provided by the client. */
75
76extern int lwp_is_stopped (struct lwp_info *lwp);
77
78/* Return the reason the LWP last stopped. This function must be
79 provided by the client. */
80
81extern enum target_stop_reason lwp_stop_reason (struct lwp_info *lwp);
82
b2f7c7e8
GB
83/* Cause LWP to stop. This function must be provided by the
84 client. */
85
86extern void linux_stop_lwp (struct lwp_info *lwp);
87
96d7229d 88#endif /* LINUX_NAT_H */