mirror of
https://github.com/espressif/ESP8266_RTOS_SDK.git
synced 2025-08-06 15:15:15 +08:00
132 lines
4.8 KiB
C
132 lines
4.8 KiB
C
/* Customer ID=7011; Build=0x2b6f6; Copyright (c) 1998-2006 Tensilica Inc. ALL RIGHTS RESERVED.
|
|
|
|
Redistribution and use in source and binary forms, with or without
|
|
modification, are permitted provided that the following conditions are met:
|
|
|
|
1. Redistributions of source code must retain the above copyright
|
|
notice, this list of conditions and the following disclaimer.
|
|
|
|
2. Redistributions in binary form must reproduce the above copyright
|
|
notice, this list of conditions and the following disclaimer in the
|
|
documentation and/or other materials provided with the distribution.
|
|
|
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
|
|
IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
|
TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
|
|
PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL TENSILICA
|
|
INCORPORATED BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
|
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
|
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
|
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
|
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
|
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */
|
|
|
|
#ifndef _FCNTL_
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
#define _FCNTL_
|
|
#include <_ansi.h>
|
|
#include <xtensa/simcall-fcntl.h>
|
|
#define _FOPEN (-1) /* from sys/file.h, kernel use only */
|
|
#define _FREAD 0x0001 /* read enabled */
|
|
#define _FWRITE 0x0002 /* write enabled */
|
|
#define _FAPPEND _SIMC_O_APPEND /* append */
|
|
#define _FCREAT _SIMC_O_CREAT /* open with file create */
|
|
#define _FTRUNC _SIMC_O_TRUNC /* open with truncation */
|
|
#define _FEXCL _SIMC_O_EXCL /* error on open if file exists */
|
|
#define _FNONBLOCK _SIMC_O_NONBLOCK /* non blocking I/O (POSIX style) */
|
|
#define _FNDELAY _FNONBLOCK /* non blocking I/O (4.2 style) */
|
|
|
|
#define O_ACCMODE (O_RDONLY|O_WRONLY|O_RDWR)
|
|
|
|
/*
|
|
* Flag values for open(2) and fcntl(2)
|
|
* The kernel adds 1 to the open modes to turn it into some
|
|
* combination of FREAD and FWRITE.
|
|
*/
|
|
#define O_RDONLY 0 /* +1 == FREAD */
|
|
#define O_WRONLY 1 /* +1 == FWRITE */
|
|
#define O_RDWR 2 /* +1 == FREAD|FWRITE */
|
|
#define O_APPEND _FAPPEND
|
|
#define O_CREAT _FCREAT
|
|
#define O_TRUNC _FTRUNC
|
|
#define O_EXCL _FEXCL
|
|
#define O_NDELAY _FNDELAY
|
|
#define O_NONBLOCK _FNONBLOCK
|
|
|
|
#define _FBINARY _SIMC_O_BINARY
|
|
#define _FTEXT _SIMC_O_TEXT
|
|
|
|
#define O_BINARY _FBINARY
|
|
#define O_TEXT _FTEXT
|
|
|
|
#ifndef _POSIX_SOURCE
|
|
|
|
/*
|
|
* Flags that work for fcntl(fd, F_SETFL, FXXXX)
|
|
*/
|
|
#define FAPPEND _FAPPEND
|
|
#define FNONBIO _FNONBLOCK /* XXX fix to be NONBLOCK everywhere */
|
|
#define FNDELAY _FNDELAY
|
|
|
|
/*
|
|
* Flags that are disallowed for fcntl's (FCNTLCANT);
|
|
* used for opens, internal state, or locking.
|
|
*/
|
|
#define FREAD _FREAD
|
|
#define FWRITE _FWRITE
|
|
|
|
/*
|
|
* The rest of the flags, used only for opens
|
|
*/
|
|
#define FOPEN _FOPEN
|
|
#define FCREAT _FCREAT
|
|
#define FTRUNC _FTRUNC
|
|
#define FEXCL _FEXCL
|
|
|
|
#endif /* !_POSIX_SOURCE */
|
|
|
|
/* XXX close on exec request; must match UF_EXCLOSE in user.h */
|
|
#define FD_CLOEXEC 1 /* posix */
|
|
|
|
/* fcntl(2) requests */
|
|
/* TENSILICA: ISS semihosting does not support fcntl() but it is useful to
|
|
* define these anyway (e.g., to compile some versions of GNU libiberty). */
|
|
#define F_DUPFD 0 /* Duplicate fildes */
|
|
#define F_GETFD 1 /* Get fildes flags (close on exec) */
|
|
#define F_SETFD 2 /* Set fildes flags (close on exec) */
|
|
#define F_GETFL 3 /* Get file flags */
|
|
#define F_SETFL 4 /* Set file flags */
|
|
#ifndef _POSIX_SOURCE
|
|
#define F_GETOWN 5 /* Get owner - for ASYNC */
|
|
#define F_SETOWN 6 /* Set owner - for ASYNC */
|
|
#endif /* !_POSIX_SOURCE */
|
|
#define F_GETLK 7 /* Get record-locking information */
|
|
#define F_SETLK 8 /* Set or Clear a record-lock (Non-Blocking) */
|
|
#define F_SETLKW 9 /* Set or Clear a record-lock (Blocking) */
|
|
#ifndef _POSIX_SOURCE
|
|
#define F_RGETLK 10 /* Test a remote lock to see if it is blocked */
|
|
#define F_RSETLK 11 /* Set or unlock a remote lock */
|
|
#define F_CNVT 12 /* Convert a fhandle to an open fd */
|
|
#define F_RSETLKW 13 /* Set or Clear remote record-lock(Blocking) */
|
|
#endif /* !_POSIX_SOURCE */
|
|
|
|
#include <sys/types.h>
|
|
#include <sys/stat.h> /* sigh. for the mode bits for open/creat */
|
|
|
|
extern int open _PARAMS ((const char *, int, ...));
|
|
extern int creat _PARAMS ((const char *, mode_t));
|
|
extern int fcntl _PARAMS ((int, int, ...));
|
|
|
|
/* Provide _<systemcall> prototypes for functions provided by some versions
|
|
of newlib. */
|
|
extern int _open _PARAMS ((const char *, int, ...));
|
|
extern int _fcntl _PARAMS ((int, int, ...));
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
#endif /* !_FCNTL_ */
|