summaryrefslogtreecommitdiff
path: root/StdLib/Include/sys/fcntl.h
diff options
context:
space:
mode:
Diffstat (limited to 'StdLib/Include/sys/fcntl.h')
-rw-r--r--StdLib/Include/sys/fcntl.h158
1 files changed, 103 insertions, 55 deletions
diff --git a/StdLib/Include/sys/fcntl.h b/StdLib/Include/sys/fcntl.h
index 8b691b19f8..d41af5ce11 100644
--- a/StdLib/Include/sys/fcntl.h
+++ b/StdLib/Include/sys/fcntl.h
@@ -2,11 +2,11 @@
This file includes the definitions for open and fcntl described by POSIX
for <fcntl.h>; it also includes related kernel definitions.
- Copyright (c) 2010, Intel Corporation. All rights reserved.<BR>
+ Copyright (c) 2010 - 2011, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials are licensed and made
available under the terms and conditions of the BSD License which
accompanies this distribution. The full text of the license may be found
- at http://opensource.org/licenses/bsd-license.php.
+ at http://opensource.org/licenses/bsd-license.
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
@@ -54,71 +54,69 @@
#include <sys/stat.h>
-/*
- * File status flags: these are used by open(2), fcntl(2).
- * They are also used (indirectly) in the kernel file structure f_flags,
- * which is a superset of the open/fcntl flags.
- * Open/fcntl flags begin with O_; kernel-internal flags begin with F.
- */
+/** File status flags used by open(2), fcntl(2).
+ They are also used (indirectly) in the kernel file structure f_flags,
+ which is a superset of the open/fcntl flags.
+ Open/fcntl flags begin with O_; kernel-internal flags begin with F.
+@{
+**/
/* open-only flags */
-#define O_RDONLY 0x00000000 /* open for reading only */
-#define O_WRONLY 0x00000001 /* open for writing only */
-#define O_RDWR 0x00000002 /* open for reading and writing */
-#define O_ACCMODE 0x00000003 /* mask for above modes */
-
-/*
- * Kernel encoding of open mode; separate read and write bits that are
- * independently testable: 1 greater than the above.
- */
-#define FREAD 0x00000001
-#define FWRITE 0x00000002
-#define O_NONBLOCK 0x00000004 /* no delay */
-#define O_APPEND 0x00000008 /* set append mode */
-#define O_CREAT 0x00000200 /* create if nonexistent */
-#define O_TRUNC 0x00000400 /* truncate to zero length */
-#define O_EXCL 0x00000800 /* error if already exists */
+#define O_RDONLY 0x00000000 ///< open for reading only
+#define O_WRONLY 0x00000001 ///< open for writing only
+#define O_RDWR 0x00000002 ///< open for reading and writing
+#define O_ACCMODE 0x00000003 ///< mask for above modes
+
+#define O_NONBLOCK 0x00000004 ///< no delay
+#define O_APPEND 0x00000008 ///< set append mode
+#define O_CREAT 0x00000200 ///< create if nonexistent
+#define O_TRUNC 0x00000400 ///< truncate to zero length
+#define O_EXCL 0x00000800 ///< error if already exists
+/// @}
//#define O_DIRECT 0x00080000 /* direct I/O hint */
-#define O_SETMASK 0x0000000F /* Flags modifiable by F_SETFD (fcntl) */
+#define O_SETMASK 0x0000000F ///< Flags modifiable by F_SETFD (fcntl)
/*
* Constants used for fcntl(2)
*/
-/* command values */
-#define F_DUPFD 0 /* duplicate file descriptor */
-#define F_GETFD 1 /* get file descriptor flags */
-#define F_SETFD 2 /* set file descriptor flags */
-#define F_GETFL 3 /* get file status flags */
-#define F_SETFL 4 /* set file status flags */
-#define F_GETOWN 5 /* get SIGIO/SIGURG proc/pgrp */
-#define F_SETOWN 6 /* set SIGIO/SIGURG proc/pgrp */
-#define F_GETLK 7 /* get record locking information */
-#define F_SETLK 8 /* set record locking information */
-#define F_SETLKW 9 /* F_SETLK; wait if blocked */
-#define F_CLOSEM 10 /* close all fds >= to the one given */
-#define F_MAXFD 11 /* return the max open fd */
-
-/* file descriptor flags (F_GETFD, F_SETFD) */
-#define FD_CLOEXEC 1 /* close-on-exec flag */
-
-/* record locking flags (F_GETLK, F_SETLK, F_SETLKW) */
-#define F_RDLCK 1 /* shared or read lock */
-#define F_UNLCK 2 /* unlock */
-#define F_WRLCK 3 /* exclusive or write lock */
-
-/* Constants for fcntl's passed to the underlying fs - like ioctl's. */
+/** command values. @{ **/
+#define F_DUPFD 0 ///< duplicate file descriptor
+#define F_GETFD 1 ///< get file descriptor flags
+#define F_SETFD 2 ///< set file descriptor flags
+#define F_GETFL 3 ///< get file status flags
+#define F_SETFL 4 ///< set file status flags
+#define F_GETOWN 5 ///< get SIGIO/SIGURG proc/pgrp
+#define F_SETOWN 6 ///< set SIGIO/SIGURG proc/pgrp
+#define F_GETLK 7 ///< get record locking information
+#define F_SETLK 8 ///< set record locking information
+#define F_SETLKW 9 ///< F_SETLK; wait if blocked
+#define F_CLOSEM 10 ///< close all fds >= to the one given
+#define F_MAXFD 11 ///< return the max open fd
+/// @}
+
+/** file descriptor flags (F_GETFD, F_SETFD). **/
+#define FD_CLOEXEC 1 ///< close-on-exec flag
+
+/** record locking flags (F_GETLK, F_SETLK, F_SETLKW). @{ **/
+#define F_RDLCK 1 ///< shared or read lock
+#define F_UNLCK 2 ///< unlock
+#define F_WRLCK 3 ///< exclusive or write lock
+/// @}
+
+/** Constants for fcntl's passed to the underlying fs - like ioctl's. @{ **/
#define F_PARAM_MASK 0xfff
#define F_PARAM_LEN(x) (((x) >> 16) & F_PARAM_MASK)
#define F_PARAM_MAX 4095
-#define F_FSCTL (int)0x80000000 /* This fcntl goes to the fs */
-#define F_FSVOID (int)0x40000000 /* no parameters */
-#define F_FSOUT (int)0x20000000 /* copy out parameter */
-#define F_FSIN (int)0x10000000 /* copy in parameter */
+#define F_FSCTL (int)0x80000000 ///< This fcntl goes to the fs
+#define F_FSVOID (int)0x40000000 ///< no parameters
+#define F_FSOUT (int)0x20000000 ///< copy out parameter
+#define F_FSIN (int)0x10000000 ///< copy in parameter
#define F_FSINOUT (F_FSIN | F_FSOUT)
-#define F_FSDIRMASK (int)0x70000000 /* mask for IN/OUT/VOID */
-#define F_FSPRIV (int)0x00008000 /* command is fs-specific */
+#define F_FSDIRMASK (int)0x70000000 ///< mask for IN/OUT/VOID
+#define F_FSPRIV (int)0x00008000 ///< command is fs-specific
+/// @}
/* Always ensure that these are consistent with <stdio.h> and <unistd.h>! */
#ifndef SEEK_SET
@@ -136,8 +134,58 @@
__BEGIN_DECLS
#ifndef __FCNTL_SYSCALLS_DECLARED
#define __FCNTL_SYSCALLS_DECLARED
- int open(const char *, int, int );
+
+ /** The open() function establishes the connection between a file and a file
+ descriptor. It creates an open file description that refers to a file
+ and a file descriptor that refers to that open file description. The file
+ descriptor is used by other I/O functions to refer to that file.
+
+ The open() function returns a file descriptor for the named file that is
+ the lowest file descriptor not currently open for that process. The open
+ file description is new, and therefore the file descriptor shall not
+ share it with any other process in the system.
+
+ The file offset used to mark the current position within the file is set
+ to the beginning of the file.
+
+ The file status flags and file access modes of the open file description
+ are set according to the value of oflags.
+
+ Values for oflags are constructed by a bitwise-inclusive OR of flags from
+ the following list, defined in <fcntl.h>. Applications shall specify
+ exactly one of { O_RDONLY, O_RDWR, O_WRONLY } in the value of oflags.
+ Any combination of { O_NONBLOCK, O_APPEND, O_CREAT, O_TRUNC, O_EXCL } may
+ also be specified in oflags.
+
+ Values for mode specify the access permissions for newly created files.
+
+ @param[in] Path The path argument points to a pathname naming the
+ object to be opened.
+ @param[in] oflags File status flags and file access modes of the
+ open file description.
+ @param[in] mode File access permission bits as defined in
+ <sys/stat.h>.
+
+ @return Upon successful completion, open() opens the file and returns
+ a non-negative integer representing the lowest numbered
+ unused file descriptor. Otherwise, open returns -1 and sets
+ errno to indicate the error. If a negative value is
+ returned, no files are created or modified.
+
+ @retval EMFILE No file descriptors available -- Max number already open.
+ @retval EINVAL Bad value specified for oflags or mode.
+ @retval ENOMEM Failure allocating memory for internal buffers.
+ @retval EEXIST File exists and open attempted with (O_EXCL | O_CREAT) set.
+ @retval EIO UEFI failure. Check value in EFIerrno.
+ **/
+ int open(const char *Path, int oflags, int mode);
+
+ /**
+ **/
int creat(const char *, mode_t);
+
+ /**
+ **/
int fcntl(int, int, ...);
#endif // __FCNTL_SYSCALLS_DECLARED
__END_DECLS