28b97cca40420fcef04c4e4555d91b743dc24762
[lttv.git] / lttv / lttv / sync / event_processing_lttng_null.c
1 /* This file is part of the Linux Trace Toolkit viewer
2 * Copyright (C) 2009 Benjamin Poirier <benjamin.poirier@polymtl.ca>
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License Version 2 as
6 * published by the Free Software Foundation;
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program; if not, write to the Free Software
15 * Foundation, Inc., 59 Temple Place - Suite 330, Boston,
16 * MA 02111-1307, USA.
17 */
18
19 #ifdef HAVE_CONFIG_H
20 #include <config.h>
21 #endif
22
23 #include <stdarg.h>
24 #include <stdlib.h>
25
26 #include "sync_chain.h"
27 #include "event_processing_lttng_common.h"
28
29 #include "event_processing_lttng_null.h"
30
31
32 // Functions common to all processing modules
33 static void initProcessingLTTVNull(SyncState* const syncState, ...);
34 static void destroyProcessingLTTVNull(SyncState* const syncState);
35
36 static void finalizeProcessingLTTVNull(SyncState* const syncState);
37
38 // Functions specific to this module
39 static void registerProcessingLTTVNull() __attribute__((constructor (102)));
40 static gboolean processEventLTTVNull(void* hookData, void* callData);
41
42
43 static ProcessingModule processingModuleLTTVNull = {
44 .name= "LTTV-null",
45 .initProcessing= &initProcessingLTTVNull,
46 .destroyProcessing= &destroyProcessingLTTVNull,
47 .finalizeProcessing= &finalizeProcessingLTTVNull,
48 };
49
50
51
52 /*
53 * Processing Module registering function
54 */
55 static void registerProcessingLTTVNull()
56 {
57 g_queue_push_tail(&processingModules, &processingModuleLTTVNull);
58
59 createQuarks();
60 }
61
62
63 /*
64 * Allocate and initialize data structures for synchronizing a traceset.
65 * Register event hooks.
66 *
67 * Args:
68 * syncState: container for synchronization data.
69 * This function allocates these processingData members:
70 * hookListList
71 * traceSetContext: LttvTracesetContext*, set of LTTV traces
72 */
73 static void initProcessingLTTVNull(SyncState* const syncState, ...)
74 {
75 ProcessingDataLTTVNull* processingData;
76 LttvTracesetContext* traceSetContext;
77 va_list ap;
78
79 processingData= malloc(sizeof(ProcessingDataLTTVNull));
80 syncState->processingData= processingData;
81 processingData->traceSetContext= traceSetContext;
82
83 processingData->hookListList= g_array_sized_new(FALSE, FALSE,
84 sizeof(GArray*), syncState->traceNb);
85
86 va_start(ap, syncState);
87 traceSetContext= va_arg(ap, LttvTracesetContext*);
88 va_end(ap);
89 registerHooks(processingData->hookListList, traceSetContext,
90 &processEventLTTVNull, syncState,
91 syncState->matchingModule->canMatch);
92 }
93
94
95 /*
96 * Nothing to do
97 *
98 * Args:
99 * syncState container for synchronization data.
100 */
101 static void finalizeProcessingLTTVNull(SyncState* const syncState)
102 {
103 return;
104 }
105
106
107 /*
108 * Unregister event hooks. Deallocate processingData.
109 *
110 * Args:
111 * syncState: container for synchronization data.
112 * This function deallocates these members:
113 * hookListList
114 */
115 static void destroyProcessingLTTVNull(SyncState* const syncState)
116 {
117 ProcessingDataLTTVNull* processingData;
118
119 processingData= (ProcessingDataLTTVNull*) syncState->processingData;
120
121 if (processingData == NULL)
122 {
123 return;
124 }
125
126 unregisterHooks(processingData->hookListList,
127 processingData->traceSetContext);
128
129 free(syncState->processingData);
130 syncState->processingData= NULL;
131 }
132
133
134 /*
135 * Lttv hook function that will be called for network events
136 *
137 * Args:
138 * hookData: LttvTraceHook* for the type of event that generated the call
139 * callData: LttvTracefileContext* at the moment of the event
140 *
141 * Returns:
142 * FALSE Always returns FALSE, meaning to keep processing hooks for
143 * this event
144 */
145 static gboolean processEventLTTVNull(void* hookData, void* callData)
146 {
147 return FALSE;
148 }
This page took 0.030985 seconds and 3 git commands to generate.