diff options
author | Dan Albert <danalbert@google.com> | 2015-02-18 17:20:44 -0800 |
---|---|---|
committer | Dan Albert <danalbert@google.com> | 2015-02-18 17:21:17 -0800 |
commit | 21c3eaf4cc46aa835531b0cf1e0ca177046a14ed (patch) | |
tree | 7014c4bf0af4ab542d4c45cc515fdc380d935e4c /adb/qemu_tracing.c | |
parent | 2268788ae4b56991a708625009be5531b9d63cd0 (diff) | |
download | system_core-21c3eaf4cc46aa835531b0cf1e0ca177046a14ed.zip system_core-21c3eaf4cc46aa835531b0cf1e0ca177046a14ed.tar.gz system_core-21c3eaf4cc46aa835531b0cf1e0ca177046a14ed.tar.bz2 |
Move emulator tracing into its own file.
adb.c is far too monolithic.
Change-Id: I4a9ee97927e4a96a38ea5859d84efac86bfdfc35
Diffstat (limited to 'adb/qemu_tracing.c')
-rw-r--r-- | adb/qemu_tracing.c | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/adb/qemu_tracing.c b/adb/qemu_tracing.c new file mode 100644 index 0000000..f31eae8 --- /dev/null +++ b/adb/qemu_tracing.c @@ -0,0 +1,69 @@ +/* + * Copyright (C) 2015 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * Implements ADB tracing inside the emulator. + */ + +#include <stdarg.h> + +#include "sysdeps.h" +#include "qemu_tracing.h" + +/* + * Redefine open and write for qemu_pipe.h that contains inlined references + * to those routines. We will redifine them back after qemu_pipe.h inclusion. + */ + +#undef open +#undef write +#define open adb_open +#define write adb_write +#include <hardware/qemu_pipe.h> +#undef open +#undef write +#define open ___xxx_open +#define write ___xxx_write + +/* A handle to adb-debug qemud service in the emulator. */ +int adb_debug_qemu = -1; + +/* Initializes connection with the adb-debug qemud service in the emulator. */ +int adb_qemu_trace_init(void) +{ + char con_name[32]; + + if (adb_debug_qemu >= 0) { + return 0; + } + + /* adb debugging QEMUD service connection request. */ + snprintf(con_name, sizeof(con_name), "qemud:adb-debug"); + adb_debug_qemu = qemu_pipe_open(con_name); + return (adb_debug_qemu >= 0) ? 0 : -1; +} + +void adb_qemu_trace(const char* fmt, ...) +{ + va_list args; + va_start(args, fmt); + char msg[1024]; + + if (adb_debug_qemu >= 0) { + vsnprintf(msg, sizeof(msg), fmt, args); + adb_write(adb_debug_qemu, msg, strlen(msg)); + } +} |