7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync/** @file
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync Function declarations for UEFI "system calls".
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync The following macros are defined in this file:<BR>
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync@verbatim
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync STDIN_FILENO 0 standard input file descriptor
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync STDOUT_FILENO 1 standard output file descriptor
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync STDERR_FILENO 2 standard error file descriptor
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync SEEK_SET 0 set file offset to offset
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync SEEK_CUR 1 set file offset to current plus offset
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync SEEK_END 2 set file offset to EOF plus offset
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync VALID_OPEN 1
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync VALID_CLOSED 0
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync VALID_DONT_CARE -1
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync@endverbatim
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync The following types are defined in this file:<BR>
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync@verbatim
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync struct stat; Structure declared in <sys/stat.h>
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync@endverbatim
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync The following functions are declared in this file:<BR>
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync@verbatim
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync ############### System Calls used in stdio.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync int close (int fd);
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync ssize_t read (int fd, void *buf, size_t n);
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync ssize_t write (int fd, const void *buf, size_t n);
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync int unlink (const char *name);
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync int dup2 (int, int);
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync int rmdir (const char *);
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync int isatty (int);
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync ############### System Calls which are also declared in sys/fcntl.h.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync int open (const char *name, int oflags, int mode);
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync int creat (const char *, mode_t);
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync int fcntl (int, int, ...);
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync ############### System Calls which are also declared in stat.h.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync int mkdir (const char *, mode_t);
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync int fstat (int, struct stat *);
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync int lstat (const char *, struct stat *);
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync int stat (const char *, void *);
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync int chmod (const char *, mode_t);
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync ############### System Calls which are also declared in sys/types.h.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync off_t lseek (int, off_t, int);
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync int truncate (const char *, off_t);
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync int ftruncate (int, off_t); // IEEE Std 1003.1b-93
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync ############### EFI-specific Functions.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync int DeleteOnClose (int fd); Mark an open file to be deleted when closed.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync int FindFreeFD (int MinFd);
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync BOOLEAN ValidateFD (int fd, int IsOpen);
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync@endverbatim
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync Copyright (c) 2010 - 2011, Intel Corporation. All rights reserved.<BR>
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync This program and the accompanying materials are licensed and made available under
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync the terms and conditions of the BSD License that accompanies this distribution.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync The full text of the license may be found at
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync http://opensource.org/licenses/bsd-license.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync**/
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#ifndef _EFI_SYS_CALL_H
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define _EFI_SYS_CALL_H
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#include <sys/EfiCdefs.h>
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#include <sys/types.h>
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsyncstruct stat; /* Structure declared in <sys/stat.h> */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define STDIN_FILENO 0 /**< standard input file descriptor */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define STDOUT_FILENO 1 /**< standard output file descriptor */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define STDERR_FILENO 2 /**< standard error file descriptor */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync/* whence values for lseek(2)
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync Always ensure that these are consistent with <stdio.h> and <unistd.h>!
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync*/
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#ifndef SEEK_SET
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync #define SEEK_SET 0 /**< set file offset to offset */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#endif
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#ifndef SEEK_CUR
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync #define SEEK_CUR 1 /**< set file offset to current plus offset */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#endif
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#ifndef SEEK_END
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync #define SEEK_END 2 /**< set file offset to EOF plus offset */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#endif
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync// Parameters for the ValidateFD function.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define VALID_OPEN 1
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define VALID_CLOSED 0
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define VALID_DONT_CARE -1
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync__BEGIN_DECLS
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync/* EFI versions of BSD system calls used in stdio */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync /** Close a file or device.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync @param[in] fd File Descriptor for the file or device to close.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync @retval 0 Successful completion.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync @retval -1 An error occurred, identified by errno.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync - EBADF fd is not a valid File Descriptor.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync - EINTR The function was interrupted by a signal.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync - EIO An I/O error occurred.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync **/
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync int close (int fd);
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync /** Read from a file or device.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync @param[in] fd File Descriptor for the file or device to read.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync @param[in] buf Buffer to read data into.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync @param[in] N Maximum number of bytes to read.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync @return On successful completion, read returns a non-negative integer
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync indicating the number of bytes actually read. Otherwise, it
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync returns -1 and sets errno as follows:
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync - EAGAIN
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync - EWOULDBLOCK
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync - EBADF
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync - EBADMSG
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync - EINTR
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync - EINVAL
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync - EIO
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync - EISDIR
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync - EOVERFLOW
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync - ECONNRESET
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync - ENOTCONN
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync - ETIMEDOUT
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync - ENOBUFS
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync - ENOMEM
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync - ENXIO
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync **/
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync ssize_t read (int fd, void *buf, size_t n);
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync /** Write to a file or device.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync @param[in] fd File Descriptor for the file or device to write.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync @param[in] buf Buffer to write data from.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync @param[in] N Maximum number of bytes to write.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync @return On successful completion, write returns a non-negative integer
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync indicating the number of bytes actually written. Otherwise, it
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync returns -1 and sets errno as follows:
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync - EAGAIN
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync - EWOULDBLOCK
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync - EBADF
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync - EFBIG
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync - EINTR
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync - EINVAL
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync - EIO
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync - ENOSPC
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync - EPIPE
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync - ERANGE
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync - ECONNRESET
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync - ENOBUFS
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync - ENXIO
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync - ENETDOWN
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync - ENETUNREACH
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync **/
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync ssize_t write (int fd, const void *buf, size_t n);
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync /** Unlink (delete) a file.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync @param[in] name The name of the file to be deleted.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync @retval 0 Successful completion.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync @retval -1 Unable to perform operation, errno contains further
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync information. The file name is unchanged.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync **/
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync int unlink (const char *name);
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync /** Make file descriptor Fd2 a duplicate of file descriptor Fd1.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync @param[in] Fd1 File descriptor to be duplicated
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync @param[in] Fd2 File descriptor to become a duplicate of Fd1.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync @retval 0 Successful completion.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync @retval -1 Unable to perform operation, errno contains further
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync information.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync **/
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync int dup2 (int Fd1, int Fd2);
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync /** Remove a directory.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync @param[in] Path Path to the directory to be deleted.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync @retval 0 Successful completion.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync @retval -1 Unable to perform operation, errno contains further
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync information. The named directory remains unchanged.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync **/
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync int rmdir (const char *Path);
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync /** Determine if fd refers to an interactive terminal device.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync @param[in] fd The file descriptor to be tested.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync @retval 0 The file descriptor, fd, is not for a terminal. errno is set
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync indicating the cause for failure.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync - EBADF fd is not a valid open file descriptor.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync - ENOTTY fd does not refer to a terminal.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync @retval 1 The file descriptor, fd, is for a terminal.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync **/
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync int isatty (int fd);
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync/* These system calls are also declared in sys/fcntl.h */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#ifndef __FCNTL_SYSCALLS_DECLARED
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync #define __FCNTL_SYSCALLS_DECLARED
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync /** Open or create a file named by name.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync The file name may be one of:
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync - An absolute path beginning with '/'.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync - A relative path beginning with "." or ".." or a directory name
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync - A file name
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync - A mapped path which begins with a name followed by a colon, ':'.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync Mapped paths are use to refer to specific mass storage volumes or devices.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync In a Shell-hosted environment, the map command will list valid map names
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync for both file system and block devices. Mapped paths can also refer to
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync devices such as the UEFI console. Supported UEFI console mapped paths are:
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync - stdin: Standard Input (from the System Table)
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync - stdout: Standard Output (from the System Table)
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync - stderr: Standard Error Output (from the System Table)
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync @param[in] name Name of file to open.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync @param[in] oflags Flags as defined in fcntl.h.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync @param[in] mode Access mode to use if creating the file.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync @return Returns -1 on failure, otherwise the file descriptor for the open file.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync **/
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync int open (const char *name, int oflags, int mode);
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync /** Create a new file or rewrite an existing one.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync The creat() function behaves as if it is implemented as follows:
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync int creat(const char *path, mode_t mode)
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync {
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync return open(path, O_WRONLY|O_CREAT|O_TRUNC, mode);
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync }
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync @param[in] Path The name of the file to create.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync @param[in] Mode Access mode (permissions) for the new file.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync @return Returns -1 on failure, otherwise the file descriptor for the open file.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync **/
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync int creat (const char *Path, mode_t Mode);
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync /** File control
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync This function performs the operations described below and defined in <fcntl.h>.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync - F_DUPFD: Return the lowest numbered file descriptor available that is >= the third argument.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync The new file descriptor refers to the same open file as Fd.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync - F_SETFD: Set the file descriptor flags to the value specified by the third argument.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync - F_GETFD: Get the file descriptor flags associated with Fd.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync - F_SETFL: Set the file status flags based upon the value of the third argument.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync - F_GETFL: Get the file status flags and access modes for file Fd.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync @param[in] Fd File descriptor associated with the file to be controlled.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync @param[in] Cmd Command to execute.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync @param[in] ... Additional arguments, as needed by Cmd.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync @return A -1 is returned to indicate failure, otherwise the value
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync returned is positive and depends upon Cmd as follows:
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync - F_DUPFD: A new file descriptor.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync - F_SETFD: files previous file descriptor flags.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync - F_GETFD: The files file descriptor flags.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync - F_SETFL: The old status flags and access mode of the file.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync - F_GETFL: The status flags and access mode of the file.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync **/
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync int fcntl (int Fd, int Cmd, ...);
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#endif // __FCNTL_SYSCALLS_DECLARED
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync/* These system calls are also declared in stat.h */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#ifndef __STAT_SYSCALLS_DECLARED
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync #define __STAT_SYSCALLS_DECLARED
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync int mkdir (const char *, mode_t);
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync int fstat (int, struct stat *);
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync int lstat (const char *, struct stat *);
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync int stat (const char *, struct stat *);
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync int chmod (const char *, mode_t);
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync mode_t umask (mode_t cmask);
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#endif // __STAT_SYSCALLS_DECLARED
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync// These are also declared in sys/types.h
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#ifndef __OFF_T_SYSCALLS_DECLARED
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync #define __OFF_T_SYSCALLS_DECLARED
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync off_t lseek (int, off_t, int);
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync int truncate (const char *, off_t);
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync int ftruncate (int, off_t); // IEEE Std 1003.1b-93
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#endif /* __OFF_T_SYSCALLS_DECLARED */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync/* EFI-specific Functions. */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync /** Mark an open file to be deleted when it is closed.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync @param[in] fd File descriptor for the open file.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync @retval 0 The flag was set successfully.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync @retval -1 An invalid fd was specified.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync **/
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync int DeleteOnClose(int fd);
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync /** Find and reserve a free File Descriptor.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync Returns the first free File Descriptor greater than or equal to the,
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync already validated, fd specified by Minfd.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync @return Returns -1 if there are no free FDs. Otherwise returns the
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync found fd.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync int FindFreeFD (int MinFd);
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync /** Validate that fd refers to a valid file descriptor.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync IsOpen is interpreted as follows:
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync - Positive fd must be OPEN
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync - Zero fd must be CLOSED
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync - Negative fd may be OPEN or CLOSED
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync @retval TRUE fd is VALID
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync @retval FALSE fd is INVALID
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync BOOLEAN ValidateFD (int fd, int IsOpen);
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync/* These system calls don't YET have EFI implementations. */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync int reboot (int, char *);
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync__END_DECLS
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#endif /* _EFI_SYS_CALL_H */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync