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