2 * vim:ts=4:sw=4:expandtab
4 * i3 - an improved dynamic tiling window manager
5 * © 2009-2012 Michael Stapelberg and contributors (see also: LICENSE)
7 * The format of the shmlog data structure which i3 development versions use by
8 * default (ringbuffer for storing the debug log).
11 #ifndef I3_I3_SHMLOG_H
12 #define I3_I3_SHMLOG_H
17 /* Default shmlog size if not set by user. */
18 extern const int default_shmlog_size;
21 * Header of the shmlog file. Used by i3/src/log.c and i3/i3-dump-log/main.c.
24 typedef struct i3_shmlog_header {
25 /* Byte offset where the next line will be written to. */
26 uint32_t offset_next_write;
28 /* Byte offset where the last wrap occured. */
29 uint32_t offset_last_wrap;
31 /* The size of the logfile in bytes. Since the size is limited to 25 MiB
32 * an uint32_t is sufficient. */
35 /* wrap counter. We need it to reliably signal to clients that we just
36 * wrapped (clients cannot use offset_last_wrap because that might
37 * coincidentally be exactly the same as previously). Overflows can happen
38 * and don’t matter — clients use an equality check (==). */
41 /* pthread condvar which will be broadcasted whenever there is a new
42 * message in the log. i3-dump-log uses this to implement -f (follow, like
43 * tail -f) in an efficient way. */
44 pthread_cond_t condvar;