1/*- 2 * Copyright (c) 1994-1995 S�ren Schmidt 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright --- 11 unchanged lines hidden (view full) --- 20 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 21 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 22 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 23 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 24 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 * |
28 * $Id: linux_file.c,v 1.30 1999/08/14 18:20:44 marcel Exp $ |
29 */ 30 31#include "opt_compat.h" 32 33#include <sys/param.h> 34#include <sys/systm.h> 35#include <sys/sysproto.h> 36#include <sys/fcntl.h> --- 175 unchanged lines hidden (view full) --- 212 bsd_flock = (struct flock *)stackgap_alloc(&sg, sizeof(struct flock)); 213 d_tty = NULL; 214 215#ifdef DEBUG 216 printf("Linux-emul(%d): fcntl(%d, %08x, *)\n", 217 p->p_pid, args->fd, args->cmd); 218#endif 219 fcntl_args.fd = args->fd; |
220 221 switch (args->cmd) { 222 case LINUX_F_DUPFD: 223 fcntl_args.cmd = F_DUPFD; |
224 fcntl_args.arg = args->arg; |
225 return fcntl(p, &fcntl_args); 226 227 case LINUX_F_GETFD: 228 fcntl_args.cmd = F_GETFD; 229 return fcntl(p, &fcntl_args); 230 231 case LINUX_F_SETFD: 232 fcntl_args.cmd = F_SETFD; |
233 fcntl_args.arg = args->arg; |
234 return fcntl(p, &fcntl_args); 235 236 case LINUX_F_GETFL: 237 fcntl_args.cmd = F_GETFL; 238 error = fcntl(p, &fcntl_args); 239 result = p->p_retval[0]; 240 p->p_retval[0] = 0; 241 if (result & O_RDONLY) p->p_retval[0] |= LINUX_O_RDONLY; 242 if (result & O_WRONLY) p->p_retval[0] |= LINUX_O_WRONLY; 243 if (result & O_RDWR) p->p_retval[0] |= LINUX_O_RDWR; 244 if (result & O_NDELAY) p->p_retval[0] |= LINUX_O_NONBLOCK; 245 if (result & O_APPEND) p->p_retval[0] |= LINUX_O_APPEND; 246 if (result & O_FSYNC) p->p_retval[0] |= LINUX_O_SYNC; 247 if (result & O_ASYNC) p->p_retval[0] |= LINUX_FASYNC; 248 return error; 249 250 case LINUX_F_SETFL: |
251 fcntl_args.arg = 0; |
252 if (args->arg & LINUX_O_NDELAY) fcntl_args.arg |= O_NONBLOCK; 253 if (args->arg & LINUX_O_APPEND) fcntl_args.arg |= O_APPEND; 254 if (args->arg & LINUX_O_SYNC) fcntl_args.arg |= O_FSYNC; 255 if (args->arg & LINUX_FASYNC) fcntl_args.arg |= O_ASYNC; 256 fcntl_args.cmd = F_SETFL; 257 return fcntl(p, &fcntl_args); 258 259 case LINUX_F_GETLK: --- 609 unchanged lines hidden --- |