1 #ifndef _LTT_FACILITY_TEST_H_
2 #define _LTT_FACILITY_TEST_H_
5 /* Facility activation at compile time. */
6 #ifdef CONFIG_LTT_FACILITY_TEST
10 enum lttng_tasklet_priority
{
20 struct lttng_mystruct2
{
22 enum lttng_irq_mode mode
;
23 //struct lttng_mystruct teststr1;
26 size_t lttng_get_size_mystruct2(size_t *ret_align
,
27 struct lttng_mystruct2
*obj
)
29 size_t size
=0, align
=0, locsize
, localign
;
31 locsize
= sizeof(unsigned int);
32 align
= max(align
, locsize
);
33 size
+= ltt_align(size
, locsize
) + locsize
;
35 locsize
= sizeof(enum lttng_irq_mode
);
36 align
= max(align
, locsize
);
37 size
+= ltt_align(size
, locsize
) + locsize
;
44 void lttng_write_mystruct2(void **ws
,
46 struct lttng_mystruct2
*obj
)
48 size_t align
=0, locsize
, localign
;
50 locsize
= lttng_get_size_mystruct2(&align
,
54 *we
+= ltt_align(*we
, align
);
57 *we
+= ltt_align(*we
, align
); /* C alignment, ok to do a memcpy of it */
60 BUG_ON(locsize
!= sizeof(struct lttng_mystruct2
));
66 #define LTTNG_ARRAY_SIZE_mystruct_myarray 10
67 typedef uint64_t lttng_array_mystruct_myarray
[LTTNG_ARRAY_SIZE_mystruct_myarray
];
69 size_t lttng_get_size_array_mystruct_myarray(size_t *ret_align
,
70 lttng_array_mystruct_myarray obj
)
72 size_t size
=0, align
=0, locsize
, localign
;
74 locsize
= sizeof(uint64_t);
75 align
= max(align
, locsize
);
76 size
+= ltt_align(size
, locsize
) + (LTTNG_ARRAY_SIZE_mystruct_myarray
* locsize
);
83 void lttng_write_array_mystruct_myarray(void **ws
,
85 struct lttng_mystruct2
*obj
)
87 size_t align
=0, locsize
, localign
;
89 locsize
= lttng_get_size_array_mystruct_myarray(&align
,
93 *we
+= ltt_align(*we
, align
);
96 *we
+= ltt_align(*we
, align
); /* C alignment, ok to do a memcpy of it */
99 BUG_ON(locsize
!= LTTNG_ARRAY_SIZE_mystruct_myarray
* sizeof(uint64_t));
105 typedef struct lttng_sequence_mystruct_mysequence lttng_sequence_mystruct_mysequence
;
106 struct lttng_sequence_mystruct_mysequence
{
112 size_t lttng_get_size_sequence_mystruct_mysequence(size_t *ret_align
,
113 lttng_sequence_mystruct_mysequence
*obj
)
115 size_t size
=0, align
=0, locsize
, localign
;
117 locsize
= sizeof(unsigned int);
118 align
= max(align
, locsize
);
119 size
+= ltt_align(size
, locsize
) + locsize
;
121 locsize
= sizeof(double);
122 align
= max(align
, locsize
);
123 size
+= ltt_align(size
, locsize
) + (obj
->len
* locsize
);
130 void lttng_write_sequence_mystruct_mysequence(void **ws
,
132 lttng_sequence_mystruct_mysequence
*obj
)
134 size_t align
=0, locsize
, localign
;
136 /* Flush pending memcpy */
138 memcpy(*ws
, obj
, *we
-*ws
);
142 lttng_get_size_sequence_mystruct_mysequence(&align
,
145 *we
+= ltt_align(*we
, align
);
148 *we
+= ltt_align(*we
, sizeof(unsigned int));
150 *we
+= sizeof(unsigned int);
151 memcpy(*ws
, &obj
->len
, *we
-*ws
);
154 *we
+= ltt_align(*we
, sizeof(double));
156 *we
+= obj
->len
* sizeof(double);
157 memcpy(*ws
, obj
->array
, *we
-*ws
);
163 union lttng_mystruct_myunion
{
165 unsigned long myulong
;
168 size_t lttng_get_size_mystruct_myunion(size_t *ret_align
,
169 union lttng_mystruct_myunion
*obj
)
171 size_t size
=0, align
=0, locsize
, localign
;
173 locsize
= sizeof(double);
174 align
= max(align
, locsize
);
175 size
= max(size
, locsize
);
177 locsize
= sizeof(unsigned long);
178 align
= max(align
, locsize
);
179 size
= max(size
, locsize
);
187 void lttng_write_mystruct_myunion(void **ws
,
189 union lttng_mystruct_myunion
*obj
)
191 size_t align
=0, locsize
, localign
;
193 locsize
= lttng_get_size_mystruct_myunion(&align
,
197 *we
+= ltt_align(*we
, align
);
200 *we
+= ltt_align(*we
, align
); /* C alignment, ok to do a memcpy of it */
203 BUG_ON(locsize
!= sizeof(union lttng_mystruct_myunion
));
209 struct lttng_mystruct
{
211 enum lttng_irq_mode mode
;
212 struct lttng_mystruct2 teststr
;
213 lttng_array_mystruct_myarray myarray
;
214 lttng_sequence_mystruct_mysequence mysequence
;
215 union lttng_mystruct_myunion myunion
;
218 size_t lttng_get_size_mystruct(size_t *ret_align
,
219 struct lttng_mystruct
*obj
)
221 size_t size
=0, align
=0, locsize
, localign
;
223 locsize
= sizeof(unsigned int);
224 align
= max(align
, locsize
);
225 size
+= ltt_align(size
, locsize
) + locsize
;
227 locsize
= sizeof(enum lttng_irq_mode
);
228 align
= max(align
, locsize
);
229 size
+= ltt_align(size
, locsize
) + locsize
;
231 locsize
= lttng_get_size_mystruct2(&localign
,
233 align
= max(align
, localign
);
234 size
+= ltt_align(size
, localign
) + locsize
;
236 locsize
= lttng_get_size_array_mystruct_myarray(&localign
,
238 align
= max(align
, localign
);
239 size
+= ltt_align(size
, localign
) + locsize
;
241 locsize
= lttng_get_size_sequence_mystruct_mysequence(&localign
,
243 align
= max(align
, localign
);
244 size
+= ltt_align(size
, localign
) + locsize
;
246 locsize
= lttng_get_size_mystruct_myunion(&localign
,
248 align
= max(align
, localign
);
249 size
+= ltt_align(size
, localign
) + locsize
;
256 struct lttng_mystruct
{
258 enum lttng_irq_mode mode
;
259 struct lttng_mystruct2 teststr
;
260 lttng_array_mystruct_myarray myarray
;
261 lttng_sequence_mystruct_mysequence mysequence
;
262 union lttng_mystruct_myunion myunion
;
266 void lttng_write_mystruct(void **ws
,
268 struct lttng_mystruct
*obj
)
270 size_t align
=0, locsize
, localign
;
272 lttng_get_size_mystruct(&align
,
276 *we
+= ltt_align(*we
, align
);
279 *we
+= ltt_align(*we
, align
); /* C alignment, ok to do a memcpy of it */
282 locsize
= sizeof(unsigned int);
283 *we
+= ltt_align(*we
, locsize
) + locsize
;
285 locsize
= sizeof(enum lttng_irq_mode
);
286 *we
+= ltt_align(*we
, locsize
) + locsize
;
288 lttng_write_mystruct2(ws
, we
,
291 lttng_write_array_mystruct_myarray(ws
, we
,
294 /* Variable length field */
295 lttng_write_sequence_mystruct_mysequence(ws
, we
,
298 lttng_write_mystruct_myunion(ws
, we
,
301 /* Don't forget to flush last write..... */
306 /* Event syscall_entry structures */
308 /* Event syscall_entry logging function */
309 static inline void trace_test_syscall_entry(
310 unsigned int syscall_id
,
321 /* Event syscall_exit structures */
323 /* Event syscall_exit logging function */
324 static inline void trace_test_syscall_exit(
335 /* Event trap_entry structures */
337 /* Event trap_entry logging function */
338 static inline void trace_test_trap_entry(
339 unsigned int trap_id
,
350 /* Event trap_exit structures */
352 /* Event trap_exit logging function */
353 static inline void trace_test_trap_exit(
364 /* Event soft_irq_entry structures */
366 /* Event soft_irq_entry logging function */
367 static inline void trace_test_soft_irq_entry(
378 /* Event soft_irq_exit structures */
380 /* Event soft_irq_exit logging function */
381 static inline void trace_test_soft_irq_exit(
392 /* Event tasklet_entry structures */
394 /* Event tasklet_entry logging function */
395 static inline void trace_test_tasklet_entry(
396 enum lttng_tasklet_priority priority
,
408 /* Event tasklet_exit structures */
410 /* Event tasklet_exit logging function */
411 static inline void trace_test_tasklet_exit(
412 enum lttng_tasklet_priority priority
,
424 /* Event irq_entry structures */
426 /* Event irq_entry logging function */
427 static inline void trace_test_irq_entry(
429 enum lttng_irq_mode mode
)
439 /* Event irq_exit structures */
441 /* Event irq_exit logging function */
442 static inline void trace_test_irq_exit(
453 /* Event big_array structures */
454 union lttng_test_big_array_myarray_b
{
458 struct lttng_test_big_array_myarray
{
460 union lttng_test_big_array_myarray_b b
;
463 #define LTTNG_ARRAY_SIZE_test_big_array_myarray 2
464 typedef struct lttng_test_big_array_myarray lttng_array_test_big_array_myarray
[LTTNG_ARRAY_SIZE_test_big_array_myarray
];
466 #define LTTNG_ARRAY_SIZE_test_big_array_myarray 10000
467 typedef lttng_array_test_big_array_myarray lttng_array_test_big_array_myarray
[LTTNG_ARRAY_SIZE_test_big_array_myarray
];
470 /* Event big_array logging function */
471 static inline void trace_test_big_array(
472 lttng_array_test_big_array_myarray myarray
)
482 #endif //CONFIG_LTT_FACILITY_TEST
484 #endif //_LTT_FACILITY_TEST_H_