mirror of https://github.com/torvalds/linux.git
70 lines
1.3 KiB
C
70 lines
1.3 KiB
C
/* SPDX-License-Identifier: LGPL-2.1 OR MIT */
|
|
/*
|
|
* fcntl definition for NOLIBC
|
|
* Copyright (C) 2017-2021 Willy Tarreau <w@1wt.eu>
|
|
*/
|
|
|
|
/* make sure to include all global symbols */
|
|
#include "nolibc.h"
|
|
|
|
#ifndef _NOLIBC_FCNTL_H
|
|
#define _NOLIBC_FCNTL_H
|
|
|
|
#include "arch.h"
|
|
#include "types.h"
|
|
#include "sys.h"
|
|
|
|
/*
|
|
* int openat(int dirfd, const char *path, int flags[, mode_t mode]);
|
|
*/
|
|
|
|
static __attribute__((unused))
|
|
int sys_openat(int dirfd, const char *path, int flags, mode_t mode)
|
|
{
|
|
return my_syscall4(__NR_openat, dirfd, path, flags, mode);
|
|
}
|
|
|
|
static __attribute__((unused))
|
|
int openat(int dirfd, const char *path, int flags, ...)
|
|
{
|
|
mode_t mode = 0;
|
|
|
|
if (flags & O_CREAT) {
|
|
va_list args;
|
|
|
|
va_start(args, flags);
|
|
mode = va_arg(args, mode_t);
|
|
va_end(args);
|
|
}
|
|
|
|
return __sysret(sys_openat(dirfd, path, flags, mode));
|
|
}
|
|
|
|
/*
|
|
* int open(const char *path, int flags[, mode_t mode]);
|
|
*/
|
|
|
|
static __attribute__((unused))
|
|
int sys_open(const char *path, int flags, mode_t mode)
|
|
{
|
|
return my_syscall4(__NR_openat, AT_FDCWD, path, flags, mode);
|
|
}
|
|
|
|
static __attribute__((unused))
|
|
int open(const char *path, int flags, ...)
|
|
{
|
|
mode_t mode = 0;
|
|
|
|
if (flags & O_CREAT) {
|
|
va_list args;
|
|
|
|
va_start(args, flags);
|
|
mode = va_arg(args, mode_t);
|
|
va_end(args);
|
|
}
|
|
|
|
return __sysret(sys_open(path, flags, mode));
|
|
}
|
|
|
|
#endif /* _NOLIBC_FCNTL_H */
|