OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [insight/] [gdb/] [tracepoint.h] - Blame information for rev 1767

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 578 markom
/* Data structures associated with tracepoints in GDB.
2
   Copyright 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
3
 
4
   This file is part of GDB.
5
 
6
   This program is free software; you can redistribute it and/or modify
7
   it under the terms of the GNU General Public License as published by
8
   the Free Software Foundation; either version 2 of the License, or
9
   (at your option) any later version.
10
 
11
   This program is distributed in the hope that it will be useful,
12
   but WITHOUT ANY WARRANTY; without even the implied warranty of
13
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
   GNU General Public License for more details.
15
 
16
   You should have received a copy of the GNU General Public License
17
   along with this program; if not, write to the Free Software
18
   Foundation, Inc., 59 Temple Place - Suite 330,
19
   Boston, MA 02111-1307, USA.  */
20
 
21
#if !defined (TRACEPOINT_H)
22
#define TRACEPOINT_H 1
23
 
24
#if !defined (BREAKPOINT_H)
25
enum enable
26
  {
27
    disabled, enabled
28
  };
29
#endif
30
/* The data structure for an action: */
31
struct action_line
32
  {
33
    struct action_line *next;
34
    char *action;
35
  };
36
 
37
/* The data structure for a tracepoint: */
38
 
39
struct tracepoint
40
  {
41
    struct tracepoint *next;
42
 
43
    enum enable enabled;
44
 
45
#if 0
46
    /* Type of tracepoint (MVS FIXME: needed?). */
47
    enum tptype type;
48
 
49
    /* What to do with this tracepoint after we hit it MVS FIXME: needed?). */
50
    enum tpdisp disposition;
51
#endif
52
    /* Number assigned to distinguish tracepoints.  */
53
    int number;
54
 
55
    /* Address to trace at, or NULL if not an instruction tracepoint (MVS ?). */
56
    CORE_ADDR address;
57
 
58
    /* Line number of this address.  Only matters if address is non-NULL.  */
59
    int line_number;
60
 
61
    /* Source file name of this address.  Only matters if address is non-NULL. */
62
    char *source_file;
63
 
64
    /* Number of times this tracepoint should single-step
65
       and collect additional data */
66
    long step_count;
67
 
68
    /* Number of times this tracepoint should be hit before disabling/ending. */
69
    int pass_count;
70
 
71
    /* Chain of action lines to execute when this tracepoint is hit. */
72
    struct action_line *actions;
73
 
74
    /* Conditional (MVS ?).  */
75
    struct expression *cond;
76
 
77
    /* String we used to set the tracepoint (malloc'd).  Only matters if
78
       address is non-NULL.  */
79
    char *addr_string;
80
 
81
    /* Language we used to set the tracepoint.  */
82
    enum language language;
83
 
84
    /* Input radix we used to set the tracepoint.  */
85
    int input_radix;
86
 
87
    /* Count of the number of times this tracepoint was taken, dumped
88
       with the info, but not used for anything else.  Useful for
89
       seeing how many times you hit a tracepoint prior to the program
90
       aborting, so you can back up to just before the abort.  */
91
    int hit_count;
92
 
93
    /* Thread number for thread-specific tracepoint, or -1 if don't care */
94
    int thread;
95
 
96
    /* BFD section, in case of overlays:
97
       no, I don't know if tracepoints are really gonna work with overlays.  */
98
    asection *section;
99
  };
100
 
101
enum actionline_type
102
  {
103
    BADLINE = -1,
104
    GENERIC = 0,
105
    END = 1,
106
    STEPPING = 2
107
  };
108
 
109
 
110
/* The tracepoint chain of all tracepoints */
111
 
112
extern struct tracepoint *tracepoint_chain;
113
 
114
extern unsigned long trace_running_p;
115
 
116
/* A hook used to notify the UI of tracepoint operations */
117
 
118
void (*create_tracepoint_hook) (struct tracepoint *);
119
void (*delete_tracepoint_hook) (struct tracepoint *);
120
void (*modify_tracepoint_hook) (struct tracepoint *);
121
void (*trace_find_hook) (char *arg, int from_tty);
122
void (*trace_start_stop_hook) (int start, int from_tty);
123
 
124
struct tracepoint *get_tracepoint_by_number (char **, int, int);
125
int get_traceframe_number (void);
126
void free_actions (struct tracepoint *);
127
enum actionline_type validate_actionline (char **, struct tracepoint *);
128
 
129
 
130
/* Walk the following statement or block through all tracepoints.
131
   ALL_TRACEPOINTS_SAFE does so even if the statment deletes the current
132
   breakpoint.  */
133
 
134
#define ALL_TRACEPOINTS(t)  for (t = tracepoint_chain; t; t = t->next)
135
 
136
#define ALL_TRACEPOINTS_SAFE(t,tmp)     \
137
        for (t = tracepoint_chain;      \
138
             t ? (tmp = t->next, 1) : 0;\
139
             t = tmp)
140
#endif /* TRACEPOINT_H */

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.