xref: /aosp_15_r20/external/mesa3d/include/android_stub/log/log.h (revision 6104692788411f58d303aa86923a9ff6ecaded22)
1*61046927SAndroid Build Coastguard Worker /*
2*61046927SAndroid Build Coastguard Worker  * Copyright (C) 2005-2014 The Android Open Source Project
3*61046927SAndroid Build Coastguard Worker  *
4*61046927SAndroid Build Coastguard Worker  * Licensed under the Apache License, Version 2.0 (the "License");
5*61046927SAndroid Build Coastguard Worker  * you may not use this file except in compliance with the License.
6*61046927SAndroid Build Coastguard Worker  * You may obtain a copy of the License at
7*61046927SAndroid Build Coastguard Worker  *
8*61046927SAndroid Build Coastguard Worker  *      http://www.apache.org/licenses/LICENSE-2.0
9*61046927SAndroid Build Coastguard Worker  *
10*61046927SAndroid Build Coastguard Worker  * Unless required by applicable law or agreed to in writing, software
11*61046927SAndroid Build Coastguard Worker  * distributed under the License is distributed on an "AS IS" BASIS,
12*61046927SAndroid Build Coastguard Worker  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*61046927SAndroid Build Coastguard Worker  * See the License for the specific language governing permissions and
14*61046927SAndroid Build Coastguard Worker  * limitations under the License.
15*61046927SAndroid Build Coastguard Worker  */
16*61046927SAndroid Build Coastguard Worker 
17*61046927SAndroid Build Coastguard Worker #pragma once
18*61046927SAndroid Build Coastguard Worker 
19*61046927SAndroid Build Coastguard Worker /* Too many in the ecosystem assume these are included */
20*61046927SAndroid Build Coastguard Worker #if !defined(_WIN32)
21*61046927SAndroid Build Coastguard Worker #include <pthread.h>
22*61046927SAndroid Build Coastguard Worker #endif
23*61046927SAndroid Build Coastguard Worker #include <stdint.h> /* uint16_t, int32_t */
24*61046927SAndroid Build Coastguard Worker #include <stdio.h>
25*61046927SAndroid Build Coastguard Worker #include <time.h>
26*61046927SAndroid Build Coastguard Worker #include <unistd.h>
27*61046927SAndroid Build Coastguard Worker 
28*61046927SAndroid Build Coastguard Worker #include <android/log.h>
29*61046927SAndroid Build Coastguard Worker #include <log/log_id.h>
30*61046927SAndroid Build Coastguard Worker #include <log/log_main.h>
31*61046927SAndroid Build Coastguard Worker #include <log/log_radio.h>
32*61046927SAndroid Build Coastguard Worker #include <log/log_safetynet.h>
33*61046927SAndroid Build Coastguard Worker #include <log/log_system.h>
34*61046927SAndroid Build Coastguard Worker #include <log/log_time.h>
35*61046927SAndroid Build Coastguard Worker 
36*61046927SAndroid Build Coastguard Worker #ifdef __cplusplus
37*61046927SAndroid Build Coastguard Worker extern "C" {
38*61046927SAndroid Build Coastguard Worker #endif
39*61046927SAndroid Build Coastguard Worker 
40*61046927SAndroid Build Coastguard Worker /*
41*61046927SAndroid Build Coastguard Worker  * LOG_TAG is the local tag used for the following simplified
42*61046927SAndroid Build Coastguard Worker  * logging macros.  You can change this preprocessor definition
43*61046927SAndroid Build Coastguard Worker  * before using the other macros to change the tag.
44*61046927SAndroid Build Coastguard Worker  */
45*61046927SAndroid Build Coastguard Worker 
46*61046927SAndroid Build Coastguard Worker #ifndef LOG_TAG
47*61046927SAndroid Build Coastguard Worker #define LOG_TAG NULL
48*61046927SAndroid Build Coastguard Worker #endif
49*61046927SAndroid Build Coastguard Worker 
50*61046927SAndroid Build Coastguard Worker /*
51*61046927SAndroid Build Coastguard Worker  * Normally we strip the effects of ALOGV (VERBOSE messages),
52*61046927SAndroid Build Coastguard Worker  * LOG_FATAL and LOG_FATAL_IF (FATAL assert messages) from the
53*61046927SAndroid Build Coastguard Worker  * release builds be defining NDEBUG.  You can modify this (for
54*61046927SAndroid Build Coastguard Worker  * example with "#define LOG_NDEBUG 0" at the top of your source
55*61046927SAndroid Build Coastguard Worker  * file) to change that behavior.
56*61046927SAndroid Build Coastguard Worker  */
57*61046927SAndroid Build Coastguard Worker 
58*61046927SAndroid Build Coastguard Worker #ifndef LOG_NDEBUG
59*61046927SAndroid Build Coastguard Worker #ifdef NDEBUG
60*61046927SAndroid Build Coastguard Worker #define LOG_NDEBUG 1
61*61046927SAndroid Build Coastguard Worker #else
62*61046927SAndroid Build Coastguard Worker #define LOG_NDEBUG 0
63*61046927SAndroid Build Coastguard Worker #endif
64*61046927SAndroid Build Coastguard Worker #endif
65*61046927SAndroid Build Coastguard Worker 
66*61046927SAndroid Build Coastguard Worker /*
67*61046927SAndroid Build Coastguard Worker  * The maximum size of the log entry payload that can be
68*61046927SAndroid Build Coastguard Worker  * written to the logger. An attempt to write more than
69*61046927SAndroid Build Coastguard Worker  * this amount will result in a truncated log entry.
70*61046927SAndroid Build Coastguard Worker  */
71*61046927SAndroid Build Coastguard Worker #define LOGGER_ENTRY_MAX_PAYLOAD 4068
72*61046927SAndroid Build Coastguard Worker 
73*61046927SAndroid Build Coastguard Worker /*
74*61046927SAndroid Build Coastguard Worker  * Event logging.
75*61046927SAndroid Build Coastguard Worker  */
76*61046927SAndroid Build Coastguard Worker 
77*61046927SAndroid Build Coastguard Worker /*
78*61046927SAndroid Build Coastguard Worker  * The following should not be used directly.
79*61046927SAndroid Build Coastguard Worker  */
80*61046927SAndroid Build Coastguard Worker 
81*61046927SAndroid Build Coastguard Worker int __android_log_bwrite(int32_t tag, const void* payload, size_t len);
82*61046927SAndroid Build Coastguard Worker int __android_log_btwrite(int32_t tag, char type, const void* payload,
83*61046927SAndroid Build Coastguard Worker                           size_t len);
84*61046927SAndroid Build Coastguard Worker int __android_log_bswrite(int32_t tag, const char* payload);
85*61046927SAndroid Build Coastguard Worker 
86*61046927SAndroid Build Coastguard Worker int __android_log_stats_bwrite(int32_t tag, const void* payload, size_t len);
87*61046927SAndroid Build Coastguard Worker 
88*61046927SAndroid Build Coastguard Worker #define android_bWriteLog(tag, payload, len) \
89*61046927SAndroid Build Coastguard Worker   __android_log_bwrite(tag, payload, len)
90*61046927SAndroid Build Coastguard Worker #define android_btWriteLog(tag, type, payload, len) \
91*61046927SAndroid Build Coastguard Worker   __android_log_btwrite(tag, type, payload, len)
92*61046927SAndroid Build Coastguard Worker 
93*61046927SAndroid Build Coastguard Worker /*
94*61046927SAndroid Build Coastguard Worker  * Event log entry types.
95*61046927SAndroid Build Coastguard Worker  */
96*61046927SAndroid Build Coastguard Worker typedef enum {
97*61046927SAndroid Build Coastguard Worker   /* Special markers for android_log_list_element type */
98*61046927SAndroid Build Coastguard Worker   EVENT_TYPE_LIST_STOP = '\n', /* declare end of list  */
99*61046927SAndroid Build Coastguard Worker   EVENT_TYPE_UNKNOWN = '?',    /* protocol error       */
100*61046927SAndroid Build Coastguard Worker 
101*61046927SAndroid Build Coastguard Worker   /* must match with declaration in java/android/android/util/EventLog.java */
102*61046927SAndroid Build Coastguard Worker   EVENT_TYPE_INT = 0,  /* int32_t */
103*61046927SAndroid Build Coastguard Worker   EVENT_TYPE_LONG = 1, /* int64_t */
104*61046927SAndroid Build Coastguard Worker   EVENT_TYPE_STRING = 2,
105*61046927SAndroid Build Coastguard Worker   EVENT_TYPE_LIST = 3,
106*61046927SAndroid Build Coastguard Worker   EVENT_TYPE_FLOAT = 4,
107*61046927SAndroid Build Coastguard Worker } AndroidEventLogType;
108*61046927SAndroid Build Coastguard Worker 
109*61046927SAndroid Build Coastguard Worker #ifndef LOG_EVENT_INT
110*61046927SAndroid Build Coastguard Worker #define LOG_EVENT_INT(_tag, _value)                                          \
111*61046927SAndroid Build Coastguard Worker   {                                                                          \
112*61046927SAndroid Build Coastguard Worker     int intBuf = _value;                                                     \
113*61046927SAndroid Build Coastguard Worker     (void)android_btWriteLog(_tag, EVENT_TYPE_INT, &intBuf, sizeof(intBuf)); \
114*61046927SAndroid Build Coastguard Worker   }
115*61046927SAndroid Build Coastguard Worker #endif
116*61046927SAndroid Build Coastguard Worker #ifndef LOG_EVENT_LONG
117*61046927SAndroid Build Coastguard Worker #define LOG_EVENT_LONG(_tag, _value)                                            \
118*61046927SAndroid Build Coastguard Worker   {                                                                             \
119*61046927SAndroid Build Coastguard Worker     long long longBuf = _value;                                                 \
120*61046927SAndroid Build Coastguard Worker     (void)android_btWriteLog(_tag, EVENT_TYPE_LONG, &longBuf, sizeof(longBuf)); \
121*61046927SAndroid Build Coastguard Worker   }
122*61046927SAndroid Build Coastguard Worker #endif
123*61046927SAndroid Build Coastguard Worker #ifndef LOG_EVENT_FLOAT
124*61046927SAndroid Build Coastguard Worker #define LOG_EVENT_FLOAT(_tag, _value)                           \
125*61046927SAndroid Build Coastguard Worker   {                                                             \
126*61046927SAndroid Build Coastguard Worker     float floatBuf = _value;                                    \
127*61046927SAndroid Build Coastguard Worker     (void)android_btWriteLog(_tag, EVENT_TYPE_FLOAT, &floatBuf, \
128*61046927SAndroid Build Coastguard Worker                              sizeof(floatBuf));                 \
129*61046927SAndroid Build Coastguard Worker   }
130*61046927SAndroid Build Coastguard Worker #endif
131*61046927SAndroid Build Coastguard Worker #ifndef LOG_EVENT_STRING
132*61046927SAndroid Build Coastguard Worker #define LOG_EVENT_STRING(_tag, _value) \
133*61046927SAndroid Build Coastguard Worker   (void)__android_log_bswrite(_tag, _value);
134*61046927SAndroid Build Coastguard Worker #endif
135*61046927SAndroid Build Coastguard Worker 
136*61046927SAndroid Build Coastguard Worker /* --------------------------------------------------------------------- */
137*61046927SAndroid Build Coastguard Worker 
138*61046927SAndroid Build Coastguard Worker /*
139*61046927SAndroid Build Coastguard Worker  * Release any logger resources (a new log write will immediately re-acquire)
140*61046927SAndroid Build Coastguard Worker  *
141*61046927SAndroid Build Coastguard Worker  * This is specifically meant to be used by Zygote to close open file descriptors after fork()
142*61046927SAndroid Build Coastguard Worker  * and before specialization.  O_CLOEXEC is used on file descriptors, so they will be closed upon
143*61046927SAndroid Build Coastguard Worker  * exec() in normal use cases.
144*61046927SAndroid Build Coastguard Worker  *
145*61046927SAndroid Build Coastguard Worker  * Note that this is not safe to call from a multi-threaded program.
146*61046927SAndroid Build Coastguard Worker  */
147*61046927SAndroid Build Coastguard Worker void __android_log_close(void);
148*61046927SAndroid Build Coastguard Worker 
149*61046927SAndroid Build Coastguard Worker #ifdef __cplusplus
150*61046927SAndroid Build Coastguard Worker }
151*61046927SAndroid Build Coastguard Worker #endif
152