Split the synchronization code into modules
[lttv.git] / lttv / lttv / sync / event_processing_lttv_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 <stdlib.h>
24
25 #include "sync_chain.h"
26 #include "event_processing_lttv_common.h"
27
28 #include "event_processing_lttv_null.h"
29
30
31 #ifndef g_info
32 #define g_info(format...) g_log (G_LOG_DOMAIN, G_LOG_LEVEL_INFO, format)
33 #endif
34
35
36 // Functions common to all matching modules
37 static void initProcessingLTTVNull(SyncState* const syncState,
38 LttvTracesetContext* const traceSetContext);
39 static void destroyProcessingLTTVNull(SyncState* const syncState);
40
41 static void finalizeProcessingLTTVNull(SyncState* const syncState);
42
43 // Functions specific to this module
44 static void registerProcessingLTTVNull() __attribute__((constructor (102)));
45 static gboolean processEventLTTVNull(void* hookData, void* callData);
46
47
48 static ProcessingModule processingModuleLTTVNull = {
49 .name= "LTTV-null",
50 .initProcessing= &initProcessingLTTVNull,
51 .destroyProcessing= &destroyProcessingLTTVNull,
52 .finalizeProcessing= &finalizeProcessingLTTVNull,
53 .printProcessingStats= NULL,
54 };
55
56
57
58 /*
59 * Processing Module registering function
60 */
61 static void registerProcessingLTTVNull()
62 {
63 g_queue_push_tail(&processingModules, &processingModuleLTTVNull);
64
65 createQuarks();
66 }
67
68
69 /*
70 * Allocate and initialize data structures for synchronizing a traceset.
71 * Register event hooks.
72 *
73 * Args:
74 * syncState: container for synchronization data.
75 * This function allocates these processingData members:
76 * hookListList
77 * traceSetContext: set of LTTV traces
78 */
79 static void initProcessingLTTVNull(SyncState* const syncState,
80 LttvTracesetContext* const traceSetContext)
81 {
82 ProcessingDataLTTVNull* processingData;
83
84 processingData= malloc(sizeof(ProcessingDataLTTVNull));
85 syncState->processingData= processingData;
86 processingData->traceSetContext= traceSetContext;
87
88 processingData->hookListList= g_array_sized_new(FALSE, FALSE,
89 sizeof(GArray*), syncState->traceNb);
90
91 registerHooks(processingData->hookListList, traceSetContext,
92 syncState->traceNb, &processEventLTTVNull, syncState);
93 }
94
95
96 /*
97 * Nothing to do
98 *
99 * Args:
100 * syncState container for synchronization data.
101 */
102 static void finalizeProcessingLTTVNull(SyncState* const syncState)
103 {
104 return;
105 }
106
107
108 /*
109 * Unregister event hooks. Deallocate processingData.
110 *
111 * Args:
112 * syncState: container for synchronization data.
113 * This function deallocates these members:
114 * hookListList
115 */
116 static void destroyProcessingLTTVNull(SyncState* const syncState)
117 {
118 ProcessingDataLTTVNull* processingData;
119
120 processingData= (ProcessingDataLTTVNull*) syncState->processingData;
121
122 if (processingData == NULL)
123 {
124 return;
125 }
126
127 unregisterHooks(processingData->hookListList,
128 processingData->traceSetContext, syncState->traceNb);
129
130 free(syncState->processingData);
131 syncState->processingData= NULL;
132 }
133
134
135 /*
136 * Lttv hook function that will be called for network events
137 *
138 * Args:
139 * hookData: LttvTraceHook* for the type of event that generated the call
140 * callData: LttvTracefileContext* at the moment of the event
141 *
142 * Returns:
143 * FALSE Always returns FALSE, meaning to keep processing hooks for
144 * this event
145 */
146 static gboolean processEventLTTVNull(void* hookData, void* callData)
147 {
148 return FALSE;
149 }
This page took 0.064079 seconds and 4 git commands to generate.