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/>.
30 typedef struct Header Header;
31 typedef struct ObjectHeader ObjectHeader;
32 typedef union Object Object;
33 typedef struct DataObject DataObject;
34 typedef struct FieldObject FieldObject;
35 typedef struct EntryObject EntryObject;
36 typedef struct HashTableObject HashTableObject;
37 typedef struct EntryArrayObject EntryArrayObject;
38 typedef struct EntryItem EntryItem;
39 typedef struct HashItem HashItem;
47 OBJECT_DATA_HASH_TABLE,
48 OBJECT_FIELD_HASH_TABLE,
58 _packed_ struct ObjectHeader {
66 _packed_ struct DataObject {
69 uint64_t next_hash_offset;
70 uint64_t next_field_offset;
71 uint64_t entry_offset; /* the first array entry we store inline */
72 uint64_t entry_array_offset;
77 _packed_ struct FieldObject {
80 uint64_t next_hash_offset;
81 uint64_t head_data_offset;
82 uint64_t tail_data_offset;
86 _packed_ struct EntryItem {
87 uint64_t object_offset;
91 _packed_ struct EntryObject {
101 _packed_ struct HashItem {
102 uint64_t head_hash_offset;
103 uint64_t tail_hash_offset;
106 _packed_ struct HashTableObject {
111 _packed_ struct EntryArrayObject {
113 uint64_t next_entry_array_offset;
122 HashTableObject hash_table;
123 EntryArrayObject entry_array;
134 HEADER_INCOMPATIBLE_COMPRESSED = 1
137 _packed_ struct Header {
138 uint8_t signature[8]; /* "LPKSHHRH" */
139 uint32_t compatible_flags;
140 uint32_t incompatible_flags;
144 sd_id128_t machine_id;
146 sd_id128_t seqnum_id;
147 uint64_t arena_offset;
149 uint64_t data_hash_table_offset; /* for looking up data objects */
150 uint64_t data_hash_table_size;
151 uint64_t field_hash_table_offset; /* for looking up field objects */
152 uint64_t field_hash_table_size;
153 uint64_t tail_object_offset;
157 uint64_t first_seqnum;
158 uint64_t entry_array_offset;
159 uint64_t head_entry_realtime;
160 uint64_t tail_entry_realtime;
161 uint64_t tail_entry_monotonic;