}
void
-advance_state_machine (struct tuple *tuple, int num_rules, int symbol_index)
+tc_report_match (struct tracecut *tc, struct tuple *tuple, int symbol_index)
+{
+ fprintf (stderr, "(Tracecut) Match triggered by symbol: %s.", tc->symbol_names[symbol_index]);
+
+ if (tc->num_params > 0)
+ {
+ int i;
+
+ fprintf (stderr, " Param values follow:\n");
+ for (i = 0; i < tc->num_params; i++)
+ fprintf (stderr, " Param %d: 0x%p\n", i,
+ (void *)tuple->param_vals[i].value);
+ }
+ else
+ {
+ /* No params to print. */
+ fprintf (stderr, "\n");
+ }
+}
+
+static void
+advance_state_machine (struct tracecut *tc, struct tuple *tuple, int symbol_index)
{
int i;
- for (i = 0; i < num_rules; i++)
+ for (i = 0; i < tc->num_rules; i++)
{
step (tuple->states[i], symbol_index);
if (ismatch (tuple->states[i]))
- fprintf (stderr, "Match!\n");
+ tc_report_match (tc, tuple, symbol_index);
}
}
-int
+static int
event_matches_tuple (struct event *event, struct tuple *tuple)
{
int i;
return 1;
}
-int
+static int
update_matching_tuples (struct event *event)
{
struct tracecut *tc = event->tracecut;
struct tuple *tuple;
int tuples_updated = 0;
- int num_rules = event->tracecut->num_rules;
for (tuple = tc->tuple_list; tuple != NULL; tuple = tuple->next)
{
if (event_matches_tuple (event, tuple))
{
- advance_state_machine (tuple, num_rules, event->symbol_index);
+ advance_state_machine (event->tracecut, tuple, event->symbol_index);
tuples_updated++;
fprintf (stderr, "Advancing existing tuple.\n");
}
return tuples_updated;
}
-struct tuple *add_tuple_for_event (struct event *event)
+static struct tuple *
+add_tuple_for_event (struct event *event)
{
int i;
struct tracecut *tc = event->tracecut;
/* An event is "complete" iff only if all its params are specified
(i.e., none are vacant). */
-int
+static int
is_event_complete (struct event *event)
{
int i;
return 1;
}
-void
+static void
do_transition (struct event *event)
{
int tuples_updated;
- int num_rules = event->tracecut->num_rules;
tuples_updated = update_matching_tuples (event);
tuple = add_tuple_for_event (event);
if (tuple != NULL)
- advance_state_machine (tuple, num_rules, event->symbol_index);
+ advance_state_machine (event->tracecut, tuple, event->symbol_index);
fprintf (stderr, "Creating new tuple.\n");
}
}