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,
53 _packed_ struct ObjectHeader {
60 _packed_ struct DataObject {
63 uint64_t next_hash_offset;
64 uint64_t next_field_offset;
65 uint64_t entry_offset; /* the first array entry we store inline */
66 uint64_t entry_array_offset;
71 _packed_ struct FieldObject {
74 uint64_t next_hash_offset;
75 uint64_t head_data_offset;
76 uint64_t tail_data_offset;
80 _packed_ struct EntryItem {
81 uint64_t object_offset;
85 _packed_ struct EntryObject {
95 _packed_ struct HashItem {
96 uint64_t head_hash_offset;
97 uint64_t tail_hash_offset;
100 _packed_ struct HashTableObject {
105 _packed_ struct EntryArrayObject {
107 uint64_t next_entry_array_offset;
116 HashTableObject hash_table;
117 EntryArrayObject entry_array;
126 _packed_ struct Header {
127 uint8_t signature[8]; /* "LPKSHHRH" */
128 uint32_t compatible_flags;
129 uint32_t incompatible_flags;
133 sd_id128_t machine_id;
135 sd_id128_t seqnum_id;
136 uint64_t arena_offset;
138 uint64_t arena_max_size; /* obsolete */
139 uint64_t arena_min_size; /* obsolete */
140 uint64_t arena_keep_free; /* obsolete */
141 uint64_t data_hash_table_offset; /* for looking up data objects */
142 uint64_t data_hash_table_size;
143 uint64_t field_hash_table_offset; /* for looking up field objects */
144 uint64_t field_hash_table_size;
145 uint64_t tail_object_offset;
149 uint64_t first_seqnum;
150 uint64_t entry_array_offset;
151 uint64_t head_entry_realtime;
152 uint64_t tail_entry_realtime;
153 uint64_t tail_entry_monotonic;