1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
use dlog_sys::{log_id_t, log_priority};
use libc::timespec;
use std::ffi::{c_char, c_int, c_uint};

#[repr(C)]
#[allow(non_camel_case_types)]
pub enum dlogutil_sorting_order {
    DLOGUTIL_SORT_SENT_MONO = 0,
    DLOGUTIL_SORT_SENT_REAL,
    DLOGUTIL_SORT_RECV_MONO,
    DLOGUTIL_SORT_RECV_REAL,
    DLOGUTIL_SORT_DEFAULT,
}

#[repr(C)]
pub struct dlogutil_config {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}
#[repr(C)]
pub struct dlogutil_state {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}
#[repr(C)]
pub struct dlogutil_entry {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

extern "C" {
    pub fn dlogutil_config_create() -> *mut dlogutil_config;
    pub fn dlogutil_config_destroy(config: *mut dlogutil_config);
    pub fn dlogutil_config_filter_tid(config: *mut dlogutil_config, tid: c_int) -> c_int;
    pub fn dlogutil_config_filter_pid(config: *mut dlogutil_config, pid: c_int) -> c_int;
    pub fn dlogutil_config_filter_filterspec(
        config: *mut dlogutil_config,
        query: *const c_char,
    ) -> c_int;
    pub fn dlogutil_config_sorting_disable(config: *mut dlogutil_config) -> c_int;
    pub fn dlogutil_config_sorting_enable(config: *mut dlogutil_config) -> c_int;
    pub fn dlogutil_config_sorting_enable_with_size(
        config: *mut dlogutil_config,
        entry_count: c_uint,
    ) -> c_int;
    pub fn dlogutil_config_order_set(
        config: *mut dlogutil_config,
        sort_by: dlogutil_sorting_order,
    ) -> c_int;
    pub fn dlogutil_config_buffer_add(config: *mut dlogutil_config, buf: log_id_t) -> c_int;
    pub fn dlogutil_state_destroy(state: *mut dlogutil_state);
    pub fn dlogutil_config_connect(
        config: *mut dlogutil_config,
        out_state: *mut *mut dlogutil_state,
    ) -> c_int;
    pub fn dlogutil_config_mode_set_continuous(config: *mut dlogutil_config) -> c_int;
    pub fn dlogutil_config_mode_set_monitor(config: *mut dlogutil_config) -> c_int;
    pub fn dlogutil_config_mode_set_dump(
        config: *mut dlogutil_config,
        entry_count: c_uint,
    ) -> c_int;
    pub fn dlogutil_config_mode_set_compressed_memory_dump(
        config: *mut dlogutil_config,
        compress_buffer: *const c_char,
    ) -> c_int;
    pub fn dlogutil_get_log(
        state: *mut dlogutil_state,
        timeout: c_int,
        entry_out: *mut *mut dlogutil_entry,
    ) -> c_int;
    pub fn dlogutil_buffer_clear(state: *mut dlogutil_state, buffer: log_id_t) -> c_int;
    pub fn dlogutil_buffer_get_name(buffer: log_id_t, name: *mut *const c_char) -> c_int;
    pub fn dlogutil_buffer_get_capacity(
        state: *mut dlogutil_state,
        buffer: log_id_t,
        capacity: *mut c_uint,
    ) -> c_int;
    pub fn dlogutil_buffer_get_usage(
        state: *mut dlogutil_state,
        buffer: log_id_t,
        usage: *mut c_uint,
    ) -> c_int;
    pub fn dlogutil_buffer_get_default_ts_type(
        buffer: log_id_t,
        typ: *mut dlogutil_sorting_order,
    ) -> c_int;
    pub fn dlogutil_buffer_check_ts_type_available(
        buffer: log_id_t,
        typ: dlogutil_sorting_order,
        available: *mut bool,
    ) -> c_int;
    pub fn dlogutil_buffer_get_alias(
        state: *mut dlogutil_state,
        buffer: log_id_t,
        real_buffer: *mut log_id_t,
    ) -> c_int;
    pub fn dlogutil_entry_destroy(entry: *mut dlogutil_entry);
    pub fn dlogutil_entry_get_timestamp(
        entry: *const dlogutil_entry,
        stamp_type: dlogutil_sorting_order,
        ts: *mut timespec,
    ) -> c_int;
    pub fn dlogutil_entry_get_tid(entry: *const dlogutil_entry, tid: *mut c_int) -> c_int;
    pub fn dlogutil_entry_get_pid(entry: *const dlogutil_entry, pid: *mut c_int) -> c_int;
    pub fn dlogutil_entry_get_priority(
        entry: *const dlogutil_entry,
        prio: *mut log_priority,
    ) -> c_int;
    pub fn dlogutil_entry_get_tag(entry: *const dlogutil_entry, tag: *mut *const c_char) -> c_int;
    pub fn dlogutil_entry_get_message(
        entry: *const dlogutil_entry,
        msg: *mut *const c_char,
    ) -> c_int;
}