-/* for separate threads within the inferior process, for GDB.
- Copyright (C) 1986, 1987, 1988 Free Software Foundation, Inc.
-
-GDB is distributed in the hope that it will be useful, but WITHOUT ANY
-WARRANTY. No author or distributor accepts responsibility to anyone
-for the consequences of using it or for whether it serves any
-particular purpose or works at all, unless he says so in writing.
-Refer to the GDB General Public License for full details.
-
-Everyone is granted permission to copy, modify and redistribute GDB,
-but only under the conditions described in the GDB General Public
-License. A copy of this license is supposed to have been given to you
-along with GDB so you can know your rights and responsibilities. It
-should be in a file named COPYING. Among other things, the copyright
-notice and this notice must be preserved on all copies.
-
-In other words, go ahead and share GDB, but don't try to stop
-anyone else from sharing it farther. Help stamp out software hoarding!
-*/
+/* Multi-process/thread control for GDB, the GNU debugger.
+ Copyright 1986, 1987, 1988, 1993
+
+ Contributed by Lynx Real-Time Systems, Inc. Los Gatos, CA.
+ 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 2 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, write to the Free Software
+Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
#include "defs.h"
#include "symtab.h"
#include "value.h"
#include "target.h"
#include "thread.h"
+#include "command.h"
#include <sys/types.h>
#include <signal.h>
static struct thread_info *thread_list = NULL;
static int highest_thread_num;
-static void thread_info PARAMS ((void));
-
static void thread_command PARAMS ((char * tidstr, int from_tty));
static void prune_threads PARAMS ((void));
{
struct thread_info *tp;
- tp = xmalloc (sizeof (struct thread_info));
+ tp = (struct thread_info *) xmalloc (sizeof (struct thread_info));
tp->pid = pid;
tp->num = ++highest_thread_num;
return 0; /* Never heard of 'im */
}
-#if 0
-void
-bfd_get_core_threads (abfd)
- bfd *abfd;
-{
- int i;
-
- inferior_pid = BUILDPID (inferior_pid, core_thread (abfd)->pid);
- for (i = 0; i < core_pss (abfd).threadcnt; i++)
- add_thread (core_thread (abfd)[i].pid);
-}
-#endif
-
static void
prune_threads ()
{
if (target_has_execution
&& kill (tp->pid, 0) == -1)
{
- tp->pid == -1; /* Mark it as dead */
+ tp->pid = -1; /* Mark it as dead */
continue;
}
/* Switch from one thread to another. */
-void
+static void
thread_switch (pid)
int pid;
{
return;
inferior_pid = pid;
- pc_changed = 0;
flush_cached_frames ();
registers_changed ();
stop_pc = read_pc();