/*===- OSInterface.h - Interface to query OS for functionality ---*- C -*--===*\ // // The LLVM Compiler Infrastructure // // This file was developed by the LLVM research group and is distributed under // the University of Illinois Open Source License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // * * * 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