/* This file is part of the Linux Trace Toolkit viewer
* Copyright (C) 2003-2004 Xiangxiu Yang
+ * 2006 Mathieu Desnoyers
*
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License Version 2 as
- * published by the Free Software Foundation;
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License Version 2.1 as published by the Free Software Foundation.
*
- * This program is distributed in the hope that it will be useful,
+ * This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
*
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston,
- * MA 02111-1307, USA.
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
*/
#ifndef LTT_PRIVATE_H
guint32 has_alignment;
} LTT_PACKED_STRUCT;
+/* Empty event */
typedef struct _TimeHeartbeat {
- LttTime time; //Time stamp of this block
- uint64_t cycle_count; //cycle count of the event
} LTT_PACKED_STRUCT TimeHeartbeat;
struct ltt_event_header_hb {
uint8_t flight_recorder;
uint8_t has_heartbeat;
uint8_t has_alignment; /* Event header alignment */
- uint8_t has_tsc;
+ uint32_t freq_scale;
} LTT_PACKED_STRUCT;
uint8_t flight_recorder;
uint8_t has_heartbeat;
uint8_t has_alignment; /* Event header alignment */
- uint8_t has_tsc;
+ uint32_t freq_scale;
} LTT_PACKED_STRUCT;
-/* For version 0.6 */
+/* For version 0.7 */
-struct ltt_trace_header_0_6 {
+struct ltt_trace_header_0_7 {
uint32_t magic_number;
uint32_t arch_type;
uint32_t arch_variant;
uint8_t flight_recorder;
uint8_t has_heartbeat;
uint8_t has_alignment; /* Event header alignment */
- uint8_t has_tsc;
+ uint32_t freq_scale;
uint64_t start_freq;
uint64_t start_tsc;
uint64_t start_monotonic;
- //struct timespec start_time; // not portable
uint64_t start_time_sec;
uint64_t start_time_usec;
} LTT_PACKED_STRUCT;
struct ltt_block_start_header {
struct {
- //struct timeval timestamp;
- uint64_t timestamp_sec;
- uint64_t timestamp_usec;
uint64_t cycle_count;
uint64_t freq;
} begin;
struct {
- //struct timeval timestamp;
- uint64_t timestamp_sec;
- uint64_t timestamp_usec;
uint64_t cycle_count;
uint64_t freq;
} end;
GHashTable *enum_map; //maps enum labels to numbers.
GArray *fields; // Array of LttFields, for array, sequence, union, struct.
GData *fields_by_name;
+ guint network; // Is the type in network byte order ?
};
struct _LttEventType{
/* End of LttEventPosition fields */
- union { /* choice by trace has_tsc */
- guint32 timestamp; /* truncated timestamp */
- LttTime delta;
- } time;
+ guint32 timestamp; /* truncated timestamp */
unsigned char facility_id; /* facility ID are never reused. */
unsigned char event_id;
GQuark long_name; //tracefile complete filename
GQuark name; //tracefile name
guint cpu_num; //cpu number of the tracefile
+ guint tid; //Usertrace tid, else 0
+ guint pgid; //Usertrace pgid, else 0
+ guint64 creation; //Usertrace creation, else 0
LttTrace * trace; //trace containing the tracefile
int fd; //file descriptor
off_t file_size; //file size
guint8 ltt_minor_version;
guint8 flight_recorder;
guint8 has_heartbeat;
- guint8 has_tsc;
+ guint32 freq_scale;
uint64_t start_freq;
uint64_t start_tsc;
uint64_t start_monotonic;
{
size_t alignment = min(has_alignment, size_of_type);
- if(!has_alignement) return 0;
+ if(!has_alignment) return 0;
return ((alignment - align_drift) & (alignment-1));
}