summaryrefslogtreecommitdiff
path: root/src/journal/sd-journal.h
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2011-11-08 18:20:03 +0100
committerLennart Poettering <lennart@poettering.net>2011-11-08 18:20:03 +0100
commitde190aef08bb267b645205a747762df573b36834 (patch)
tree517b703941012766056f46442d36d93406b55ce9 /src/journal/sd-journal.h
parent9b3c575ed90bb1165a192dfae2fb2330baab583c (diff)
journal: implement multiple field matches
Diffstat (limited to 'src/journal/sd-journal.h')
-rw-r--r--src/journal/sd-journal.h61
1 files changed, 29 insertions, 32 deletions
diff --git a/src/journal/sd-journal.h b/src/journal/sd-journal.h
index 9978ca9ac0..8d7e314223 100644
--- a/src/journal/sd-journal.h
+++ b/src/journal/sd-journal.h
@@ -25,18 +25,22 @@
#include <inttypes.h>
#include <sys/types.h>
+#include "sd-id128.h"
+
/* TODO:
*
* - check LE/BE conversion for 8bit, 16bit, 32bit values
- * - implement parallel traversal
* - implement inotify usage on client
* - implement audit gateway
* - implement native gateway
* - implement stdout gateway
- * - extend hash table/bisect table as we go
+ * - extend hash tables table as we go
* - accelerate looking for "all hostnames" and suchlike.
* - throttling
* - enforce limit on open journal files in journald and journalctl
+ * - cryptographic hash
+ * - fix space reservation logic
+ * - comm, argv can be manipulated, should it be _COMM=, _CMDLINE= or COMM=, CMDLINE=?
*/
typedef struct sd_journal sd_journal;
@@ -47,59 +51,52 @@ void sd_journal_close(sd_journal *j);
int sd_journal_previous(sd_journal *j);
int sd_journal_next(sd_journal *j);
+int sd_journal_previous_skip(sd_journal *j, uint64_t skip);
+int sd_journal_next_skip(sd_journal *j, uint64_t skip);
+
int sd_journal_get_realtime_usec(sd_journal *j, uint64_t *ret);
-int sd_journal_get_monotonic_usec(sd_journal *j, uint64_t *ret);
+int sd_journal_get_monotonic_usec(sd_journal *j, uint64_t *ret, sd_id128_t *ret_boot_id);
int sd_journal_get_data(sd_journal *j, const char *field, const void **data, size_t *l);
int sd_journal_enumerate_data(sd_journal *j, const void **data, size_t *l);
-void sd_journal_start_data(sd_journal *j);
+void sd_journal_restart_data(sd_journal *j);
int sd_journal_add_match(sd_journal *j, const void *data, size_t size);
void sd_journal_flush_matches(sd_journal *j);
int sd_journal_seek_head(sd_journal *j);
int sd_journal_seek_tail(sd_journal *j);
-
-int sd_journal_seek_monotonic_usec(sd_journal *j, uint64_t usec); /* missing */
-int sd_journal_seek_realtime_usec(sd_journal *j, uint64_t usec); /* missing */
+int sd_journal_seek_monotonic_usec(sd_journal *j, sd_id128_t boot_id, uint64_t usec);
+int sd_journal_seek_realtime_usec(sd_journal *j, uint64_t usec);
+int sd_journal_seek_cursor(sd_journal *j, const char *cursor);
int sd_journal_get_cursor(sd_journal *j, char **cursor);
-int sd_journal_set_cursor(sd_journal *j, const char *cursor); /* missing */
-int sd_journal_unique_seek(sd_journal *j, const char *field); /* missing */
-int sd_journal_unique_enumerate(sd_journal *j, const void **data, size_t *l); /* missing */
-
-int sd_journal_get_fd(sd_journal *j); /* missing */
+int sd_journal_query_unique(sd_journal *j, const char *field); /* missing */
+int sd_journal_enumerate_unique(sd_journal *j, const void **data, size_t *l); /* missing */
+void sd_journal_restart_unique(sd_journal *j); /* missing */
enum {
SD_JOURNAL_NOP,
SD_JOURNAL_APPEND,
- SD_JOURNAL_DROP
+ SD_JOURNAL_INVALIDATE_ADD,
+ SD_JOURNAL_INVALIDATE_REMOVE
};
+int sd_journal_get_fd(sd_journal *j); /* missing */
int sd_journal_process(sd_journal *j); /* missing */
-#define SD_JOURNAL_FOREACH_BEGIN(j) \
- if (sd_journal_seek_head(j) > 0) do {
-
-#define SD_JOURNAL_FOREACH_END(j) \
- } while (sd_journal_next(j) > 0)
-
-#define SD_JOURNAL_FOREACH_CONTINUE(j) \
- do {
-
-#define SD_JOURNAL_FOREACH_BACKWARDS_BEGIN(j) \
- if (sd_journal_seek_tail(j) > 0) do {
-
-#define SD_JOURNAL_FOREACH_BACKWARDS_END(j) \
- } while (sd_journal_previous(j) > 0)
+#define SD_JOURNAL_FOREACH(j) \
+ if (sd_journal_seek_head(j) >= 0) \
+ while (sd_journal_next(j) > 0) \
-#define SD_JOURNAL_FOREACH_BACKWARDS_CONTINUE(j) \
- do {
+#define SD_JOURNAL_FOREACH_BACKWARDS(j) \
+ if (sd_journal_seek_tail(j) >= 0) \
+ while (sd_journal_previous(j) > 0) \
#define SD_JOURNAL_FOREACH_DATA(j, data, l) \
- for (sd_journal_start_data(j); sd_journal_enumerate_data((j), &(data), &(l)) > 0; )
+ for (sd_journal_restart_data(j); sd_journal_enumerate_data((j), &(data), &(l)) > 0; )
-#define SD_JOURNAL_FOREACH_UNIQUE(j, data, l) \
- while (sd_journal_enumerate_unique_data((j), &(data), &(l)) > 0)
+#define SD_JOURNAL_FOREACH_UNIQUE(j, data, l) \
+ for (sd_journal_restart_unique(j); sd_journal_enumerate_data((j), &(data), &(l)) > 0; )
#endif