X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=gdb%2Fgdbserver%2Fgdbthread.h;h=d2326fb0590b3602148ced9a8396cb8952d11ba1;hb=984a2c042e82f2306183d9d165c5cb99e4341503;hp=5d4955b5d154687050c542920715e2d82fb0b054;hpb=9accd112a61b0eaee2724185171761707b4f53e1;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/gdbserver/gdbthread.h b/gdb/gdbserver/gdbthread.h index 5d4955b5d1..d2326fb059 100644 --- a/gdb/gdbserver/gdbthread.h +++ b/gdb/gdbserver/gdbthread.h @@ -1,5 +1,5 @@ /* Multi-thread control defs for remote server for GDB. - Copyright (C) 1993-2013 Free Software Foundation, Inc. + Copyright (C) 1993-2016 Free Software Foundation, Inc. This file is part of GDB. @@ -19,15 +19,19 @@ #ifndef GDB_THREAD_H #define GDB_THREAD_H -#include "server.h" +#include "inferiors.h" struct btrace_target_info; +struct regcache; struct thread_info { + /* This must appear first. See inferiors.h. + The list iterator functions assume it. */ struct inferior_list_entry entry; + void *target_data; - void *regcache_data; + struct regcache *regcache_data; /* The last resume GDB requested on this thread. */ enum resume_kind last_resume_kind; @@ -35,6 +39,9 @@ struct thread_info /* The last wait status reported for this thread. */ struct target_waitstatus last_status; + /* True if LAST_STATUS hasn't been reported to GDB yet. */ + int status_pending_p; + /* Given `while-stepping', a thread may be collecting data for more than one tracepoint simultaneously. E.g.: @@ -67,11 +74,20 @@ struct thread_info extern struct inferior_list all_threads; void remove_thread (struct thread_info *thread); -void add_thread (ptid_t ptid, void *target_data); +struct thread_info *add_thread (ptid_t ptid, void *target_data); + +struct thread_info *get_first_thread (void); struct thread_info *find_thread_ptid (ptid_t ptid); -struct thread_info *gdb_id_to_thread (unsigned int); + +/* Find any thread of the PID process. Returns NULL if none is + found. */ +struct thread_info *find_any_thread_of_pid (int pid); /* Get current thread ID (Linux task ID). */ -#define current_ptid ((struct inferior_list_entry *) current_inferior)->id +#define current_ptid (current_thread->entry.id) + +/* Create a cleanup to restore current_thread. */ +struct cleanup *make_cleanup_restore_current_thread (void); + #endif /* GDB_THREAD_H */