blob: 75f2a8ec3460f6b82ccc70a6a38623064c1cb154 [file] [log] [blame]
// NACL MOD TRACK "third_party/chromium-host/src/native_client/src/trusted/service_runtime/include/sys/fcntl.h"
/*
* Copyright (c) 2011 The Native Client Authors. All rights reserved.
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
/*
* NaCl Service Runtime API.
*/
#ifndef NATIVE_CLIENT_SRC_TRUSTED_SERVICE_RUNTIME_INCLUDE_SYS_FCNTL_H_
#define NATIVE_CLIENT_SRC_TRUSTED_SERVICE_RUNTIME_INCLUDE_SYS_FCNTL_H_
#ifdef __native_client__
#include <sys/types.h>
#endif
/* from bits/fcntl.h */
#define NACL_ABI_O_ACCMODE 0003
#define NACL_ABI_O_RDONLY 00
#define NACL_ABI_O_WRONLY 01
#define NACL_ABI_O_RDWR 02
#define NACL_ABI_O_CREAT 0100 /* not fcntl */
#define NACL_ABI_O_TRUNC 01000 /* not fcntl */
#define NACL_ABI_O_APPEND 02000
/*
* Features not implemented by NaCl, but required by the newlib build.
*/
#define NACL_ABI_O_EXCL 0200
#define NACL_ABI_O_NONBLOCK 04000
#define NACL_ABI_O_NDELAY NACL_ABI_O_NONBLOCK
#define NACL_ABI_O_SYNC 010000
#define NACL_ABI_O_FSYNC NACL_ABI_O_SYNC
#define NACL_ABI_O_ASYNC 020000
/* XXX close on exec request; must match UF_EXCLOSE in user.h */
#define FD_CLOEXEC 1 /* posix */
/* fcntl(2) requests */
#define NACL_ABI_F_DUPFD 0 /* Duplicate fildes */
#define NACL_ABI_F_GETFD 1 /* Get fildes flags (close on exec) */
#define NACL_ABI_F_SETFD 2 /* Set fildes flags (close on exec) */
#define NACL_ABI_F_GETFL 3 /* Get file flags */
#define NACL_ABI_F_SETFL 4 /* Set file flags */
#ifndef _POSIX_SOURCE
#define NACL_ABI_F_GETOWN 5 /* Get owner - for ASYNC */
#define NACL_ABI_F_SETOWN 6 /* Set owner - for ASYNC */
#endif /* !_POSIX_SOURCE */
#define NACL_ABI_F_GETLK 7 /* Get record-locking information */
#define NACL_ABI_F_SETLK 8 /* Set or Clear a record-lock (Non-Blocking) */
#define NACL_ABI_F_SETLKW 9 /* Set or Clear a record-lock (Blocking) */
#ifndef _POSIX_SOURCE
#define NACL_ABI_F_RGETLK 10 /* Test a remote lock to see if it is blocked */
#define NACL_ABI_F_RSETLK 11 /* Set or unlock a remote lock */
#define NACL_ABI_F_CNVT 12 /* Convert a fhandle to an open fd */
#define NACL_ABI_F_RSETLKW 13 /* Set or Clear remote record-lock(Blocking) */
#endif /* !_POSIX_SOURCE */
/* fcntl(2) flags (l_type field of flock structure) */
#define NACL_ABI_F_RDLCK 1 /* read lock */
#define NACL_ABI_F_WRLCK 2 /* write lock */
#define NACL_ABI_F_UNLCK 3 /* remove lock(s) */
#ifndef _POSIX_SOURCE
#define NACL_ABI_F_UNLKSYS 4 /* remove remote locks for a given system */
#endif /* !_POSIX_SOURCE */
#ifdef __native_client__
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
extern int open(const char *file, int oflag, ...);
extern int fcntl(int, int, ...);
#ifdef __cplusplus
} /* extern "C" */
#endif /* __cplusplus */
#endif /* __native_client__ */
#endif