1/* system/debuggerd/utility.h
2**
3** Copyright 2008, The Android Open Source Project
4**
5** Licensed under the Apache License, Version 2.0 (the "License");
6** you may not use this file except in compliance with the License.
7** You may obtain a copy of the License at
8**
9**     http://www.apache.org/licenses/LICENSE-2.0
10**
11** Unless required by applicable law or agreed to in writing, software
12** distributed under the License is distributed on an "AS IS" BASIS,
13** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14** See the License for the specific language governing permissions and
15** limitations under the License.
16*/
17
18#ifndef _DEBUGGERD_UTILITY_H
19#define _DEBUGGERD_UTILITY_H
20
21#include <stddef.h>
22#include <stdbool.h>
23
24typedef struct {
25    /* tombstone file descriptor */
26    int tfd;
27    /* if true, does not log anything to the Android logcat */
28    bool quiet;
29} log_t;
30
31/* Log information onto the tombstone. */
32void _LOG(log_t* log, bool in_tombstone_only, const char *fmt, ...)
33        __attribute__ ((format(printf, 3, 4)));
34
35#define LOG(fmt...) _LOG(NULL, 0, fmt)
36
37/* Set to 1 for normal debug traces */
38#if 0
39#define XLOG(fmt...) _LOG(NULL, 0, fmt)
40#else
41#define XLOG(fmt...) do {} while(0)
42#endif
43
44/* Set to 1 for chatty debug traces. Includes all resolved dynamic symbols */
45#if 0
46#define XLOG2(fmt...) _LOG(NULL, 0, fmt)
47#else
48#define XLOG2(fmt...) do {} while(0)
49#endif
50
51int wait_for_signal(pid_t tid, int* total_sleep_time_usec);
52void wait_for_stop(pid_t tid, int* total_sleep_time_usec);
53
54#endif // _DEBUGGERD_UTILITY_H
55