diff --git a/qemu_tracing/Android.mk b/qemu_tracing/Android.mk
new file mode 100644
index 0000000..8c5bab0
--- /dev/null
+++ b/qemu_tracing/Android.mk
@@ -0,0 +1,4 @@
+# Copyright 2007 The Android Open Source Project
+
+LOCAL_SRC_FILES += qemu_tracing/qemu_tracing.c
+
diff --git a/qemu_tracing/qemu_tracing.c b/qemu_tracing/qemu_tracing.c
new file mode 100644
index 0000000..aacd1aa
--- /dev/null
+++ b/qemu_tracing/qemu_tracing.c
@@ -0,0 +1,71 @@
+#include <stdio.h>
+#include <string.h>
+#include <errno.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+#include <fcntl.h>
+#include <unistd.h>
+
+// This is the pathname to the sysfs file that enables and disables
+// tracing on the qemu emulator.
+#define SYS_QEMU_TRACE_STATE "/sys/qemu_trace/state"
+
+
+// This is the pathname to the sysfs file that adds new (address, symbol)
+// pairs to the trace.
+#define SYS_QEMU_TRACE_SYMBOL "/sys/qemu_trace/symbol"
+
+// The maximum length of a symbol name
+#define MAX_SYMBOL_NAME_LENGTH (4 * 1024)
+
+// Allow space in the buffer for the address plus whitespace.
+#define MAX_BUF_SIZE (MAX_SYMBOL_NAME_LENGTH + 20)
+
+// return 0 on success, or an error if the qemu driver cannot be opened
+int qemu_start_tracing()
+{
+    int fd = open(SYS_QEMU_TRACE_STATE, O_WRONLY);
+    if (fd < 0)
+        return fd;
+    write(fd, "1\n", 2);
+    close(fd);
+    return 0;
+}
+
+int qemu_stop_tracing()
+{
+    int fd = open(SYS_QEMU_TRACE_STATE, O_WRONLY);
+    if (fd < 0)
+        return fd;
+    write(fd, "0\n", 2);
+    close(fd);
+    return 0;
+}
+
+int qemu_add_mapping(unsigned int addr, const char *name)
+{
+    char buf[MAX_BUF_SIZE];
+
+    if (strlen(name) > MAX_SYMBOL_NAME_LENGTH)
+        return EINVAL;
+    int fd = open(SYS_QEMU_TRACE_SYMBOL, O_WRONLY);
+    if (fd < 0)
+        return fd;
+    sprintf(buf, "%x %s\n", addr, name);
+    write(fd, buf, strlen(buf));
+    close(fd);
+    return 0;
+}
+
+int qemu_remove_mapping(unsigned int addr)
+{
+    char buf[MAX_BUF_SIZE];
+
+    int fd = open(SYS_QEMU_TRACE_SYMBOL, O_WRONLY);
+    if (fd < 0)
+        return fd;
+    sprintf(buf, "%x\n", addr);
+    write(fd, buf, strlen(buf));
+    close(fd);
+    return 0;
+}
