aboutsummaryrefslogtreecommitdiff
path: root/tools/llee/OSInterface.h
diff options
context:
space:
mode:
Diffstat (limited to 'tools/llee/OSInterface.h')
-rw-r--r--tools/llee/OSInterface.h48
1 files changed, 48 insertions, 0 deletions
diff --git a/tools/llee/OSInterface.h b/tools/llee/OSInterface.h
new file mode 100644
index 0000000000..18fe0da13a
--- /dev/null
+++ b/tools/llee/OSInterface.h
@@ -0,0 +1,48 @@
+/*===- OSInterface.h - Interface to query OS for functionality ---*- C -*--===*\
+ * *
+ * This file defines the prototype interface that we will expect operating *
+ * systems to implement if they wish to support offline cachine. *
+ * *
+\*===----------------------------------------------------------------------===*/
+
+#ifndef OS_INTERFACE_H
+#define OS_INTERFACE_H
+
+#include "Config/sys/types.h"
+
+struct stat;
+
+/*
+ * llvmStat - equivalent to stat(3), except the key may not necessarily
+ * correspond to a file by that name, implementation is up to the OS.
+ * Values returned in buf are similar as they are in Unix.
+ */
+void llvmStat(const char *key, struct stat *buf);
+
+/*
+ * llvmWriteFile - implements a 'save' of a file in the OS. 'key' may not
+ * necessarily map to a file of the same name.
+ * Returns:
+ * 0 - success
+ * non-zero - error
+ */
+int llvmWriteFile(const char *key, const void *data, size_t len);
+
+/*
+ * llvmLoadFile - tells the OS to load data corresponding to a particular key
+ * somewhere into memory.
+ * Returns:
+ * 0 - failure
+ * non-zero - address of loaded file
+ *
+ * Value of size is the length of data loaded into memory.
+ */
+void* llvmReadFile(const char *key, size_t *size);
+
+/*
+ * llvmExecve - execute a file from cache. This is a temporary proof-of-concept
+ * because we do not relocate what we can read from disk.
+ */
+int llvmExecve(const char *filename, char *const argv[], char *const envp[]);
+
+#endif