1use dlog_sys::{log_id_t, log_priority};
2use libc::timespec;
3use std::ffi::{c_char, c_int, c_uint};
4
5#[repr(C)]
6#[allow(non_camel_case_types)]
7pub enum dlogutil_sorting_order {
8 DLOGUTIL_SORT_SENT_MONO = 0,
9 DLOGUTIL_SORT_SENT_REAL,
10 DLOGUTIL_SORT_RECV_MONO,
11 DLOGUTIL_SORT_RECV_REAL,
12 DLOGUTIL_SORT_DEFAULT,
13}
14
15#[repr(C)]
16pub struct dlogutil_config {
17 _data: [u8; 0],
18 _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
19}
20#[repr(C)]
21pub struct dlogutil_state {
22 _data: [u8; 0],
23 _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
24}
25#[repr(C)]
26pub struct dlogutil_entry {
27 _data: [u8; 0],
28 _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
29}
30
31extern "C" {
32 pub fn dlogutil_config_create() -> *mut dlogutil_config;
33 pub fn dlogutil_config_destroy(config: *mut dlogutil_config);
34 pub fn dlogutil_config_filter_tid(config: *mut dlogutil_config, tid: c_int) -> c_int;
35 pub fn dlogutil_config_filter_pid(config: *mut dlogutil_config, pid: c_int) -> c_int;
36 pub fn dlogutil_config_filter_filterspec(
37 config: *mut dlogutil_config,
38 query: *const c_char,
39 ) -> c_int;
40 pub fn dlogutil_config_sorting_disable(config: *mut dlogutil_config) -> c_int;
41 pub fn dlogutil_config_sorting_enable(config: *mut dlogutil_config) -> c_int;
42 pub fn dlogutil_config_sorting_enable_with_size(
43 config: *mut dlogutil_config,
44 entry_count: c_uint,
45 ) -> c_int;
46 pub fn dlogutil_config_order_set(
47 config: *mut dlogutil_config,
48 sort_by: dlogutil_sorting_order,
49 ) -> c_int;
50 pub fn dlogutil_config_buffer_add(config: *mut dlogutil_config, buf: log_id_t) -> c_int;
51 pub fn dlogutil_state_destroy(state: *mut dlogutil_state);
52 pub fn dlogutil_config_connect(
53 config: *mut dlogutil_config,
54 out_state: *mut *mut dlogutil_state,
55 ) -> c_int;
56 pub fn dlogutil_config_mode_set_continuous(config: *mut dlogutil_config) -> c_int;
57 pub fn dlogutil_config_mode_set_monitor(config: *mut dlogutil_config) -> c_int;
58 pub fn dlogutil_config_mode_set_dump(
59 config: *mut dlogutil_config,
60 entry_count: c_uint,
61 ) -> c_int;
62 pub fn dlogutil_config_mode_set_compressed_memory_dump(
63 config: *mut dlogutil_config,
64 compress_buffer: *const c_char,
65 ) -> c_int;
66 pub fn dlogutil_get_log(
67 state: *mut dlogutil_state,
68 timeout: c_int,
69 entry_out: *mut *mut dlogutil_entry,
70 ) -> c_int;
71 pub fn dlogutil_buffer_clear(state: *mut dlogutil_state, buffer: log_id_t) -> c_int;
72 pub fn dlogutil_buffer_get_name(buffer: log_id_t, name: *mut *const c_char) -> c_int;
73 pub fn dlogutil_buffer_get_capacity(
74 state: *mut dlogutil_state,
75 buffer: log_id_t,
76 capacity: *mut c_uint,
77 ) -> c_int;
78 pub fn dlogutil_buffer_get_usage(
79 state: *mut dlogutil_state,
80 buffer: log_id_t,
81 usage: *mut c_uint,
82 ) -> c_int;
83 pub fn dlogutil_buffer_get_default_ts_type(
84 buffer: log_id_t,
85 typ: *mut dlogutil_sorting_order,
86 ) -> c_int;
87 pub fn dlogutil_buffer_check_ts_type_available(
88 buffer: log_id_t,
89 typ: dlogutil_sorting_order,
90 available: *mut bool,
91 ) -> c_int;
92 pub fn dlogutil_buffer_get_alias(
93 state: *mut dlogutil_state,
94 buffer: log_id_t,
95 real_buffer: *mut log_id_t,
96 ) -> c_int;
97 pub fn dlogutil_entry_destroy(entry: *mut dlogutil_entry);
98 pub fn dlogutil_entry_get_timestamp(
99 entry: *const dlogutil_entry,
100 stamp_type: dlogutil_sorting_order,
101 ts: *mut timespec,
102 ) -> c_int;
103 pub fn dlogutil_entry_get_tid(entry: *const dlogutil_entry, tid: *mut c_int) -> c_int;
104 pub fn dlogutil_entry_get_pid(entry: *const dlogutil_entry, pid: *mut c_int) -> c_int;
105 pub fn dlogutil_entry_get_priority(
106 entry: *const dlogutil_entry,
107 prio: *mut log_priority,
108 ) -> c_int;
109 pub fn dlogutil_entry_get_tag(entry: *const dlogutil_entry, tag: *mut *const c_char) -> c_int;
110 pub fn dlogutil_entry_get_message(
111 entry: *const dlogutil_entry,
112 msg: *mut *const c_char,
113 ) -> c_int;
114}