]> git.ipfire.org Git - thirdparty/systemd.git/blame - src/systemd/sd-journal.h
main: fix syntax of net_prio cgroup controller
[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
cf244689
LP
73enum {
74 SD_JOURNAL_LOCAL_ONLY = 1,
75 SD_JOURNAL_RUNTIME_ONLY = 2,
76 SD_JOURNAL_SYSTEM_ONLY = 4
77};
78
79int sd_journal_open(sd_journal **ret, int flags);
a963990f 80int sd_journal_open_directory(sd_journal **ret, const char *path, int flags);
87d2c1ff
LP
81void sd_journal_close(sd_journal *j);
82
83int sd_journal_previous(sd_journal *j);
84int sd_journal_next(sd_journal *j);
85
de190aef
LP
86int sd_journal_previous_skip(sd_journal *j, uint64_t skip);
87int sd_journal_next_skip(sd_journal *j, uint64_t skip);
88
cec736d2 89int sd_journal_get_realtime_usec(sd_journal *j, uint64_t *ret);
de190aef 90int sd_journal_get_monotonic_usec(sd_journal *j, uint64_t *ret, sd_id128_t *ret_boot_id);
4171a667 91
8725d60a
LP
92int sd_journal_get_data(sd_journal *j, const char *field, const void **data, size_t *l);
93int sd_journal_enumerate_data(sd_journal *j, const void **data, size_t *l);
de190aef 94void sd_journal_restart_data(sd_journal *j);
87d2c1ff 95
1cc101f1 96int sd_journal_add_match(sd_journal *j, const void *data, size_t size);
cbdca852 97int sd_journal_add_disjunction(sd_journal *j);
cec736d2 98void sd_journal_flush_matches(sd_journal *j);
87d2c1ff
LP
99
100int sd_journal_seek_head(sd_journal *j);
101int sd_journal_seek_tail(sd_journal *j);
de190aef
LP
102int sd_journal_seek_monotonic_usec(sd_journal *j, sd_id128_t boot_id, uint64_t usec);
103int sd_journal_seek_realtime_usec(sd_journal *j, uint64_t usec);
104int sd_journal_seek_cursor(sd_journal *j, const char *cursor);
87d2c1ff 105
3fbf9cbb 106int sd_journal_get_cursor(sd_journal *j, char **cursor);
87d2c1ff 107
08984293
LP
108int sd_journal_get_cutoff_realtime_usec(sd_journal *j, uint64_t *from, uint64_t *to);
109int sd_journal_get_cutoff_monotonic_usec(sd_journal *j, const sd_id128_t boot_id, uint64_t *from, uint64_t *to);
110
19a2bd80
LP
111/* int sd_journal_query_unique(sd_journal *j, const char *field); /\* missing *\/ */
112/* int sd_journal_enumerate_unique(sd_journal *j, const void **data, size_t *l); /\* missing *\/ */
113/* void sd_journal_restart_unique(sd_journal *j); /\* missing *\/ */
87d2c1ff 114
1cc101f1
LP
115enum {
116 SD_JOURNAL_NOP,
117 SD_JOURNAL_APPEND,
a963990f 118 SD_JOURNAL_INVALIDATE
1cc101f1
LP
119};
120
50f20cfd
LP
121int sd_journal_get_fd(sd_journal *j);
122int sd_journal_process(sd_journal *j);
e02d1cf7 123int sd_journal_wait(sd_journal *j, uint64_t timeout_usec);
1cc101f1 124
de190aef
LP
125#define SD_JOURNAL_FOREACH(j) \
126 if (sd_journal_seek_head(j) >= 0) \
50f20cfd 127 while (sd_journal_next(j) > 0)
8725d60a 128
de190aef
LP
129#define SD_JOURNAL_FOREACH_BACKWARDS(j) \
130 if (sd_journal_seek_tail(j) >= 0) \
50f20cfd 131 while (sd_journal_previous(j) > 0)
3fbf9cbb 132
8725d60a 133#define SD_JOURNAL_FOREACH_DATA(j, data, l) \
de190aef 134 for (sd_journal_restart_data(j); sd_journal_enumerate_data((j), &(data), &(l)) > 0; )
3fbf9cbb 135
a81df0ad
LP
136/* #define SD_JOURNAL_FOREACH_UNIQUE(j, data, l) \ */
137/* for (sd_journal_restart_unique(j); sd_journal_enumerate_data((j), &(data), &(l)) > 0; ) */
3fbf9cbb 138
f9873976
LP
139#ifdef __cplusplus
140}
141#endif
142
87d2c1ff 143#endif