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