GDB (xrefs)
Loading...
Searching...
No Matches
Classes | Macros | Typedefs | Enumerations | Functions | Variables
ada-tasks.c File Reference
#include "defs.h"
#include "observable.h"
#include "gdbcmd.h"
#include "target.h"
#include "ada-lang.h"
#include "gdbcore.h"
#include "inferior.h"
#include "gdbthread.h"
#include "progspace.h"
#include "objfiles.h"
#include "cli/cli-style.h"

Go to the source code of this file.

Classes

struct  atcb_fieldnos
 
struct  ada_tasks_pspace_data
 
struct  ada_tasks_pspace_data::atcb_fieldno
 
struct  ada_tasks_inferior_data
 

Macros

#define KNOWN_TASKS_NAME   "system__tasking__debug__known_tasks"
 
#define KNOWN_TASKS_LIST   "system__tasking__debug__first_task"
 
#define TASK_APPLY_OPTION_HELP   "\Prints per-inferior task number followed by COMMAND output.\n\\n\By default, an error raised during the execution of COMMAND\n\aborts \"task apply\".\n\\n\Options:\n\%OPTIONS%"
 

Typedefs

using qcs_flag_option_def = gdb::option::flag_option_def<qcs_flags>
 

Enumerations

enum  task_states {
  Unactivated , Runnable , Terminated , Activator_Sleep ,
  Acceptor_Sleep , Entry_Caller_Sleep , Async_Select_Sleep , Delay_Sleep ,
  Master_Completion_Sleep , Master_Phase_2_Sleep , Interrupt_Server_Idle_Sleep , Interrupt_Server_Blocked_Interrupt_Sleep ,
  Timer_Server_Sleep , AST_Server_Sleep , Asynchronous_Hold , Interrupt_Server_Blocked_On_Event_Flag ,
  Activating , Acceptor_Delay_Sleep
}
 
enum  ada_known_tasks_kind { ADA_TASKS_UNKNOWN = 0 , ADA_TASKS_NOT_FOUND , ADA_TASKS_ARRAY , ADA_TASKS_LIST }
 

Functions

static int ada_build_task_list ()
 
static const char * get_state (unsigned value)
 
static const char * get_long_state (unsigned value)
 
static std::string task_to_str (int taskno, const ada_task_info *task_info)
 
static struct ada_tasks_pspace_dataget_ada_tasks_pspace_data (struct program_space *pspace)
 
static struct ada_tasks_inferior_dataget_ada_tasks_inferior_data (struct inferior *inf)
 
int ada_get_task_number (thread_info *thread)
 
static int get_task_number_from_id (CORE_ADDR task_id, struct inferior *inf)
 
int valid_task_id (int task_num)
 
static int ada_task_is_alive (const struct ada_task_info *task_info)
 
struct ada_task_infoada_get_task_info_from_ptid (ptid_t ptid)
 
void iterate_over_live_ada_tasks (ada_task_list_iterator_ftype iterator)
 
static void value_as_string (char *dest, struct value *val, int length)
 
static void read_fat_string_value (char *dest, struct value *val, int max_len)
 
const char * ada_get_tcb_types_info (void)
 
static ptid_t ptid_from_atcb_common (struct value *common_value)
 
static void read_atcb (CORE_ADDR task_id, struct ada_task_info *task_info)
 
static void add_ada_task (CORE_ADDR task_id, struct inferior *inf)
 
static bool read_known_tasks_array (struct ada_tasks_inferior_data *data)
 
static bool read_known_tasks_list (struct ada_tasks_inferior_data *data)
 
static void ada_tasks_inferior_data_sniffer (struct ada_tasks_inferior_data *data)
 
static void read_known_tasks ()
 
void print_ada_task_info (struct ui_out *uiout, const char *arg_str, struct inferior *inf)
 
static void info_task (struct ui_out *uiout, const char *taskno_str, struct inferior *inf)
 
static void info_tasks_command (const char *arg, int from_tty)
 
static void display_current_task_id (void)
 
static void task_command_1 (const char *taskno_str, int from_tty, struct inferior *inf)
 
static void task_command (const char *taskno_str, int from_tty)
 
static void ada_task_list_changed (struct inferior *inf)
 
static void ada_tasks_invalidate_pspace_data (struct program_space *pspace)
 
static void ada_tasks_invalidate_inferior_data (struct inferior *inf)
 
static void ada_tasks_normal_stop_observer (struct bpstat *unused_args, int unused_args2)
 
static void ada_tasks_clear_pspace_data (program_space *pspace)
 
static void ada_tasks_new_objfile_observer (objfile *objfile)
 
static std::array< gdb::option::option_def_group, 1 > make_task_apply_all_options_def_group (qcs_flags *flags)
 
static gdb::option::option_def_group make_task_apply_options_def_group (qcs_flags *flags)
 
static void task_apply_all_command (const char *cmd, int from_tty)
 
static void task_apply_command (const char *tidlist, int from_tty)
 
void _initialize_tasks ()
 

Variables

static const int MAX_NUMBER_OF_KNOWN_TASKS = 1000
 
static const char *const task_states []
 
static const char *const long_task_states []
 
static const registry< program_space >::key< ada_tasks_pspace_dataada_tasks_pspace_data_handle
 
static const registry< inferior >::key< ada_tasks_inferior_dataada_tasks_inferior_data_handle
 
static const gdb::option::option_def task_qcs_flags_option_defs []
 

Macro Definition Documentation

◆ KNOWN_TASKS_LIST

#define KNOWN_TASKS_LIST   "system__tasking__debug__first_task"

Definition at line 42 of file ada-tasks.c.

Referenced by ada_tasks_inferior_data_sniffer().

◆ KNOWN_TASKS_NAME

#define KNOWN_TASKS_NAME   "system__tasking__debug__known_tasks"

Definition at line 34 of file ada-tasks.c.

Referenced by ada_tasks_inferior_data_sniffer().

◆ TASK_APPLY_OPTION_HELP

#define TASK_APPLY_OPTION_HELP   "\Prints per-inferior task number followed by COMMAND output.\n\\n\By default, an error raised during the execution of COMMAND\n\aborts \"task apply\".\n\\n\Options:\n\%OPTIONS%"

Typedef Documentation

◆ qcs_flag_option_def

Definition at line 1500 of file ada-tasks.c.

Enumeration Type Documentation

◆ ada_known_tasks_kind

Enumerator
ADA_TASKS_UNKNOWN 
ADA_TASKS_NOT_FOUND 
ADA_TASKS_ARRAY 
ADA_TASKS_LIST 

Definition at line 204 of file ada-tasks.c.

◆ task_states

Enumerator
Unactivated 
Runnable 
Terminated 
Activator_Sleep 
Acceptor_Sleep 
Entry_Caller_Sleep 
Async_Select_Sleep 
Delay_Sleep 
Master_Completion_Sleep 
Master_Phase_2_Sleep 
Interrupt_Server_Idle_Sleep 
Interrupt_Server_Blocked_Interrupt_Sleep 
Timer_Server_Sleep 
AST_Server_Sleep 
Asynchronous_Hold 
Interrupt_Server_Blocked_On_Event_Flag 
Activating 
Acceptor_Delay_Sleep 

Definition at line 44 of file ada-tasks.c.

Function Documentation

◆ _initialize_tasks()

void _initialize_tasks ( )

Definition at line 1655 of file ada-tasks.c.

Referenced by initialize_all_files().

◆ ada_build_task_list()

static int ada_build_task_list ( )
static

◆ ada_get_task_info_from_ptid()

struct ada_task_info * ada_get_task_info_from_ptid ( ptid_t ptid)

◆ ada_get_task_number()

int ada_get_task_number ( thread_info * thread)

◆ ada_get_tcb_types_info()

const char * ada_get_tcb_types_info ( void )

◆ ada_task_is_alive()

static int ada_task_is_alive ( const struct ada_task_info * task_info)
static

◆ ada_task_list_changed()

static void ada_task_list_changed ( struct inferior * inf)
static

Definition at line 1436 of file ada-tasks.c.

References get_ada_tasks_inferior_data().

Referenced by ada_tasks_normal_stop_observer().

◆ ada_tasks_clear_pspace_data()

static void ada_tasks_clear_pspace_data ( program_space * pspace)
static

◆ ada_tasks_inferior_data_sniffer()

static void ada_tasks_inferior_data_sniffer ( struct ada_tasks_inferior_data * data)
static

◆ ada_tasks_invalidate_inferior_data()

static void ada_tasks_invalidate_inferior_data ( struct inferior * inf)
static

Definition at line 1454 of file ada-tasks.c.

References ADA_TASKS_UNKNOWN, and get_ada_tasks_inferior_data().

Referenced by ada_tasks_clear_pspace_data().

◆ ada_tasks_invalidate_pspace_data()

static void ada_tasks_invalidate_pspace_data ( struct program_space * pspace)
static

◆ ada_tasks_new_objfile_observer()

static void ada_tasks_new_objfile_observer ( objfile * objfile)
static

Definition at line 1492 of file ada-tasks.c.

References ada_tasks_clear_pspace_data(), and objfile::pspace.

◆ ada_tasks_normal_stop_observer()

static void ada_tasks_normal_stop_observer ( struct bpstat * unused_args,
int unused_args2 )
static

Definition at line 1465 of file ada-tasks.c.

References ada_task_list_changed(), and current_inferior().

◆ add_ada_task()

static void add_ada_task ( CORE_ADDR task_id,
struct inferior * inf )
static

Definition at line 835 of file ada-tasks.c.

References get_ada_tasks_inferior_data(), and read_atcb().

Referenced by read_known_tasks_array(), and read_known_tasks_list().

◆ display_current_task_id()

static void display_current_task_id ( void )
static

◆ get_ada_tasks_inferior_data()

static struct ada_tasks_inferior_data * get_ada_tasks_inferior_data ( struct inferior * inf)
static

◆ get_ada_tasks_pspace_data()

static struct ada_tasks_pspace_data * get_ada_tasks_pspace_data ( struct program_space * pspace)
static

◆ get_long_state()

static const char * get_long_state ( unsigned value)
static

Definition at line 127 of file ada-tasks.c.

References long_task_states.

Referenced by info_task().

◆ get_state()

static const char * get_state ( unsigned value)
static

Definition at line 90 of file ada-tasks.c.

Referenced by print_ada_task_info().

◆ get_task_number_from_id()

static int get_task_number_from_id ( CORE_ADDR task_id,
struct inferior * inf )
static

Definition at line 353 of file ada-tasks.c.

References get_ada_tasks_inferior_data().

Referenced by info_task(), and print_ada_task_info().

◆ info_task()

static void info_task ( struct ui_out * uiout,
const char * taskno_str,
struct inferior * inf )
static

◆ info_tasks_command()

static void info_tasks_command ( const char * arg,
int from_tty )
static

Definition at line 1329 of file ada-tasks.c.

References current_inferior(), current_uiout, info_task(), and print_ada_task_info().

◆ iterate_over_live_ada_tasks()

void iterate_over_live_ada_tasks ( ada_task_list_iterator_ftype iterator)

◆ make_task_apply_all_options_def_group()

static std::array< gdb::option::option_def_group, 1 > make_task_apply_all_options_def_group ( qcs_flags * flags)
inlinestatic

Definition at line 1523 of file ada-tasks.c.

References flags, and task_qcs_flags_option_defs.

Referenced by task_apply_all_command().

◆ make_task_apply_options_def_group()

static gdb::option::option_def_group make_task_apply_options_def_group ( qcs_flags * flags)
inlinestatic

Definition at line 1534 of file ada-tasks.c.

References flags, and task_qcs_flags_option_defs.

Referenced by task_apply_command().

◆ print_ada_task_info()

void print_ada_task_info ( struct ui_out * uiout,
const char * arg_str,
struct inferior * inf )

◆ ptid_from_atcb_common()

static ptid_t ptid_from_atcb_common ( struct value * common_value)
static

◆ read_atcb()

static void read_atcb ( CORE_ADDR task_id,
struct ada_task_info * task_info )
static

◆ read_fat_string_value()

static void read_fat_string_value ( char * dest,
struct value * val,
int max_len )
static

◆ read_known_tasks()

static void read_known_tasks ( )
static

◆ read_known_tasks_array()

static bool read_known_tasks_array ( struct ada_tasks_inferior_data * data)
static

Definition at line 848 of file ada-tasks.c.

References add_ada_task(), current_inferior(), extract_typed_address(), and read_memory().

Referenced by read_known_tasks().

◆ read_known_tasks_list()

static bool read_known_tasks_list ( struct ada_tasks_inferior_data * data)
static

◆ task_apply_all_command()

static void task_apply_all_command ( const char * cmd,
int from_tty )
static

◆ task_apply_command()

static void task_apply_command ( const char * tidlist,
int from_tty )
static

◆ task_command()

static void task_command ( const char * taskno_str,
int from_tty )
static

◆ task_command_1()

static void task_command_1 ( const char * taskno_str,
int from_tty,
struct inferior * inf )
static

◆ task_to_str()

static std::string task_to_str ( int taskno,
const ada_task_info * task_info )
static

◆ valid_task_id()

int valid_task_id ( int task_num)

◆ value_as_string()

static void value_as_string ( char * dest,
struct value * val,
int length )
static

Definition at line 431 of file ada-tasks.c.

References value::contents().

Referenced by read_atcb().

Variable Documentation

◆ ada_tasks_inferior_data_handle

const registry<inferior>::key<ada_tasks_inferior_data> ada_tasks_inferior_data_handle
static

Definition at line 275 of file ada-tasks.c.

Referenced by get_ada_tasks_inferior_data().

◆ ada_tasks_pspace_data_handle

const registry<program_space>::key<ada_tasks_pspace_data> ada_tasks_pspace_data_handle
static

Definition at line 199 of file ada-tasks.c.

Referenced by get_ada_tasks_pspace_data().

◆ long_task_states

const char* const long_task_states[]
static
Initial value:
= {
N_("Unactivated"),
N_("Runnable"),
N_("Terminated"),
N_("Waiting for child activation"),
N_("Blocked in accept or select with terminate"),
N_("Waiting on entry call"),
N_("Asynchronous Selective Wait"),
N_("Delay Sleep"),
N_("Waiting for children termination"),
N_("Waiting for children in terminate alternative"),
"",
"",
"",
"",
N_("Asynchronous Hold"),
"",
N_("Activating"),
}

Definition at line 103 of file ada-tasks.c.

Referenced by get_long_state().

◆ MAX_NUMBER_OF_KNOWN_TASKS

const int MAX_NUMBER_OF_KNOWN_TASKS = 1000
static

Definition at line 37 of file ada-tasks.c.

Referenced by ada_tasks_inferior_data_sniffer().

◆ task_qcs_flags_option_defs

const gdb::option::option_def task_qcs_flags_option_defs[]
static
Initial value:
= {
"q", [] (qcs_flags *opt) { return &opt->quiet; },
N_("Disables printing the task information."),
},
"c", [] (qcs_flags *opt) { return &opt->cont; },
N_("Print any error raised by COMMAND and continue."),
},
"s", [] (qcs_flags *opt) { return &opt->silent; },
N_("Silently ignore any errors or empty output produced by COMMAND."),
},
}

Definition at line 1502 of file ada-tasks.c.

Referenced by make_task_apply_all_options_def_group(), and make_task_apply_options_def_group().

◆ task_states

const char* const task_states[]
static
Initial value:
= {
N_("Unactivated"),
N_("Runnable"),
N_("Terminated"),
N_("Child Activation Wait"),
N_("Accept or Select Term"),
N_("Waiting on entry call"),
N_("Async Select Wait"),
N_("Delay Sleep"),
N_("Child Termination Wait"),
N_("Wait Child in Term Alt"),
"",
"",
"",
"",
N_("Asynchronous Hold"),
"",
N_("Activating"),
}

Definition at line 67 of file ada-tasks.c.