1f029297f673ae06d219bd727a318a48b885db6fdFelipe Leme/*
2f029297f673ae06d219bd727a318a48b885db6fdFelipe Leme * Copyright (C) 2016 The Android Open Source Project
3f029297f673ae06d219bd727a318a48b885db6fdFelipe Leme *
4f029297f673ae06d219bd727a318a48b885db6fdFelipe Leme * Licensed under the Apache License, Version 2.0 (the "License");
5f029297f673ae06d219bd727a318a48b885db6fdFelipe Leme * you may not use this file except in compliance with the License.
6f029297f673ae06d219bd727a318a48b885db6fdFelipe Leme * You may obtain a copy of the License at
7f029297f673ae06d219bd727a318a48b885db6fdFelipe Leme *
8f029297f673ae06d219bd727a318a48b885db6fdFelipe Leme *      http://www.apache.org/licenses/LICENSE-2.0
9f029297f673ae06d219bd727a318a48b885db6fdFelipe Leme *
10f029297f673ae06d219bd727a318a48b885db6fdFelipe Leme * Unless required by applicable law or agreed to in writing, software
11f029297f673ae06d219bd727a318a48b885db6fdFelipe Leme * distributed under the License is distributed on an "AS IS" BASIS,
12f029297f673ae06d219bd727a318a48b885db6fdFelipe Leme * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13f029297f673ae06d219bd727a318a48b885db6fdFelipe Leme * See the License for the specific language governing permissions and
14f029297f673ae06d219bd727a318a48b885db6fdFelipe Leme * limitations under the License.
15f029297f673ae06d219bd727a318a48b885db6fdFelipe Leme */
16f029297f673ae06d219bd727a318a48b885db6fdFelipe Leme#ifndef FRAMEWORK_NATIVE_CMD_DUMPSTATE_INTERNAL_H_
17f029297f673ae06d219bd727a318a48b885db6fdFelipe Leme#define FRAMEWORK_NATIVE_CMD_DUMPSTATE_INTERNAL_H_
18f029297f673ae06d219bd727a318a48b885db6fdFelipe Leme
19f029297f673ae06d219bd727a318a48b885db6fdFelipe Leme#include <cstdint>
20f029297f673ae06d219bd727a318a48b885db6fdFelipe Leme#include <string>
21f029297f673ae06d219bd727a318a48b885db6fdFelipe Leme
22f029297f673ae06d219bd727a318a48b885db6fdFelipe Leme// TODO: rename macros to DUMPSTATE_LOGXXX
23f029297f673ae06d219bd727a318a48b885db6fdFelipe Leme#ifndef MYLOGD
24f029297f673ae06d219bd727a318a48b885db6fdFelipe Leme#define MYLOGD(...)               \
25f029297f673ae06d219bd727a318a48b885db6fdFelipe Leme    fprintf(stderr, __VA_ARGS__); \
26f029297f673ae06d219bd727a318a48b885db6fdFelipe Leme    ALOGD(__VA_ARGS__);
27f029297f673ae06d219bd727a318a48b885db6fdFelipe Leme#endif
28f029297f673ae06d219bd727a318a48b885db6fdFelipe Leme
29f029297f673ae06d219bd727a318a48b885db6fdFelipe Leme#ifndef MYLOGI
30f029297f673ae06d219bd727a318a48b885db6fdFelipe Leme#define MYLOGI(...)               \
31f029297f673ae06d219bd727a318a48b885db6fdFelipe Leme    fprintf(stderr, __VA_ARGS__); \
32f029297f673ae06d219bd727a318a48b885db6fdFelipe Leme    ALOGI(__VA_ARGS__);
33f029297f673ae06d219bd727a318a48b885db6fdFelipe Leme#endif
34f029297f673ae06d219bd727a318a48b885db6fdFelipe Leme
358f788290f89c0782ca5cf2d1feaa81250295c5faNarayan Kamath#ifndef MYLOGW
368f788290f89c0782ca5cf2d1feaa81250295c5faNarayan Kamath#define MYLOGW(...)               \
378f788290f89c0782ca5cf2d1feaa81250295c5faNarayan Kamath    fprintf(stderr, __VA_ARGS__); \
388f788290f89c0782ca5cf2d1feaa81250295c5faNarayan Kamath    ALOGW(__VA_ARGS__);
398f788290f89c0782ca5cf2d1feaa81250295c5faNarayan Kamath#endif
408f788290f89c0782ca5cf2d1feaa81250295c5faNarayan Kamath
41f029297f673ae06d219bd727a318a48b885db6fdFelipe Leme#ifndef MYLOGE
42f029297f673ae06d219bd727a318a48b885db6fdFelipe Leme#define MYLOGE(...)               \
43f029297f673ae06d219bd727a318a48b885db6fdFelipe Leme    fprintf(stderr, __VA_ARGS__); \
44f029297f673ae06d219bd727a318a48b885db6fdFelipe Leme    ALOGE(__VA_ARGS__);
45f029297f673ae06d219bd727a318a48b885db6fdFelipe Leme#endif
46f029297f673ae06d219bd727a318a48b885db6fdFelipe Leme
47f029297f673ae06d219bd727a318a48b885db6fdFelipe Leme// Internal functions used by .cpp files on multiple build targets.
48f029297f673ae06d219bd727a318a48b885db6fdFelipe Leme// TODO: move to android::os::dumpstate::internal namespace
49f029297f673ae06d219bd727a318a48b885db6fdFelipe Leme
50f029297f673ae06d219bd727a318a48b885db6fdFelipe Leme// TODO: use functions from <chrono> instead
51f029297f673ae06d219bd727a318a48b885db6fdFelipe Lemeconst uint64_t NANOS_PER_SEC = 1000000000;
52f029297f673ae06d219bd727a318a48b885db6fdFelipe Lemeuint64_t Nanotime();
53f029297f673ae06d219bd727a318a48b885db6fdFelipe Leme
54f029297f673ae06d219bd727a318a48b885db6fdFelipe Leme// Switches to non-root user and group.
55f029297f673ae06d219bd727a318a48b885db6fdFelipe Lemebool DropRootUser();
56f029297f673ae06d219bd727a318a48b885db6fdFelipe Leme
57f029297f673ae06d219bd727a318a48b885db6fdFelipe Leme// TODO: move to .cpp as static once is not used by utils.cpp anymore.
58f029297f673ae06d219bd727a318a48b885db6fdFelipe Lemeint DumpFileFromFdToFd(const std::string& title, const std::string& path_string, int fd, int out_fd,
59f029297f673ae06d219bd727a318a48b885db6fdFelipe Leme                       bool dry_run = false);
60f029297f673ae06d219bd727a318a48b885db6fdFelipe Leme
61f029297f673ae06d219bd727a318a48b885db6fdFelipe Leme#endif  // FRAMEWORK_NATIVE_CMD_DUMPSTATE_INTERNAL_H_
62