typedef struct _LttvSimpleExpression LttvSimpleExpression;
typedef struct _LttvFilterTree LttvFilterTree;
-typedef struct _LttvFilter LttvFilter;
+#ifndef LTTVFILTER_TYPE_DEFINED
+typedef struct _LttvFilter LttvFilter;
+#define LTTVFILTER_TYPE_DEFINED
+#endif
/**
* @enum _LttvStructType
LTTV_FILTER_STATE_CT, /**< state.creation_time (double) */
LTTV_FILTER_STATE_IT, /**< state.insertion_time (double) */
LTTV_FILTER_STATE_P_NAME, /**< state.process_name (char*) */
+ LTTV_FILTER_STATE_T_BRAND, /**< state.thread_brand (char*) */
LTTV_FILTER_STATE_EX_MODE, /**< state.execution_mode (LttvExecutionMode) */
LTTV_FILTER_STATE_EX_SUBMODE, /**< state.execution_submode (LttvExecutionSubmode) */
LTTV_FILTER_STATE_P_STATUS, /**< state.process_status (LttvProcessStatus) */
LTTV_FILTER_EVENT_CATEGORY, /**< FIXME: not implemented */
LTTV_FILTER_EVENT_TIME, /**< event.time (double) */
LTTV_FILTER_EVENT_TSC, /**< event.tsc (double) */
- LTTV_FILTER_EVENT_FIELD, /**< dynamic field, specified in core.xml */
+ LTTV_FILTER_EVENT_TARGET_PID, /**< event.target_pid (guint) */
+ LTTV_FILTER_EVENT_FIELD, /**< dynamic field, specified in facility */
LTTV_FILTER_UNDEFINED /**< undefined field */
};
/**
- * @enum _LttvExpressionOp
+ * @enum _LttvExpressionOp
* @brief Contains possible operators
*
* This enumeration defines the
*/
enum _LttvExpressionOp
{
- LTTV_FIELD_EQ, /**< equal */
- LTTV_FIELD_NE, /**< not equal */
- LTTV_FIELD_LT, /**< lower than */
- LTTV_FIELD_LE, /**< lower or equal */
- LTTV_FIELD_GT, /**< greater than */
- LTTV_FIELD_GE /**< greater or equal */
+ LTTV_FIELD_EQ, /**< equal */
+ LTTV_FIELD_NE, /**< not equal */
+ LTTV_FIELD_LT, /**< lower than */
+ LTTV_FIELD_LE, /**< lower or equal */
+ LTTV_FIELD_GT, /**< greater than */
+ LTTV_FIELD_GE /**< greater or equal */
};
/**
* 'operators' functions
*/
union _LttvFieldValue {
+ GQuark v_quark; /**< GQuark */
guint64 v_uint64; /**< unsigned int of 64 bytes */
guint32 v_uint32; /**< unsigned int of 32 bytes */
guint16 v_uint16; /**< unsigned int of 16 bytes */
+ guint16 v_uint; /**< unsigned int */
double v_double; /**< double */
char* v_string; /**< string */
LttTime v_ltttime; /**< LttTime */
* Logical operators functions
*/
+gboolean lttv_apply_op_eq_uint(const gpointer v1, LttvFieldValue v2);
gboolean lttv_apply_op_eq_uint64(const gpointer v1, LttvFieldValue v2);
gboolean lttv_apply_op_eq_uint32(const gpointer v1, LttvFieldValue v2);
gboolean lttv_apply_op_eq_uint16(const gpointer v1, LttvFieldValue v2);
gboolean lttv_apply_op_eq_quark(const gpointer v1, LttvFieldValue v2);
gboolean lttv_apply_op_eq_ltttime(const gpointer v1, LttvFieldValue v2);
+gboolean lttv_apply_op_ne_uint(const gpointer v1, LttvFieldValue v2);
gboolean lttv_apply_op_ne_uint64(const gpointer v1, LttvFieldValue v2);
gboolean lttv_apply_op_ne_uint32(const gpointer v1, LttvFieldValue v2);
gboolean lttv_apply_op_ne_uint16(const gpointer v1, LttvFieldValue v2);
gboolean lttv_apply_op_ne_quark(const gpointer v1, LttvFieldValue v2);
gboolean lttv_apply_op_ne_ltttime(const gpointer v1, LttvFieldValue v2);
+gboolean lttv_apply_op_lt_uint(const gpointer v1, LttvFieldValue v2);
gboolean lttv_apply_op_lt_uint64(const gpointer v1, LttvFieldValue v2);
gboolean lttv_apply_op_lt_uint32(const gpointer v1, LttvFieldValue v2);
gboolean lttv_apply_op_lt_uint16(const gpointer v1, LttvFieldValue v2);
gboolean lttv_apply_op_lt_double(const gpointer v1, LttvFieldValue v2);
gboolean lttv_apply_op_lt_ltttime(const gpointer v1, LttvFieldValue v2);
+gboolean lttv_apply_op_le_uint(const gpointer v1, LttvFieldValue v2);
gboolean lttv_apply_op_le_uint64(const gpointer v1, LttvFieldValue v2);
gboolean lttv_apply_op_le_uint32(const gpointer v1, LttvFieldValue v2);
gboolean lttv_apply_op_le_uint16(const gpointer v1, LttvFieldValue v2);
gboolean lttv_apply_op_le_double(const gpointer v1, LttvFieldValue v2);
gboolean lttv_apply_op_le_ltttime(const gpointer v1, LttvFieldValue v2);
+gboolean lttv_apply_op_gt_uint(const gpointer v1, LttvFieldValue v2);
gboolean lttv_apply_op_gt_uint64(const gpointer v1, LttvFieldValue v2);
gboolean lttv_apply_op_gt_uint32(const gpointer v1, LttvFieldValue v2);
gboolean lttv_apply_op_gt_uint16(const gpointer v1, LttvFieldValue v2);
gboolean lttv_apply_op_gt_double(const gpointer v1, LttvFieldValue v2);
gboolean lttv_apply_op_gt_ltttime(const gpointer v1, LttvFieldValue v2);
+gboolean lttv_apply_op_ge_uint(const gpointer v1, LttvFieldValue v2);
gboolean lttv_apply_op_ge_uint64(const gpointer v1, LttvFieldValue v2);
gboolean lttv_apply_op_ge_uint32(const gpointer v1, LttvFieldValue v2);
gboolean lttv_apply_op_ge_uint16(const gpointer v1, LttvFieldValue v2);
const LttEvent* event,
const LttTracefile* tracefile,
const LttTrace* trace,
- const LttvProcessState* state,
- const LttvTracefileContext* context);
+ const LttvTracefileContext* context,
+ const LttvProcessState* pstate,
+ const LttvTraceContext* tc);
gboolean lttv_filter_tree_parse_branch(
const LttvSimpleExpression* se,
/*
* Debug functions
*/
-void lttv_print_tree(const LttvFilterTree* t);
+void lttv_print_tree(const LttvFilterTree* t, const int count);
#endif // FILTER_H