Added IRIX fcntl(F_GETBSDLK) and fcntl(F_GETBSDLKW)

This commit is contained in:
manu 2002-04-02 19:58:38 +00:00
parent d3ffde02ce
commit 062e23b4e2
7 changed files with 186 additions and 17 deletions

View File

@ -1,4 +1,4 @@
/* $NetBSD: irix_fcntl.c,v 1.3 2002/02/23 22:43:56 manu Exp $ */ /* $NetBSD: irix_fcntl.c,v 1.4 2002/04/02 19:58:38 manu Exp $ */
/*- /*-
* Copyright (c) 2001 The NetBSD Foundation, Inc. * Copyright (c) 2001 The NetBSD Foundation, Inc.
@ -37,7 +37,7 @@
*/ */
#include <sys/cdefs.h> #include <sys/cdefs.h>
__KERNEL_RCSID(0, "$NetBSD: irix_fcntl.c,v 1.3 2002/02/23 22:43:56 manu Exp $"); __KERNEL_RCSID(0, "$NetBSD: irix_fcntl.c,v 1.4 2002/04/02 19:58:38 manu Exp $");
#include <sys/types.h> #include <sys/types.h>
#include <sys/signal.h> #include <sys/signal.h>
@ -45,12 +45,20 @@ __KERNEL_RCSID(0, "$NetBSD: irix_fcntl.c,v 1.3 2002/02/23 22:43:56 manu Exp $");
#include <sys/mount.h> #include <sys/mount.h>
#include <sys/proc.h> #include <sys/proc.h>
#include <sys/systm.h> #include <sys/systm.h>
#include <sys/fcntl.h>
#include <sys/syscallargs.h> #include <sys/syscallargs.h>
#include <compat/irix/irix_types.h> #include <compat/irix/irix_types.h>
#include <compat/irix/irix_signal.h> #include <compat/irix/irix_signal.h>
#include <compat/irix/irix_fcntl.h>
#include <compat/irix/irix_syscallargs.h> #include <compat/irix/irix_syscallargs.h>
#include <compat/svr4/svr4_types.h>
#include <compat/svr4/svr4_signal.h>
#include <compat/svr4/svr4_ucontext.h>
#include <compat/svr4/svr4_lwp.h>
#include <compat/svr4/svr4_fcntl.h>
#include <compat/svr4/svr4_syscallargs.h>
int int
irix_sys_lseek64(p, v, retval) irix_sys_lseek64(p, v, retval)
@ -87,3 +95,64 @@ irix_sys_lseek64(p, v, retval)
return sys_lseek(p, (void *)&cup, retval); return sys_lseek(p, (void *)&cup, retval);
} }
int
irix_sys_fcntl(p, v, retval)
struct proc *p;
void *v;
register_t *retval;
{
struct irix_sys_fcntl_args /* {
syscallarg(int) fd;
syscallarg(int) cmd;
syscallarg(char *)arg;
} */ *uap = v;
struct svr4_sys_fcntl_args cup;
int cmd;
cmd = SCARG(uap, cmd);
switch (cmd) {
case IRIX_F_CHKLK:
case IRIX_F_CHKLKW:
case IRIX_F_CLNLK:
case IRIX_F_DIOINFO:
case IRIX_F_FSGETXATTR:
case IRIX_F_FSSETXATTR:
case IRIX_F_GETBMAP:
case IRIX_F_FSSETDM:
case IRIX_F_RESVSP:
case IRIX_F_UNRESVSP:
case IRIX_F_RESVSP64:
case IRIX_F_UNRESVSP64:
case IRIX_F_GETBMAPA:
case IRIX_F_FSGETXATTRA:
case IRIX_F_SETBIOSIZE:
case IRIX_F_GETBIOSIZE:
case IRIX_F_GETOPS:
case IRIX_F_DMAPI:
case IRIX_F_FSYNC:
case IRIX_F_FSYNC64:
case IRIX_F_GETBDSATTR:
case IRIX_F_SETBDSATTR:
case IRIX_F_GETBMAPX:
case IRIX_F_SETPRIO:
case IRIX_F_GETPRIO:
printf("Warning: unimplemented IRIX fcntl() command %d\n",
cmd);
return EINVAL;
break;
case IRIX_F_SETBSDLKW:
cmd = SVR4_F_SETLKW;
case IRIX_F_SETBSDLK:
cmd = SVR4_F_SETLK;
default:
SCARG(&cup, fd) = SCARG(uap, fd);
SCARG(&cup, cmd) = cmd;
SCARG(&cup, arg) = SCARG(uap, arg);
return svr4_sys_fcntl(p, &cup, retval);
break;
}
/* NOTREACHED */
}

View File

@ -0,0 +1,94 @@
/* $NetBSD: irix_fcntl.h,v 1.1 2002/04/02 19:58:38 manu Exp $ */
/*-
* Copyright (c) 2002 The NetBSD Foundation, Inc.
* All rights reserved.
*
* This code is derived from software contributed to The NetBSD Foundation
* by Emmanuel Dreyfus
*
* 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.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* This product includes software developed by the NetBSD
* Foundation, Inc. and its contributors.
* 4. Neither the name of The NetBSD Foundation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. 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 THE FOUNDATION OR CONTRIBUTORS
* 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 _IRIX_FCNTL_H_
#define _IRIX_FCNTL_H_
#include <compat/svr4/svr4_fcntl.h>
/* From IRIX's <sys/fcntl.h> */
#define IRIX_F_DUPFD SVR4_F_DUPFD
#define IRIX_F_GETFD SVR4_F_GETFD
#define IRIX_F_SETFD SVR4_F_SETFD
#define IRIX_F_GETFL SVR4_F_GETFL
#define IRIX_F_SETFL SVR4_F_SETFL
#define IRIX_F_SETLK SVR4_F_SETLK
#define IRIX_F_SETLKW SVR4_F_SETLKW
#define IRIX_F_CHKFL SVR4_F_CHKFL
#define IRIX_F_ALLOCSP SVR4_F_ALLOCSP
#define IRIX_F_FREESP SVR4_F_FREESP
#define IRIX_F_SETBSDLK 12
#define IRIX_F_SETBSDLKW 13
#define IRIX_F_GETLK SVR4_F_GETLK
#define IRIX_F_CHKLK 15
#define IRIX_F_CHKLKW 16
#define IRIX_F_CLNLK 17
#define IRIX_F_RSETLK SVR4_F_RSETLK
#define IRIX_F_RGETLK SVR4_F_RGETLK
#define IRIX_F_RSETLKW SVR4_F_RSETLKW
#define IRIX_F_GETOWN SVR4_F_GETOWN
#define IRIX_F_SETOWN SVR4_F_SETOWN
#define IRIX_F_DIOINFO 30
#define IRIX_F_FSGETXATTR 31
#define IRIX_F_FSSETXATTR 32
#define IRIX_F_GETLK64 SVR4_F_GETLK64
#define IRIX_F_SETLK64 SVR4_F_SETLK64
#define IRIX_F_SETLKW64 SVR4_F_SETLKW64
#define IRIX_F_ALLOCSP64 36
#define IRIX_F_FREESP64 SVR4_F_FREESP64
#define IRIX_F_GETBMAP 38
#define IRIX_F_FSSETDM 39
#define IRIX_F_RESVSP 40
#define IRIX_F_UNRESVSP 41
#define IRIX_F_RESVSP64 42
#define IRIX_F_UNRESVSP64 43
#define IRIX_F_GETBMAPA 44
#define IRIX_F_FSGETXATTRA 45
#define IRIX_F_SETBIOSIZE 46
#define IRIX_F_GETBIOSIZE 47
#define IRIX_F_GETOPS 50
#define IRIX_F_DMAPI 51
#define IRIX_F_FSYNC 52
#define IRIX_F_FSYNC64 53
#define IRIX_F_GETBDSATTR 54
#define IRIX_F_SETBDSATTR 55
#define IRIX_F_GETBMAPX 56
#define IRIX_F_SETPRIO 57
#define IRIX_F_GETPRIO 58
#endif /* _IRIX_FCNTL_H_ */

View File

@ -1,10 +1,10 @@
/* $NetBSD: irix_syscall.h,v 1.31 2002/03/28 10:36:15 manu Exp $ */ /* $NetBSD: irix_syscall.h,v 1.32 2002/04/02 19:58:38 manu Exp $ */
/* /*
* System call numbers. * System call numbers.
* *
* DO NOT EDIT-- this file is automatically generated. * DO NOT EDIT-- this file is automatically generated.
* created from NetBSD: syscalls.master,v 1.29 2002/03/26 10:52:52 manu Exp * created from NetBSD: syscalls.master,v 1.30 2002/03/28 10:36:15 manu Exp
*/ */
/* syscall: "syscall" ret: "int" args: */ /* syscall: "syscall" ret: "int" args: */

View File

@ -1,10 +1,10 @@
/* $NetBSD: irix_syscallargs.h,v 1.31 2002/03/28 10:36:14 manu Exp $ */ /* $NetBSD: irix_syscallargs.h,v 1.32 2002/04/02 19:58:38 manu Exp $ */
/* /*
* System call argument lists. * System call argument lists.
* *
* DO NOT EDIT-- this file is automatically generated. * DO NOT EDIT-- this file is automatically generated.
* created from NetBSD: syscalls.master,v 1.29 2002/03/26 10:52:52 manu Exp * created from NetBSD: syscalls.master,v 1.30 2002/03/28 10:36:15 manu Exp
*/ */
#ifndef _IRIX_SYS__SYSCALLARGS_H_ #ifndef _IRIX_SYS__SYSCALLARGS_H_
@ -50,6 +50,12 @@ struct irix_sys_sysmp_args {
syscallarg(void *) arg4; syscallarg(void *) arg4;
}; };
struct irix_sys_fcntl_args {
syscallarg(int) fd;
syscallarg(int) cmd;
syscallarg(char *) arg;
};
struct irix_sys_lseek64_args { struct irix_sys_lseek64_args {
syscallarg(int) fd; syscallarg(int) fd;
syscallarg(int) pad1; syscallarg(int) pad1;
@ -212,7 +218,7 @@ int svr4_sys_utssys(struct proc *, void *, register_t *);
int svr4_sys_execve(struct proc *, void *, register_t *); int svr4_sys_execve(struct proc *, void *, register_t *);
int sys_umask(struct proc *, void *, register_t *); int sys_umask(struct proc *, void *, register_t *);
int sys_chroot(struct proc *, void *, register_t *); int sys_chroot(struct proc *, void *, register_t *);
int svr4_sys_fcntl(struct proc *, void *, register_t *); int irix_sys_fcntl(struct proc *, void *, register_t *);
int svr4_sys_ulimit(struct proc *, void *, register_t *); int svr4_sys_ulimit(struct proc *, void *, register_t *);
int irix_sys_lseek64(struct proc *, void *, register_t *); int irix_sys_lseek64(struct proc *, void *, register_t *);
int sys_rmdir(struct proc *, void *, register_t *); int sys_rmdir(struct proc *, void *, register_t *);

View File

@ -1,14 +1,14 @@
/* $NetBSD: irix_syscalls.c,v 1.31 2002/03/28 10:36:14 manu Exp $ */ /* $NetBSD: irix_syscalls.c,v 1.32 2002/04/02 19:58:38 manu Exp $ */
/* /*
* System call names. * System call names.
* *
* DO NOT EDIT-- this file is automatically generated. * DO NOT EDIT-- this file is automatically generated.
* created from NetBSD: syscalls.master,v 1.29 2002/03/26 10:52:52 manu Exp * created from NetBSD: syscalls.master,v 1.30 2002/03/28 10:36:15 manu Exp
*/ */
#include <sys/cdefs.h> #include <sys/cdefs.h>
__KERNEL_RCSID(0, "$NetBSD: irix_syscalls.c,v 1.31 2002/03/28 10:36:14 manu Exp $"); __KERNEL_RCSID(0, "$NetBSD: irix_syscalls.c,v 1.32 2002/04/02 19:58:38 manu Exp $");
#if defined(_KERNEL_OPT) #if defined(_KERNEL_OPT)
#if defined(_KERNEL_OPT) #if defined(_KERNEL_OPT)

View File

@ -1,14 +1,14 @@
/* $NetBSD: irix_sysent.c,v 1.31 2002/03/28 10:36:15 manu Exp $ */ /* $NetBSD: irix_sysent.c,v 1.32 2002/04/02 19:58:39 manu Exp $ */
/* /*
* System call switch table. * System call switch table.
* *
* DO NOT EDIT-- this file is automatically generated. * DO NOT EDIT-- this file is automatically generated.
* created from NetBSD: syscalls.master,v 1.29 2002/03/26 10:52:52 manu Exp * created from NetBSD: syscalls.master,v 1.30 2002/03/28 10:36:15 manu Exp
*/ */
#include <sys/cdefs.h> #include <sys/cdefs.h>
__KERNEL_RCSID(0, "$NetBSD: irix_sysent.c,v 1.31 2002/03/28 10:36:15 manu Exp $"); __KERNEL_RCSID(0, "$NetBSD: irix_sysent.c,v 1.32 2002/04/02 19:58:39 manu Exp $");
#if defined(_KERNEL_OPT) #if defined(_KERNEL_OPT)
#include "opt_ntp.h" #include "opt_ntp.h"
@ -174,8 +174,8 @@ struct sysent irix_sysent[] = {
sys_umask }, /* 60 = umask */ sys_umask }, /* 60 = umask */
{ 1, s(struct sys_chroot_args), 0, { 1, s(struct sys_chroot_args), 0,
sys_chroot }, /* 61 = chroot */ sys_chroot }, /* 61 = chroot */
{ 3, s(struct svr4_sys_fcntl_args), 0, { 3, s(struct irix_sys_fcntl_args), 0,
svr4_sys_fcntl }, /* 62 = fcntl */ irix_sys_fcntl }, /* 62 = fcntl */
{ 2, s(struct svr4_sys_ulimit_args), 0, { 2, s(struct svr4_sys_ulimit_args), 0,
svr4_sys_ulimit }, /* 63 = ulimit */ svr4_sys_ulimit }, /* 63 = ulimit */
{ 0, 0, 0, { 0, 0, 0,

View File

@ -1,4 +1,4 @@
$NetBSD: syscalls.master,v 1.30 2002/03/28 10:36:15 manu Exp $ $NetBSD: syscalls.master,v 1.31 2002/04/02 19:58:39 manu Exp $
; @(#)syscalls.master 8.1 (Berkeley) 7/19/93 ; @(#)syscalls.master 8.1 (Berkeley) 7/19/93
@ -144,7 +144,7 @@
char **envp); } char **envp); }
60 NOARGS { int sys_umask(int newmask); } 60 NOARGS { int sys_umask(int newmask); }
61 NOARGS { int sys_chroot(char *path); } 61 NOARGS { int sys_chroot(char *path); }
62 NOARGS { int svr4_sys_fcntl(int fd, int cmd, char *arg); } 62 STD { int irix_sys_fcntl(int fd, int cmd, char *arg); }
63 NOARGS { long svr4_sys_ulimit(int cmd, long newlimit); } 63 NOARGS { long svr4_sys_ulimit(int cmd, long newlimit); }
64 UNIMPL reserved for unix/pc 64 UNIMPL reserved for unix/pc
65 UNIMPL reserved for unix/pc 65 UNIMPL reserved for unix/pc