chiark / gitweb /
coredump: don't expose the compression level as configuration option
[elogind.git] / src / journal / journald-server.h
index db577b89139e3685c5a1e948e449e47b731e1592..42a2235ba91573d5c43d131cb48ba942609b0858 100644 (file)
@@ -27,6 +27,7 @@
 #include <sys/types.h>
 #include <sys/socket.h>
 
+#include "sd-event.h"
 #include "journal-file.h"
 #include "hashmap.h"
 #include "util.h"
@@ -44,8 +45,8 @@ typedef enum Storage {
 } Storage;
 
 typedef enum SplitMode {
-        SPLIT_LOGIN,
         SPLIT_UID,
+        SPLIT_LOGIN,
         SPLIT_NONE,
         _SPLIT_MAX,
         _SPLIT_INVALID = -1
@@ -54,12 +55,24 @@ typedef enum SplitMode {
 typedef struct StdoutStream StdoutStream;
 
 typedef struct Server {
-        int epoll_fd;
-        int signal_fd;
         int syslog_fd;
         int native_fd;
         int stdout_fd;
         int dev_kmsg_fd;
+        int hostname_fd;
+
+        sd_event *event;
+
+        sd_event_source *syslog_event_source;
+        sd_event_source *native_event_source;
+        sd_event_source *stdout_event_source;
+        sd_event_source *dev_kmsg_event_source;
+        sd_event_source *sync_event_source;
+        sd_event_source *sigusr1_event_source;
+        sd_event_source *sigusr2_event_source;
+        sd_event_source *sigterm_event_source;
+        sd_event_source *sigint_event_source;
+        sd_event_source *hostname_event_source;
 
         JournalFile *runtime_journal;
         JournalFile *system_journal;
@@ -84,6 +97,7 @@ typedef struct Server {
         bool forward_to_kmsg;
         bool forward_to_syslog;
         bool forward_to_console;
+        bool forward_to_wall;
 
         unsigned n_forward_syslog_missed;
         usec_t last_warn_forward_syslog_missed;
@@ -106,6 +120,7 @@ typedef struct Server {
         int max_level_syslog;
         int max_level_kmsg;
         int max_level_console;
+        int max_level_wall;
 
         Storage storage;
         SplitMode split_mode;
@@ -118,8 +133,14 @@ typedef struct Server {
 
         struct udev *udev;
 
-        int sync_timer_fd;
         bool sync_scheduled;
+
+        char machine_id_field[sizeof("_MACHINE_ID=") + 32];
+        char boot_id_field[sizeof("_BOOT_ID=") + 32];
+        char *hostname_field;
+
+        /* Cached cgroup root, so that we don't have to query that all the time */
+        char *cgroup_root;
 } Server;
 
 #define N_IOVEC_META_FIELDS 20
@@ -152,5 +173,5 @@ void server_vacuum(Server *s);
 void server_rotate(Server *s);
 int server_schedule_sync(Server *s, int priority);
 int server_flush_to_var(Server *s);
-int process_event(Server *s, struct epoll_event *ev);
 void server_maybe_append_tags(Server *s);
+int process_datagram(sd_event_source *es, int fd, uint32_t revents, void *userdata);