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;
+}
