summaryrefslogtreecommitdiff
path: root/gdb/thread.c
diff options
context:
space:
mode:
authorStan Shebs <shebs@apple.com>2010-06-18 17:44:33 +0000
committerStan Shebs <shebs@apple.com>2010-06-18 17:44:33 +0000
commitd2328f2aa90d894baab7dda8ec2cf5dbab13233d (patch)
tree9c715ca144a215a729c1a06cf00ced320ba7b0ed /gdb/thread.c
parent06d611d9bd4a0a1027dc35e52ea1ff26e28dd466 (diff)
downloadgdb-d2328f2aa90d894baab7dda8ec2cf5dbab13233d.tar.gz
* thread.c (thread_id_make_value): Make a value representing the
current thread. (_initialize_thread): Create $_thread. * gdb.texinfo (Debugging Programs with Multiple Threads): Describe $_thread. * gdb.threads/thread-specific.exp: Add tests of $_thread.
Diffstat (limited to 'gdb/thread.c')
-rw-r--r--gdb/thread.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/gdb/thread.c b/gdb/thread.c
index c10d23c9f21..2fdc7f9b326 100644
--- a/gdb/thread.c
+++ b/gdb/thread.c
@@ -1262,6 +1262,18 @@ update_thread_list (void)
target_find_new_threads ();
}
+/* Return a new value for the selected thread's id. Return a value of 0 if
+ no thread is selected, or no threads exist. */
+
+static struct value *
+thread_id_make_value (struct gdbarch *gdbarch, struct internalvar *var)
+{
+ struct thread_info *tp = find_thread_ptid (inferior_ptid);
+
+ return value_from_longest (builtin_type (gdbarch)->builtin_int,
+ (tp ? tp->num : 0));
+}
+
/* Commands with a prefix of `thread'. */
struct cmd_list_element *thread_cmd_list = NULL;
@@ -1295,4 +1307,6 @@ Show printing of thread events (such as thread start and exit)."), NULL,
NULL,
show_print_thread_events,
&setprintlist, &showprintlist);
+
+ create_internalvar_type_lazy ("_thread", thread_id_make_value);
}