19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/* 29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Copyright (C) 2008 The Android Open Source Project 39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * you may not use this file except in compliance with the License. 69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * You may obtain a copy of the License at 79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * See the License for the specific language governing permissions and 149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * limitations under the License. 159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#ifndef _DUMPSTATE_H_ 189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#define _DUMPSTATE_H_ 199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#include <time.h> 2152952b1bcab28f655775efbad8f2e2b41d06a34bDan Egnor#include <unistd.h> 229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/* prints the contents of a file */ 2452952b1bcab28f655775efbad8f2e2b41d06a34bDan Egnorint dump_file(const char *title, const char* path); 259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2652952b1bcab28f655775efbad8f2e2b41d06a34bDan Egnor/* forks a command and waits for it to finish -- terminate args with NULL */ 2752952b1bcab28f655775efbad8f2e2b41d06a34bDan Egnorint run_command(const char *title, int timeout_seconds, const char *command, ...); 289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/* prints all the system properties */ 309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid print_properties(); 319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3252952b1bcab28f655775efbad8f2e2b41d06a34bDan Egnor/* redirect output to a service control socket */ 3352952b1bcab28f655775efbad8f2e2b41d06a34bDan Egnorvoid redirect_to_socket(FILE *redirect, const char *service); 349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3552952b1bcab28f655775efbad8f2e2b41d06a34bDan Egnor/* redirect output to a file, optionally gzipping; returns gzip pid */ 3652952b1bcab28f655775efbad8f2e2b41d06a34bDan Egnorpid_t redirect_to_file(FILE *redirect, char *path, int gzip_level); 379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3852952b1bcab28f655775efbad8f2e2b41d06a34bDan Egnor/* dump Dalvik stack traces, return the trace file location (NULL if none) */ 3952952b1bcab28f655775efbad8f2e2b41d06a34bDan Egnorconst char *dump_vm_traces(); 409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4157fff78a70c82ca09beb91c4f92d97b6f0b897e4San Mehat/* for each process in the system, run the specified function */ 4257fff78a70c82ca09beb91c4f92d97b6f0b897e4San Mehatvoid for_each_pid(void (*func)(int, const char *), const char *header); 4357fff78a70c82ca09beb91c4f92d97b6f0b897e4San Mehat 4457fff78a70c82ca09beb91c4f92d97b6f0b897e4San Mehat/* Displays a blocked processes in-kernel wait channel */ 4557fff78a70c82ca09beb91c4f92d97b6f0b897e4San Mehatvoid show_wchan(int pid, const char *name); 4657fff78a70c82ca09beb91c4f92d97b6f0b897e4San Mehat 479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#endif /* _DUMPSTATE_H_ */ 48