8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner/*
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner * CDDL HEADER START
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner *
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner * The contents of this file are subject to the terms of the
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner * Common Development and Distribution License (the "License").
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner * You may not use this file except in compliance with the License.
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner *
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner * or http://www.opensolaris.org/os/licensing.
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner * See the License for the specific language governing permissions
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner * and limitations under the License.
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner *
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner * When distributing Covered Code, include this CDDL HEADER in each
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner * If applicable, add the following below this CDDL HEADER, with the
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner * fields enclosed by brackets "[]" replaced with your own identifying
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner * information: Portions Copyright [yyyy] [name of copyright owner]
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner *
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner * CDDL HEADER END
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner */
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner/*
80e2ca8596e3435bc3b76f3c597833ea0a87f85e * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner */
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner#include <stdio.h>
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner#include <stdlib.h>
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner#include <unistd.h>
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner#include <fcntl.h>
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner#include <utime.h>
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner#include <errno.h>
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner#include <sys/types.h>
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner#include <sys/stat.h>
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner#include <sys/time.h>
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner#include <sys/poll.h>
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner#include <sys/file.h>
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner#include <sys/syscall.h>
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner#include <s10_brand.h>
80e2ca8596e3435bc3b76f3c597833ea0a87f85e#include <brand_misc.h>
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner#include <s10_misc.h>
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner/*
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner * This file contains the emulation functions for all of the
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner * obsolete system call traps that existed in Solaris 10 but
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner * that have been deleted in the current version of Solaris.
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner */
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulknerstatic int
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkners10_fstatat(sysret_t *rval,
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner int fd, const char *path, struct stat *sb, int flags)
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner{
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner return (__systemcall(rval, SYS_fstatat + 1024,
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner fd, path, sb, flags));
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner}
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulknerint
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkners10_stat(sysret_t *rval, const char *path, struct stat *sb)
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner{
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner return (__systemcall(rval, SYS_fstatat + 1024,
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner AT_FDCWD, path, sb, 0));
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner}
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulknerint
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkners10_lstat(sysret_t *rval, const char *path, struct stat *sb)
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner{
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner return (__systemcall(rval, SYS_fstatat + 1024,
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner AT_FDCWD, path, sb, AT_SYMLINK_NOFOLLOW));
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner}
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulknerint
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkners10_fstat(sysret_t *rval, int filedes, struct stat *sb)
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner{
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner return (__systemcall(rval, SYS_fstatat + 1024,
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner filedes, NULL, sb, 0));
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner}
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner#if !defined(_LP64)
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulknerstatic int
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkners10_fstatat64(sysret_t *rval,
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner int fd, const char *path, struct stat64 *sb, int flags)
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner{
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner return (__systemcall(rval, SYS_fstatat64 + 1024,
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner fd, path, sb, flags));
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner}
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulknerint
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkners10_stat64(sysret_t *rval, const char *path, struct stat64 *sb)
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner{
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner return (__systemcall(rval, SYS_fstatat64 + 1024,
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner AT_FDCWD, path, sb, 0));
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner}
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulknerint
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkners10_lstat64(sysret_t *rval, const char *path, struct stat64 *sb)
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner{
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner return (__systemcall(rval, SYS_fstatat64 + 1024,
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner AT_FDCWD, path, sb, AT_SYMLINK_NOFOLLOW));
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner}
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulknerint
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkners10_fstat64(sysret_t *rval, int filedes, struct stat64 *sb)
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner{
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner return (__systemcall(rval, SYS_fstatat64 + 1024,
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner filedes, NULL, sb, 0));
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner}
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner#endif /* !_LP64 */
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulknerstatic int
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkners10_openat(sysret_t *rval, int fd, const char *path, int oflag, mode_t mode)
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner{
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner return (__systemcall(rval, SYS_openat + 1024,
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner fd, path, oflag, mode));
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner}
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulknerint
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkners10_open(sysret_t *rval, char *path, int oflag, mode_t mode)
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner{
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner return (__systemcall(rval, SYS_openat + 1024,
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner AT_FDCWD, path, oflag, mode));
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner}
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulknerint
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkners10_creat(sysret_t *rval, char *path, mode_t mode)
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner{
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner return (__systemcall(rval, SYS_openat + 1024,
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner AT_FDCWD, path, O_WRONLY | O_CREAT | O_TRUNC, mode));
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner}
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner#if !defined(_LP64)
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulknerstatic int
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkners10_openat64(sysret_t *rval, int fd, const char *path, int oflag, mode_t mode)
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner{
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner return (__systemcall(rval, SYS_openat64 + 1024,
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner fd, path, oflag, mode));
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner}
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulknerint
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkners10_open64(sysret_t *rval, char *path, int oflag, mode_t mode)
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner{
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner return (__systemcall(rval, SYS_openat64 + 1024,
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner AT_FDCWD, path, oflag, mode));
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner}
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulknerint
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkners10_creat64(sysret_t *rval, char *path, mode_t mode)
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner{
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner return (__systemcall(rval, SYS_openat64 + 1024,
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner AT_FDCWD, path, O_WRONLY | O_CREAT | O_TRUNC, mode));
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner}
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner#endif /* !_LP64 */
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulknerint
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkners10_fork1(sysret_t *rval)
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner{
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner return (__systemcall(rval, SYS_forksys + 1024, 0, 0));
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner}
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulknerint
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkners10_forkall(sysret_t *rval)
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner{
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner return (__systemcall(rval, SYS_forksys + 1024, 1, 0));
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner}
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulknerint
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkners10_dup(sysret_t *rval, int fd)
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner{
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner return (__systemcall(rval, SYS_fcntl + 1024, fd, F_DUPFD, 0));
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner}
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulknerint
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkners10_poll(sysret_t *rval, struct pollfd *fds, nfds_t nfd, int timeout)
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner{
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner timespec_t ts;
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner timespec_t *tsp;
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner if (timeout < 0)
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner tsp = NULL;
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner else {
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner ts.tv_sec = timeout / MILLISEC;
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner ts.tv_nsec = (timeout % MILLISEC) * MICROSEC;
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner tsp = &ts;
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner }
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner return (__systemcall(rval, SYS_pollsys + 1024,
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner fds, nfd, tsp, NULL));
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner}
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulknerint
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkners10_lwp_mutex_lock(sysret_t *rval, void *mp)
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner{
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner return (__systemcall(rval, SYS_lwp_mutex_timedlock + 1024,
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner mp, NULL, 0));
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner}
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulknerint
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkners10_lwp_sema_wait(sysret_t *rval, void *sp)
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner{
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner return (__systemcall(rval, SYS_lwp_sema_timedwait + 1024,
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner sp, NULL, 0));
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner}
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner
794f0adb050e571bbfde4d2a19b9f88b852079ddRoger A. Faulknerint
794f0adb050e571bbfde4d2a19b9f88b852079ddRoger A. Faulkners10_chmod(sysret_t *rval, const char *name, mode_t mode)
794f0adb050e571bbfde4d2a19b9f88b852079ddRoger A. Faulkner{
794f0adb050e571bbfde4d2a19b9f88b852079ddRoger A. Faulkner return (__systemcall(rval, SYS_fchmodat + 1024,
794f0adb050e571bbfde4d2a19b9f88b852079ddRoger A. Faulkner AT_FDCWD, name, mode, 0));
794f0adb050e571bbfde4d2a19b9f88b852079ddRoger A. Faulkner}
794f0adb050e571bbfde4d2a19b9f88b852079ddRoger A. Faulkner
794f0adb050e571bbfde4d2a19b9f88b852079ddRoger A. Faulknerint
794f0adb050e571bbfde4d2a19b9f88b852079ddRoger A. Faulkners10_fchmod(sysret_t *rval, int filedes, mode_t mode)
794f0adb050e571bbfde4d2a19b9f88b852079ddRoger A. Faulkner{
794f0adb050e571bbfde4d2a19b9f88b852079ddRoger A. Faulkner return (__systemcall(rval, SYS_fchmodat + 1024,
794f0adb050e571bbfde4d2a19b9f88b852079ddRoger A. Faulkner filedes, NULL, mode, 0));
794f0adb050e571bbfde4d2a19b9f88b852079ddRoger A. Faulkner}
794f0adb050e571bbfde4d2a19b9f88b852079ddRoger A. Faulkner
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulknerstatic int
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkners10_fchownat(sysret_t *rval,
794f0adb050e571bbfde4d2a19b9f88b852079ddRoger A. Faulkner int fd, const char *name, uid_t uid, gid_t gid, int flag)
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner{
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner return (__systemcall(rval, SYS_fchownat + 1024,
794f0adb050e571bbfde4d2a19b9f88b852079ddRoger A. Faulkner fd, name, uid, gid, flag));
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner}
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulknerint
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkners10_chown(sysret_t *rval, const char *name, uid_t uid, gid_t gid)
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner{
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner return (__systemcall(rval, SYS_fchownat + 1024,
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner AT_FDCWD, name, uid, gid, 0));
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner}
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulknerint
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkners10_lchown(sysret_t *rval, const char *name, uid_t uid, gid_t gid)
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner{
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner return (__systemcall(rval, SYS_fchownat + 1024,
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner AT_FDCWD, name, uid, gid, AT_SYMLINK_NOFOLLOW));
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner}
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulknerint
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkners10_fchown(sysret_t *rval, int filedes, uid_t uid, gid_t gid)
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner{
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner return (__systemcall(rval, SYS_fchownat + 1024,
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner filedes, NULL, uid, gid, 0));
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner}
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner
794f0adb050e571bbfde4d2a19b9f88b852079ddRoger A. Faulknerint
794f0adb050e571bbfde4d2a19b9f88b852079ddRoger A. Faulkners10_mkdir(sysret_t *rval, const char *dname, int dmode)
794f0adb050e571bbfde4d2a19b9f88b852079ddRoger A. Faulkner{
794f0adb050e571bbfde4d2a19b9f88b852079ddRoger A. Faulkner return (__systemcall(rval, SYS_mkdirat + 1024,
794f0adb050e571bbfde4d2a19b9f88b852079ddRoger A. Faulkner AT_FDCWD, dname, dmode));
794f0adb050e571bbfde4d2a19b9f88b852079ddRoger A. Faulkner}
794f0adb050e571bbfde4d2a19b9f88b852079ddRoger A. Faulkner
794f0adb050e571bbfde4d2a19b9f88b852079ddRoger A. Faulknerint
794f0adb050e571bbfde4d2a19b9f88b852079ddRoger A. Faulkners10_mknod(sysret_t *rval, const char *fname, int fmode, dev_t dev)
794f0adb050e571bbfde4d2a19b9f88b852079ddRoger A. Faulkner{
794f0adb050e571bbfde4d2a19b9f88b852079ddRoger A. Faulkner return (__systemcall(rval, SYS_mknodat + 1024,
794f0adb050e571bbfde4d2a19b9f88b852079ddRoger A. Faulkner AT_FDCWD, fname, fmode, dev));
794f0adb050e571bbfde4d2a19b9f88b852079ddRoger A. Faulkner}
794f0adb050e571bbfde4d2a19b9f88b852079ddRoger A. Faulkner
794f0adb050e571bbfde4d2a19b9f88b852079ddRoger A. Faulknerint
794f0adb050e571bbfde4d2a19b9f88b852079ddRoger A. Faulkners10_link(sysret_t *rval, const char *path1, const char *path2)
794f0adb050e571bbfde4d2a19b9f88b852079ddRoger A. Faulkner{
794f0adb050e571bbfde4d2a19b9f88b852079ddRoger A. Faulkner return (__systemcall(rval, SYS_linkat + 1024,
794f0adb050e571bbfde4d2a19b9f88b852079ddRoger A. Faulkner AT_FDCWD, path1, AT_FDCWD, path2, 0));
794f0adb050e571bbfde4d2a19b9f88b852079ddRoger A. Faulkner}
794f0adb050e571bbfde4d2a19b9f88b852079ddRoger A. Faulkner
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulknerstatic int
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkners10_unlinkat(sysret_t *rval, int fd, const char *name, int flags)
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner{
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner return (__systemcall(rval, SYS_unlinkat + 1024,
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner fd, name, flags));
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner}
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulknerint
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkners10_unlink(sysret_t *rval, const char *name)
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner{
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner return (__systemcall(rval, SYS_unlinkat + 1024,
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner AT_FDCWD, name, 0));
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner}
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulknerint
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkners10_rmdir(sysret_t *rval, const char *name)
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner{
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner return (__systemcall(rval, SYS_unlinkat + 1024,
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner AT_FDCWD, name, AT_REMOVEDIR));
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner}
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulknerstatic int
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkners10_renameat(sysret_t *rval,
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner int oldfd, const char *oldname, int newfd, const char *newname)
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner{
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner return (__systemcall(rval, SYS_renameat + 1024,
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner oldfd, oldname, newfd, newname));
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner}
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulknerint
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkners10_rename(sysret_t *rval, const char *oldname, const char *newname)
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner{
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner return (__systemcall(rval, SYS_renameat + 1024,
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner AT_FDCWD, oldname, AT_FDCWD, newname));
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner}
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner
794f0adb050e571bbfde4d2a19b9f88b852079ddRoger A. Faulknerint
794f0adb050e571bbfde4d2a19b9f88b852079ddRoger A. Faulkners10_symlink(sysret_t *rval, const char *path1, const char *path2)
794f0adb050e571bbfde4d2a19b9f88b852079ddRoger A. Faulkner{
794f0adb050e571bbfde4d2a19b9f88b852079ddRoger A. Faulkner return (__systemcall(rval, SYS_symlinkat + 1024,
794f0adb050e571bbfde4d2a19b9f88b852079ddRoger A. Faulkner path1, AT_FDCWD, path2));
794f0adb050e571bbfde4d2a19b9f88b852079ddRoger A. Faulkner}
794f0adb050e571bbfde4d2a19b9f88b852079ddRoger A. Faulkner
794f0adb050e571bbfde4d2a19b9f88b852079ddRoger A. Faulknerint
794f0adb050e571bbfde4d2a19b9f88b852079ddRoger A. Faulkners10_readlink(sysret_t *rval, const char *path, char *buf, size_t bufsize)
794f0adb050e571bbfde4d2a19b9f88b852079ddRoger A. Faulkner{
794f0adb050e571bbfde4d2a19b9f88b852079ddRoger A. Faulkner return (__systemcall(rval, SYS_readlinkat + 1024,
794f0adb050e571bbfde4d2a19b9f88b852079ddRoger A. Faulkner AT_FDCWD, path, buf, bufsize));
794f0adb050e571bbfde4d2a19b9f88b852079ddRoger A. Faulkner}
794f0adb050e571bbfde4d2a19b9f88b852079ddRoger A. Faulkner
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulknerstatic int
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkners10_faccessat(sysret_t *rval, int fd, const char *fname, int amode, int flag)
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner{
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner return (__systemcall(rval, SYS_faccessat + 1024,
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner fd, fname, amode, flag));
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner}
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulknerint
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkners10_access(sysret_t *rval, const char *fname, int amode)
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner{
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner return (__systemcall(rval, SYS_faccessat + 1024,
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner AT_FDCWD, fname, amode, 0));
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner}
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulknerint
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkners10_utime(sysret_t *rval, const char *path, const struct utimbuf *times)
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner{
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner struct utimbuf ltimes;
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner timespec_t ts[2];
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner timespec_t *tsp;
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner if (times == NULL) {
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner tsp = NULL;
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner } else {
80e2ca8596e3435bc3b76f3c597833ea0a87f85e if (brand_uucopy(times, &ltimes, sizeof (ltimes)) != 0)
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner return (EFAULT);
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner ts[0].tv_sec = ltimes.actime;
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner ts[0].tv_nsec = 0;
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner ts[1].tv_sec = ltimes.modtime;
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner ts[1].tv_nsec = 0;
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner tsp = ts;
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner }
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner return (__systemcall(rval, SYS_utimesys + 1024, 1,
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner AT_FDCWD, path, tsp, 0));
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner}
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulknerint
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkners10_utimes(sysret_t *rval, const char *path, const struct timeval times[2])
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner{
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner struct timeval ltimes[2];
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner timespec_t ts[2];
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner timespec_t *tsp;
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner if (times == NULL) {
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner tsp = NULL;
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner } else {
80e2ca8596e3435bc3b76f3c597833ea0a87f85e if (brand_uucopy(times, ltimes, sizeof (ltimes)) != 0)
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner return (EFAULT);
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner ts[0].tv_sec = ltimes[0].tv_sec;
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner ts[0].tv_nsec = ltimes[0].tv_usec * 1000;
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner ts[1].tv_sec = ltimes[1].tv_sec;
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner ts[1].tv_nsec = ltimes[1].tv_usec * 1000;
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner tsp = ts;
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner }
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner return (__systemcall(rval, SYS_utimesys + 1024, 1,
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner AT_FDCWD, path, tsp, 0));
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner}
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulknerstatic int
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkners10_futimesat(sysret_t *rval,
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner int fd, const char *path, const struct timeval times[2])
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner{
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner struct timeval ltimes[2];
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner timespec_t ts[2];
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner timespec_t *tsp;
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner if (times == NULL) {
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner tsp = NULL;
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner } else {
80e2ca8596e3435bc3b76f3c597833ea0a87f85e if (brand_uucopy(times, ltimes, sizeof (ltimes)) != 0)
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner return (EFAULT);
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner ts[0].tv_sec = ltimes[0].tv_sec;
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner ts[0].tv_nsec = ltimes[0].tv_usec * 1000;
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner ts[1].tv_sec = ltimes[1].tv_sec;
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner ts[1].tv_nsec = ltimes[1].tv_usec * 1000;
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner tsp = ts;
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner }
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner if (path == NULL)
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner return (__systemcall(rval, SYS_utimesys + 1024, 0, fd, tsp));
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner return (__systemcall(rval, SYS_utimesys + 1024, 1, fd, path, tsp, 0));
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner}
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner#if defined(__x86)
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner/* ARGSUSED */
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulknerint
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkners10_xstat(sysret_t *rval, int version, const char *path, struct stat *statb)
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner{
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner#if defined(__amd64)
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner return (EINVAL);
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner#else
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner if (version != _STAT_VER)
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner return (EINVAL);
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner return (__systemcall(rval, SYS_fstatat + 1024,
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner AT_FDCWD, path, statb, 0));
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner#endif
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner}
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner/* ARGSUSED */
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulknerint
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkners10_lxstat(sysret_t *rval, int version, const char *path, struct stat *statb)
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner{
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner#if defined(__amd64)
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner return (EINVAL);
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner#else
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner if (version != _STAT_VER)
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner return (EINVAL);
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner return (__systemcall(rval, SYS_fstatat + 1024,
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner AT_FDCWD, path, statb, AT_SYMLINK_NOFOLLOW));
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner#endif
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner}
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner/* ARGSUSED */
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulknerint
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkners10_fxstat(sysret_t *rval, int version, int fd, struct stat *statb)
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner{
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner#if defined(__amd64)
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner return (EINVAL);
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner#else
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner if (version != _STAT_VER)
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner return (EINVAL);
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner return (__systemcall(rval, SYS_fstatat + 1024,
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner fd, NULL, statb, 0));
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner#endif
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner}
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner/* ARGSUSED */
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulknerint
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkners10_xmknod(sysret_t *rval, int version, const char *path,
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner mode_t mode, dev_t dev)
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner{
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner#if defined(__amd64)
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner return (EINVAL);
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner#else
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner if (version != _MKNOD_VER)
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner return (EINVAL);
794f0adb050e571bbfde4d2a19b9f88b852079ddRoger A. Faulkner return (__systemcall(rval, SYS_mknodat + 1024,
794f0adb050e571bbfde4d2a19b9f88b852079ddRoger A. Faulkner AT_FDCWD, path, mode, dev));
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner#endif
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner}
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner#endif /* __x86 */
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner/*
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner * This is the fsat() system call trap in s10.
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner * It has been removed in the current system.
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner */
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulknerint
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkners10_fsat(sysret_t *rval,
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner int code, uintptr_t arg1, uintptr_t arg2,
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner uintptr_t arg3, uintptr_t arg4, uintptr_t arg5)
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner{
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner switch (code) {
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner case 0: /* openat */
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner return (s10_openat(rval, (int)arg1,
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner (const char *)arg2, (int)arg3, (mode_t)arg4));
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner case 1: /* openat64 */
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner#if defined(_LP64)
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner return (EINVAL);
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner#else
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner return (s10_openat64(rval, (int)arg1,
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner (const char *)arg2, (int)arg3, (mode_t)arg4));
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner#endif
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner case 2: /* fstatat64 */
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner#if defined(_LP64)
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner return (EINVAL);
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner#else
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner return (s10_fstatat64(rval, (int)arg1,
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner (const char *)arg2, (struct stat64 *)arg3, (int)arg4));
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner#endif
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner case 3: /* fstatat */
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner return (s10_fstatat(rval, (int)arg1,
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner (const char *)arg2, (struct stat *)arg3, (int)arg4));
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner case 4: /* fchownat */
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner return (s10_fchownat(rval, (int)arg1, (char *)arg2,
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner (uid_t)arg3, (gid_t)arg4, (int)arg5));
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner case 5: /* unlinkat */
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner return (s10_unlinkat(rval, (int)arg1, (char *)arg2,
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner (int)arg3));
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner case 6: /* futimesat */
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner return (s10_futimesat(rval, (int)arg1,
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner (const char *)arg2, (const struct timeval *)arg3));
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner case 7: /* renameat */
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner return (s10_renameat(rval, (int)arg1, (char *)arg2,
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner (int)arg3, (char *)arg4));
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner case 8: /* faccessat */
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner return (s10_faccessat(rval, (int)arg1, (char *)arg2,
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner (int)arg3, (int)arg4));
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner case 9: /* openattrdirat */
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner return (s10_openat(rval, (int)arg1,
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner (const char *)arg2, FXATTRDIROPEN, 0));
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner }
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner return (EINVAL);
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner}
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner/*
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner * Interposition upon SYS_umount
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner */
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulknerint
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkners10_umount(sysret_t *rval, const char *path)
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner{
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner return (__systemcall(rval, SYS_umount2 + 1024, path, 0));
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner}