Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/mesa
Path: blob/21.2-virgl/include/android_stub/log/logprint.h
4547 views
1
/*
2
* Copyright (C) 2006 The Android Open Source Project
3
*
4
* Licensed under the Apache License, Version 2.0 (the "License");
5
* you may not use this file except in compliance with the License.
6
* You may obtain a copy of the License at
7
*
8
* http://www.apache.org/licenses/LICENSE-2.0
9
*
10
* Unless required by applicable law or agreed to in writing, software
11
* distributed under the License is distributed on an "AS IS" BASIS,
12
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
* See the License for the specific language governing permissions and
14
* limitations under the License.
15
*/
16
17
#pragma once
18
19
#include <stdint.h>
20
#include <sys/types.h>
21
22
#include <android/log.h>
23
#include <log/event_tag_map.h>
24
25
#ifdef __cplusplus
26
extern "C" {
27
#endif
28
29
typedef enum {
30
/* Verbs */
31
FORMAT_OFF = 0,
32
FORMAT_BRIEF,
33
FORMAT_PROCESS,
34
FORMAT_TAG,
35
FORMAT_THREAD,
36
FORMAT_RAW,
37
FORMAT_TIME,
38
FORMAT_THREADTIME,
39
FORMAT_LONG,
40
/* Adverbs. The following are modifiers to above format verbs */
41
FORMAT_MODIFIER_COLOR, /* converts priority to color */
42
FORMAT_MODIFIER_TIME_USEC, /* switches from msec to usec time precision */
43
FORMAT_MODIFIER_PRINTABLE, /* converts non-printable to printable escapes */
44
FORMAT_MODIFIER_YEAR, /* Adds year to date */
45
FORMAT_MODIFIER_ZONE, /* Adds zone to date, + UTC */
46
FORMAT_MODIFIER_EPOCH, /* Print time as seconds since Jan 1 1970 */
47
FORMAT_MODIFIER_MONOTONIC, /* Print cpu time as seconds since start */
48
FORMAT_MODIFIER_UID, /* Adds uid */
49
FORMAT_MODIFIER_DESCRIPT, /* Adds descriptive */
50
/* private, undocumented */
51
FORMAT_MODIFIER_TIME_NSEC, /* switches from msec to nsec time precision */
52
} AndroidLogPrintFormat;
53
54
typedef struct AndroidLogFormat_t AndroidLogFormat;
55
56
typedef struct AndroidLogEntry_t {
57
time_t tv_sec;
58
long tv_nsec;
59
android_LogPriority priority;
60
int32_t uid;
61
int32_t pid;
62
int32_t tid;
63
const char* tag;
64
size_t tagLen;
65
size_t messageLen;
66
const char* message;
67
} AndroidLogEntry;
68
69
AndroidLogFormat* android_log_format_new();
70
71
void android_log_format_free(AndroidLogFormat* p_format);
72
73
/* currently returns 0 if format is a modifier, 1 if not */
74
int android_log_setPrintFormat(AndroidLogFormat* p_format,
75
AndroidLogPrintFormat format);
76
77
/**
78
* Returns FORMAT_OFF on invalid string
79
*/
80
AndroidLogPrintFormat android_log_formatFromString(const char* s);
81
82
/**
83
* filterExpression: a single filter expression
84
* eg "AT:d"
85
*
86
* returns 0 on success and -1 on invalid expression
87
*
88
* Assumes single threaded execution
89
*
90
*/
91
92
int android_log_addFilterRule(AndroidLogFormat* p_format,
93
const char* filterExpression);
94
95
/**
96
* filterString: a whitespace-separated set of filter expressions
97
* eg "AT:d *:i"
98
*
99
* returns 0 on success and -1 on invalid expression
100
*
101
* Assumes single threaded execution
102
*
103
*/
104
105
int android_log_addFilterString(AndroidLogFormat* p_format,
106
const char* filterString);
107
108
/**
109
* returns 1 if this log line should be printed based on its priority
110
* and tag, and 0 if it should not
111
*/
112
int android_log_shouldPrintLine(AndroidLogFormat* p_format, const char* tag,
113
android_LogPriority pri);
114
115
/**
116
* Splits a wire-format buffer into an AndroidLogEntry
117
* entry allocated by caller. Pointers will point directly into buf
118
*
119
* Returns 0 on success and -1 on invalid wire format (entry will be
120
* in unspecified state)
121
*/
122
int android_log_processLogBuffer(struct logger_entry* buf,
123
AndroidLogEntry* entry);
124
125
/**
126
* Like android_log_processLogBuffer, but for binary logs.
127
*
128
* If "map" is non-NULL, it will be used to convert the log tag number
129
* into a string.
130
*/
131
int android_log_processBinaryLogBuffer(struct logger_entry* buf,
132
AndroidLogEntry* entry,
133
const EventTagMap* map, char* messageBuf,
134
int messageBufLen);
135
136
/**
137
* Formats a log message into a buffer
138
*
139
* Uses defaultBuffer if it can, otherwise malloc()'s a new buffer
140
* If return value != defaultBuffer, caller must call free()
141
* Returns NULL on malloc error
142
*/
143
144
char* android_log_formatLogLine(AndroidLogFormat* p_format, char* defaultBuffer,
145
size_t defaultBufferSize,
146
const AndroidLogEntry* p_line,
147
size_t* p_outLength);
148
149
/**
150
* Either print or do not print log line, based on filter
151
*
152
* Assumes single threaded execution
153
*
154
*/
155
int android_log_printLogLine(AndroidLogFormat* p_format, int fd,
156
const AndroidLogEntry* entry);
157
158
#ifdef __cplusplus
159
}
160
#endif
161
162