i3
Main Page
Data Structures
Files
File List
Globals
include
shmlog.h
Go to the documentation of this file.
1
/*
2
* vim:ts=4:sw=4:expandtab
3
*
4
* i3 - an improved dynamic tiling window manager
5
* © 2009-2012 Michael Stapelberg and contributors (see also: LICENSE)
6
*
7
* The format of the shmlog data structure which i3 development versions use by
8
* default (ringbuffer for storing the debug log).
9
*
10
*/
11
#ifndef I3_I3_SHMLOG_H
12
#define I3_I3_SHMLOG_H
13
14
#include <stdint.h>
15
#include <pthread.h>
16
17
/*
18
* Header of the shmlog file. Used by i3/src/log.c and i3/i3-dump-log/main.c.
19
*
20
*/
21
typedef
struct
i3_shmlog_header
{
22
/* Byte offset where the next line will be written to. */
23
uint32_t
offset_next_write
;
24
25
/* Byte offset where the last wrap occured. */
26
uint32_t
offset_last_wrap
;
27
28
/* The size of the logfile in bytes. Since the size is limited to 25 MiB
29
* an uint32_t is sufficient. */
30
uint32_t
size
;
31
32
/* wrap counter. We need it to reliably signal to clients that we just
33
* wrapped (clients cannot use offset_last_wrap because that might
34
* coincidentally be exactly the same as previously). Overflows can happen
35
* and don’t matter — clients use an equality check (==). */
36
uint32_t
wrap_count
;
37
38
/* pthread condvar which will be broadcasted whenever there is a new
39
* message in the log. i3-dump-log uses this to implement -f (follow, like
40
* tail -f) in an efficient way. */
41
pthread_cond_t
condvar
;
42
}
i3_shmlog_header
;
43
44
#endif
Generated by
1.8.3