]> git.ipfire.org Git - thirdparty/systemd.git/blame - src/systemd/sd-journal.h
login: add sd_login_monitor_get_timeout() public api call
[thirdparty/systemd.git] / src / systemd / sd-journal.h
CommitLineData
87d2c1ff
LP
1/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
2
3#ifndef foojournalhfoo
4#define foojournalhfoo
5
6/***
7 This file is part of systemd.
8
9 Copyright 2011 Lennart Poettering
10
11 systemd is free software; you can redistribute it and/or modify it
5430f7f2
LP
12 under the terms of the GNU Lesser General Public License as published by
13 the Free Software Foundation; either version 2.1 of the License, or
87d2c1ff
LP
14 (at your option) any later version.
15
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
5430f7f2 19 Lesser General Public License for more details.
87d2c1ff 20
5430f7f2 21 You should have received a copy of the GNU Lesser General Public License
87d2c1ff
LP
22 along with systemd; If not, see <http://www.gnu.org/licenses/>.
23***/
24
25#include <inttypes.h>
26#include <sys/types.h>
7f3e6257
LP
27#include <stdarg.h>
28#include <sys/uio.h>
b070e7f3 29#include <syslog.h>
87d2c1ff 30
8665a387 31#include <systemd/sd-id128.h>
de190aef 32
f9873976
LP
33#ifdef __cplusplus
34extern "C" {
35#endif
36
cb07866b
LP
37/* Journal APIs. See sd-journal(3) for more information. */
38
7f3e6257 39/* Write to daemon */
e9116723 40int sd_journal_print(int priority, const char *format, ...) __attribute__ ((format (printf, 2, 3)));
d0bbc21c 41int sd_journal_printv(int priority, const char *format, va_list ap);
7f3e6257
LP
42int sd_journal_send(const char *format, ...) __attribute__((sentinel));
43int sd_journal_sendv(const struct iovec *iov, int n);
18c7ed18 44int sd_journal_perror(const char *message);
7f3e6257 45
a8eedf49 46/* Used by the macros below. Don't call this directly. */
b070e7f3
LP
47int sd_journal_print_with_location(int priority, const char *file, const char *line, const char *func, const char *format, ...) __attribute__ ((format (printf, 5, 6)));
48int sd_journal_printv_with_location(int priority, const char *file, const char *line, const char *func, const char *format, va_list ap);
49int sd_journal_send_with_location(const char *file, const char *line, const char *func, const char *format, ...) __attribute__((sentinel));
50int sd_journal_sendv_with_location(const char *file, const char *line, const char *func, const struct iovec *iov, int n);
18c7ed18 51int sd_journal_perror_with_location(const char *file, const char *line, const char *func, const char *message);
b070e7f3
LP
52
53/* implicitly add code location to messages sent, if this is enabled */
54#ifndef SD_JOURNAL_SUPPRESS_LOCATION
55
56#define _sd_XSTRINGIFY(x) #x
57#define _sd_STRINGIFY(x) _sd_XSTRINGIFY(x)
58
59#define sd_journal_print(priority, ...) sd_journal_print_with_location(priority, "CODE_FILE=" __FILE__, "CODE_LINE=" _sd_STRINGIFY(__LINE__), __func__, __VA_ARGS__)
60#define sd_journal_printv(priority, format, ap) sd_journal_printv_with_location(priority, "CODE_FILE=" __FILE__, "CODE_LINE=" _sd_STRINGIFY(__LINE__), __func__, format, ap)
61#define sd_journal_send(...) sd_journal_send_with_location("CODE_FILE=" __FILE__, "CODE_LINE=" _sd_STRINGIFY(__LINE__), __func__, __VA_ARGS__)
62#define sd_journal_sendv(iovec, n) sd_journal_sendv_with_location("CODE_FILE=" __FILE__, "CODE_LINE=" _sd_STRINGIFY(__LINE__), __func__, iovec, n)
18c7ed18 63#define sd_journal_perror(message) sd_journal_perror_with_location("CODE_FILE=" __FILE__, "CODE_LINE=" _sd_STRINGIFY(__LINE__), __func__, message)
b070e7f3
LP
64
65#endif
66
4cd9a9d9 67int sd_journal_stream_fd(const char *identifier, int priority, int level_prefix);
fe652127 68
7f3e6257
LP
69/* Browse journal stream */
70
87d2c1ff
LP
71typedef struct sd_journal sd_journal;
72
3c1668da 73/* Open flags */
cf244689
LP
74enum {
75 SD_JOURNAL_LOCAL_ONLY = 1,
76 SD_JOURNAL_RUNTIME_ONLY = 2,
77 SD_JOURNAL_SYSTEM_ONLY = 4
78};
79
3c1668da
LP
80/* Wakeup event types */
81enum {
82 SD_JOURNAL_NOP,
83 SD_JOURNAL_APPEND,
84 SD_JOURNAL_INVALIDATE
85};
86
cf244689 87int sd_journal_open(sd_journal **ret, int flags);
a963990f 88int sd_journal_open_directory(sd_journal **ret, const char *path, int flags);
87d2c1ff
LP
89void sd_journal_close(sd_journal *j);
90
91int sd_journal_previous(sd_journal *j);
92int sd_journal_next(sd_journal *j);
93
de190aef
LP
94int sd_journal_previous_skip(sd_journal *j, uint64_t skip);
95int sd_journal_next_skip(sd_journal *j, uint64_t skip);
96
cec736d2 97int sd_journal_get_realtime_usec(sd_journal *j, uint64_t *ret);
de190aef 98int sd_journal_get_monotonic_usec(sd_journal *j, uint64_t *ret, sd_id128_t *ret_boot_id);
4171a667 99
93b73b06
LP
100int sd_journal_set_data_threshold(sd_journal *j, size_t sz);
101int sd_journal_get_data_threshold(sd_journal *j, size_t *sz);
102
8725d60a
LP
103int sd_journal_get_data(sd_journal *j, const char *field, const void **data, size_t *l);
104int sd_journal_enumerate_data(sd_journal *j, const void **data, size_t *l);
de190aef 105void sd_journal_restart_data(sd_journal *j);
87d2c1ff 106
1cc101f1 107int sd_journal_add_match(sd_journal *j, const void *data, size_t size);
cbdca852 108int sd_journal_add_disjunction(sd_journal *j);
cec736d2 109void sd_journal_flush_matches(sd_journal *j);
87d2c1ff
LP
110
111int sd_journal_seek_head(sd_journal *j);
112int sd_journal_seek_tail(sd_journal *j);
de190aef
LP
113int sd_journal_seek_monotonic_usec(sd_journal *j, sd_id128_t boot_id, uint64_t usec);
114int sd_journal_seek_realtime_usec(sd_journal *j, uint64_t usec);
115int sd_journal_seek_cursor(sd_journal *j, const char *cursor);
87d2c1ff 116
3fbf9cbb 117int sd_journal_get_cursor(sd_journal *j, char **cursor);
c6511e85 118int sd_journal_test_cursor(sd_journal *j, const char *cursor);
87d2c1ff 119
08984293
LP
120int sd_journal_get_cutoff_realtime_usec(sd_journal *j, uint64_t *from, uint64_t *to);
121int sd_journal_get_cutoff_monotonic_usec(sd_journal *j, const sd_id128_t boot_id, uint64_t *from, uint64_t *to);
122
a1a03e30
LP
123int sd_journal_get_usage(sd_journal *j, uint64_t *bytes);
124
3c1668da
LP
125int sd_journal_query_unique(sd_journal *j, const char *field);
126int sd_journal_enumerate_unique(sd_journal *j, const void **data, size_t *l);
127void sd_journal_restart_unique(sd_journal *j);
1cc101f1 128
50f20cfd 129int sd_journal_get_fd(sd_journal *j);
ee531d94 130int sd_journal_get_events(sd_journal *j);
85210bff 131int sd_journal_reliable_fd(sd_journal *j);
50f20cfd 132int sd_journal_process(sd_journal *j);
e02d1cf7 133int sd_journal_wait(sd_journal *j, uint64_t timeout_usec);
1cc101f1 134
d4205751 135int sd_journal_get_catalog(sd_journal *j, char **text);
8f1e860f 136int sd_journal_get_catalog_for_message_id(sd_id128_t id, char **ret);
d4205751 137
de190aef
LP
138#define SD_JOURNAL_FOREACH(j) \
139 if (sd_journal_seek_head(j) >= 0) \
50f20cfd 140 while (sd_journal_next(j) > 0)
8725d60a 141
de190aef
LP
142#define SD_JOURNAL_FOREACH_BACKWARDS(j) \
143 if (sd_journal_seek_tail(j) >= 0) \
50f20cfd 144 while (sd_journal_previous(j) > 0)
3fbf9cbb 145
8725d60a 146#define SD_JOURNAL_FOREACH_DATA(j, data, l) \
de190aef 147 for (sd_journal_restart_data(j); sd_journal_enumerate_data((j), &(data), &(l)) > 0; )
3fbf9cbb 148
3c1668da
LP
149#define SD_JOURNAL_FOREACH_UNIQUE(j, data, l) \
150 for (sd_journal_restart_unique(j); sd_journal_enumerate_unique((j), &(data), &(l)) > 0; )
3fbf9cbb 151
f9873976
LP
152#ifdef __cplusplus
153}
154#endif
155
87d2c1ff 156#endif