]> git.ipfire.org Git - thirdparty/systemd.git/blame - src/journal/journal-internal.h
man: document the new "rescue" kernel command line option
[thirdparty/systemd.git] / src / journal / journal-internal.h
CommitLineData
f39e126e
LP
1/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
2
c2f1db8f 3#pragma once
f39e126e
LP
4
5/***
6 This file is part of systemd.
7
8 Copyright 2011 Lennart Poettering
9
10 systemd is free software; you can redistribute it and/or modify it
5430f7f2
LP
11 under the terms of the GNU Lesser General Public License as published by
12 the Free Software Foundation; either version 2.1 of the License, or
f39e126e
LP
13 (at your option) any later version.
14
15 systemd is distributed in the hope that it will be useful, but
16 WITHOUT ANY WARRANTY; without even the implied warranty of
17 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
5430f7f2 18 Lesser General Public License for more details.
f39e126e 19
5430f7f2 20 You should have received a copy of the GNU Lesser General Public License
f39e126e
LP
21 along with systemd; If not, see <http://www.gnu.org/licenses/>.
22***/
23
24#include <sys/types.h>
25#include <inttypes.h>
26#include <stdbool.h>
27
73f860db 28#include "systemd/sd-id128.h"
81527be1 29
cbdca852 30#include "journal-def.h"
f39e126e 31#include "list.h"
cbdca852 32#include "hashmap.h"
6fe391c5 33#include "set.h"
cbdca852
LP
34#include "journal-file.h"
35
f39e126e 36typedef struct Match Match;
a963990f
LP
37typedef struct Location Location;
38typedef struct Directory Directory;
39
cbdca852
LP
40typedef enum MatchType {
41 MATCH_DISCRETE,
42 MATCH_OR_TERM,
43 MATCH_AND_TERM
44} MatchType;
f39e126e
LP
45
46struct Match {
cbdca852
LP
47 MatchType type;
48 Match *parent;
49 LIST_FIELDS(Match, matches);
50
51 /* For concrete matches */
f39e126e
LP
52 char *data;
53 size_t size;
4fd052ae 54 le64_t le_hash;
f39e126e 55
cbdca852
LP
56 /* For terms */
57 LIST_HEAD(Match, matches);
f39e126e
LP
58};
59
cbdca852 60typedef enum LocationType {
a3eb665e 61 /* The first and last entries, resp. */
cbdca852
LP
62 LOCATION_HEAD,
63 LOCATION_TAIL,
a3eb665e
LP
64
65 /* We already read the entry we currently point to, and the
66 * next one to read should probably not be this one again. */
a87247dd 67 LOCATION_DISCRETE,
a3eb665e
LP
68
69 /* We should seek to the precise location specified, and
70 * return it, as we haven't read it yet. */
a87247dd 71 LOCATION_SEEK
cbdca852
LP
72} LocationType;
73
a963990f 74struct Location {
cbdca852 75 LocationType type;
f39e126e 76
68667801
ZJS
77 bool seqnum_set;
78 bool realtime_set;
79 bool monotonic_set;
80 bool xor_hash_set;
81
f39e126e
LP
82 uint64_t seqnum;
83 sd_id128_t seqnum_id;
f39e126e
LP
84
85 uint64_t realtime;
f39e126e
LP
86
87 uint64_t monotonic;
88 sd_id128_t boot_id;
f39e126e
LP
89
90 uint64_t xor_hash;
a963990f
LP
91};
92
93struct Directory {
94 char *path;
95 int wd;
96 bool is_root;
97};
f39e126e
LP
98
99struct sd_journal {
7827b1a1 100 char *path;
89739579 101 char *prefix;
7827b1a1 102
f39e126e 103 Hashmap *files;
16e9f408 104 MMapCache *mmap;
f39e126e
LP
105
106 Location current_location;
cbdca852 107
f39e126e
LP
108 JournalFile *current_file;
109 uint64_t current_field;
110
cd34b3c6 111 Match *level0, *level1, *level2;
a963990f 112
a65f06bb
ZJS
113 pid_t original_pid;
114
115 int inotify_fd;
a963990f 116 unsigned current_invalidate_counter, last_invalidate_counter;
a65f06bb 117 usec_t last_process_usec;
3c1668da
LP
118
119 char *unique_field;
120 JournalFile *unique_file;
121 uint64_t unique_offset;
85210bff 122
a65f06bb
ZJS
123 int flags;
124
85210bff 125 bool on_network;
5302ebe1 126 bool no_new_files;
93b73b06
LP
127
128 size_t data_threshold;
6fe391c5 129
a65f06bb
ZJS
130 Hashmap *directories_by_path;
131 Hashmap *directories_by_wd;
39c155ea 132
a65f06bb 133 Set *errors;
f39e126e
LP
134};
135
cbdca852 136char *journal_make_match_string(sd_journal *j);
dca6219e 137void journal_print_header(sd_journal *j);
dfb33a97 138
14bf2c9d 139DEFINE_TRIVIAL_CLEANUP_FUNC(sd_journal*, sd_journal_close);
1ca208fb 140#define _cleanup_journal_close_ _cleanup_(sd_journal_closep)
a72b6353
ZJS
141
142#define JOURNAL_FOREACH_DATA_RETVAL(j, data, l, retval) \
143 for (sd_journal_restart_data(j); ((retval) = sd_journal_enumerate_data((j), &(data), &(l))) > 0; )