1 /*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
3 #ifndef foojournaldefhfoo
4 #define foojournaldefhfoo
7 This file is part of systemd.
9 Copyright 2011 Lennart Poettering
11 systemd is free software; you can redistribute it and/or modify it
12 under the terms of the GNU General Public License as published by
13 the Free Software Foundation; either version 2 of the License, or
14 (at your option) any later version.
16 systemd is distributed in the hope that it will be useful, but
17 WITHOUT ANY WARRANTY; without even the implied warranty of
18 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
19 General Public License for more details.
21 You should have received a copy of the GNU General Public License
22 along with systemd; If not, see <http://www.gnu.org/licenses/>.
27 #include <systemd/sd-id128.h>
31 typedef struct Header Header;
32 typedef struct ObjectHeader ObjectHeader;
33 typedef union Object Object;
34 typedef struct DataObject DataObject;
35 typedef struct FieldObject FieldObject;
36 typedef struct EntryObject EntryObject;
37 typedef struct HashTableObject HashTableObject;
38 typedef struct EntryArrayObject EntryArrayObject;
39 typedef struct EntryItem EntryItem;
40 typedef struct HashItem HashItem;
48 OBJECT_DATA_HASH_TABLE,
49 OBJECT_FIELD_HASH_TABLE,
59 _packed_ struct ObjectHeader {
67 _packed_ struct DataObject {
70 uint64_t next_hash_offset;
71 uint64_t next_field_offset;
72 uint64_t entry_offset; /* the first array entry we store inline */
73 uint64_t entry_array_offset;
78 _packed_ struct FieldObject {
81 uint64_t next_hash_offset;
82 uint64_t head_data_offset;
83 uint64_t tail_data_offset;
87 _packed_ struct EntryItem {
88 uint64_t object_offset;
92 _packed_ struct EntryObject {
102 _packed_ struct HashItem {
103 uint64_t head_hash_offset;
104 uint64_t tail_hash_offset;
107 _packed_ struct HashTableObject {
112 _packed_ struct EntryArrayObject {
114 uint64_t next_entry_array_offset;
123 HashTableObject hash_table;
124 EntryArrayObject entry_array;
135 HEADER_INCOMPATIBLE_COMPRESSED = 1
138 _packed_ struct Header {
139 uint8_t signature[8]; /* "LPKSHHRH" */
140 uint32_t compatible_flags;
141 uint32_t incompatible_flags;
145 sd_id128_t machine_id;
147 sd_id128_t seqnum_id;
148 uint64_t arena_offset;
150 uint64_t data_hash_table_offset; /* for looking up data objects */
151 uint64_t data_hash_table_size;
152 uint64_t field_hash_table_offset; /* for looking up field objects */
153 uint64_t field_hash_table_size;
154 uint64_t tail_object_offset;
158 uint64_t first_seqnum;
159 uint64_t entry_array_offset;
160 uint64_t head_entry_realtime;
161 uint64_t tail_entry_realtime;
162 uint64_t tail_entry_monotonic;