~ubuntu-branches/ubuntu/trusty/systemd/trusty

« back to all changes in this revision

Viewing changes to src/journal/journal-internal.h

  • Committer: Package Import Robot
  • Author(s): Michael Biebl, Michael Biebl, Michael Stapelberg, Daniel Schaal, Ondrej Balaz
  • Date: 2013-09-12 00:13:11 UTC
  • mfrom: (1.1.11) (9.1.2 experimental)
  • mto: This revision was merged to the branch mainline in revision 53.
  • Revision ID: package-import@ubuntu.com-20130912001311-dz35it34wr2lbday
Tags: 204-3
[ Michael Biebl ]
* Upload to unstable.
* Use /bin/bash in debug-shell.service as Debian doesn't have /sbin/sushell.
* Only import net.ifaces cmdline property for network devices.
* Generate strict dependencies between the binary packages using a
  shlibs.local file and add an explicit versioned dependency on
  libsystemd-login0 to systemd to ensure packages are upgraded in sync.
  Closes: #719444
* Drop obsolete Replaces: libudev0 from udev package.
* Use correct paths for various binaries, like /sbin/quotaon, which are
  installed in / and not /usr in Debian.  Closes: #721347
* Don't install kernel-install(8) man page since we don't install the
  corresponding binary either.  Closes: #722180
* Cherry-pick upstream fixes to make switching runlevels and starting
  reboot via ctrl-alt-del more robust.
* Cherry-pick upstream fix to properly apply ACLs to Journal files.

[ Michael Stapelberg ]
* Make systemctl enable|disable call update-rc.d for SysV init scripts.
  Closes: #709780
* Don't mount /tmp as tmpfs by default and make it possible to enable this
  feature via "systemctl enable tmp.mount".

[ Daniel Schaal ]
* Add bug-script to systemd and udev.  Closes: #711245

[ Ondrej Balaz ]
* Recognize discard option in /etc/crypttab.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
2
2
 
3
 
#ifndef foojournalinternalhfoo
4
 
#define foojournalinternalhfoo
 
3
#pragma once
5
4
 
6
5
/***
7
6
  This file is part of systemd.
9
8
  Copyright 2011 Lennart Poettering
10
9
 
11
10
  systemd is free software; you can redistribute it and/or modify it
12
 
  under the terms of the GNU General Public License as published by
13
 
  the Free Software Foundation; either version 2 of the License, or
 
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
14
13
  (at your option) any later version.
15
14
 
16
15
  systemd is distributed in the hope that it will be useful, but
17
16
  WITHOUT ANY WARRANTY; without even the implied warranty of
18
17
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
19
 
  General Public License for more details.
 
18
  Lesser General Public License for more details.
20
19
 
21
 
  You should have received a copy of the GNU General Public License
 
20
  You should have received a copy of the GNU Lesser General Public License
22
21
  along with systemd; If not, see <http://www.gnu.org/licenses/>.
23
22
***/
24
23
 
28
27
 
29
28
#include <systemd/sd-id128.h>
30
29
 
 
30
#include "journal-def.h"
31
31
#include "list.h"
 
32
#include "hashmap.h"
 
33
#include "set.h"
 
34
#include "journal-file.h"
32
35
 
33
36
typedef struct Match Match;
 
37
typedef struct Location Location;
 
38
typedef struct Directory Directory;
 
39
 
 
40
typedef enum MatchType {
 
41
        MATCH_DISCRETE,
 
42
        MATCH_OR_TERM,
 
43
        MATCH_AND_TERM
 
44
} MatchType;
34
45
 
35
46
struct Match {
 
47
        MatchType type;
 
48
        Match *parent;
 
49
        LIST_FIELDS(Match, matches);
 
50
 
 
51
        /* For concrete matches */
36
52
        char *data;
37
53
        size_t size;
38
 
        uint64_t le_hash;
 
54
        le64_t le_hash;
39
55
 
40
 
        LIST_FIELDS(Match, matches);
 
56
        /* For terms */
 
57
        LIST_HEAD(Match, matches);
41
58
};
42
59
 
43
 
typedef enum location_type {
 
60
typedef enum LocationType {
 
61
        /* The first and last entries, resp. */
44
62
        LOCATION_HEAD,
45
63
        LOCATION_TAIL,
46
 
        LOCATION_DISCRETE
47
 
} location_type_t;
48
 
 
49
 
typedef struct Location {
50
 
        location_type_t type;
 
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. */
 
67
        LOCATION_DISCRETE,
 
68
 
 
69
        /* We should seek to the precise location specified, and
 
70
         * return it, as we haven't read it yet. */
 
71
        LOCATION_SEEK
 
72
} LocationType;
 
73
 
 
74
struct Location {
 
75
        LocationType type;
 
76
 
 
77
        bool seqnum_set;
 
78
        bool realtime_set;
 
79
        bool monotonic_set;
 
80
        bool xor_hash_set;
51
81
 
52
82
        uint64_t seqnum;
53
83
        sd_id128_t seqnum_id;
54
 
        bool seqnum_set;
55
84
 
56
85
        uint64_t realtime;
57
 
        bool realtime_set;
58
86
 
59
87
        uint64_t monotonic;
60
88
        sd_id128_t boot_id;
61
 
        bool monotonic_set;
62
89
 
63
90
        uint64_t xor_hash;
64
 
        bool xor_hash_set;
65
 
} Location;
 
91
};
 
92
 
 
93
struct Directory {
 
94
        char *path;
 
95
        int wd;
 
96
        bool is_root;
 
97
};
66
98
 
67
99
struct sd_journal {
68
100
        int flags;
69
101
 
 
102
        char *path;
 
103
 
70
104
        Hashmap *files;
 
105
        MMapCache *mmap;
71
106
 
72
107
        Location current_location;
 
108
 
73
109
        JournalFile *current_file;
74
110
        uint64_t current_field;
75
111
 
 
112
        Hashmap *directories_by_path;
 
113
        Hashmap *directories_by_wd;
 
114
 
76
115
        int inotify_fd;
77
 
        Hashmap *inotify_wd_dirs;
78
 
        Hashmap *inotify_wd_roots;
79
 
 
80
 
        LIST_HEAD(Match, matches);
81
 
        unsigned n_matches;
 
116
 
 
117
        Match *level0, *level1, *level2;
 
118
 
 
119
        unsigned current_invalidate_counter, last_invalidate_counter;
 
120
 
 
121
        char *unique_field;
 
122
        JournalFile *unique_file;
 
123
        uint64_t unique_offset;
 
124
 
 
125
        bool on_network;
 
126
 
 
127
        size_t data_threshold;
 
128
 
 
129
        Set *errors;
 
130
 
 
131
        usec_t last_process_usec;
82
132
};
83
133
 
84
 
#endif
 
134
char *journal_make_match_string(sd_journal *j);
 
135
void journal_print_header(sd_journal *j);
 
136
 
 
137
static inline void journal_closep(sd_journal **j) {
 
138
        sd_journal_close(*j);
 
139
}
 
140
 
 
141
#define _cleanup_journal_close_ _cleanup_(journal_closep)