linux_file.c (51418) | linux_file.c (51654) |
---|---|
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 * | 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 * $FreeBSD: head/sys/compat/linux/linux_file.c 51418 1999-09-19 17:00:25Z green $ | 28 * $FreeBSD: head/sys/compat/linux/linux_file.c 51654 1999-09-25 16:21:39Z phk $ |
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> --- 162 unchanged lines hidden (view full) --- 199 } */ fcntl_args; 200 struct linux_flock linux_flock; 201 struct flock *bsd_flock; 202 struct filedesc *fdp; 203 struct file *fp; 204 struct vnode *vp; 205 long pgid; 206 struct pgrp *pgrp; | 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> --- 162 unchanged lines hidden (view full) --- 199 } */ fcntl_args; 200 struct linux_flock linux_flock; 201 struct flock *bsd_flock; 202 struct filedesc *fdp; 203 struct file *fp; 204 struct vnode *vp; 205 long pgid; 206 struct pgrp *pgrp; |
207 struct tty *tp, *(*d_tty) __P((dev_t)); | 207 struct tty *tp; |
208 caddr_t sg; 209 dev_t dev; 210 211 sg = stackgap_init(); 212 bsd_flock = (struct flock *)stackgap_alloc(&sg, sizeof(struct flock)); | 208 caddr_t sg; 209 dev_t dev; 210 211 sg = stackgap_init(); 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) { --- 82 unchanged lines hidden (view full) --- 304 fcntl_args.cmd = args->cmd == LINUX_F_SETOWN ? F_SETOWN : F_GETOWN; 305 fcntl_args.arg = args->arg; 306 return fcntl(p, &fcntl_args); 307 } 308 vp = (struct vnode *)fp->f_data; 309 dev = vn_todev(vp); 310 if (vp->v_type != VCHR || dev == NODEV) 311 return EINVAL; | 213 214#ifdef DEBUG 215 printf("Linux-emul(%d): fcntl(%d, %08x, *)\n", 216 p->p_pid, args->fd, args->cmd); 217#endif 218 fcntl_args.fd = args->fd; 219 220 switch (args->cmd) { --- 82 unchanged lines hidden (view full) --- 303 fcntl_args.cmd = args->cmd == LINUX_F_SETOWN ? F_SETOWN : F_GETOWN; 304 fcntl_args.arg = args->arg; 305 return fcntl(p, &fcntl_args); 306 } 307 vp = (struct vnode *)fp->f_data; 308 dev = vn_todev(vp); 309 if (vp->v_type != VCHR || dev == NODEV) 310 return EINVAL; |
312 d_tty = devsw(dev)->d_devtotty; 313 if (!d_tty || (!(tp = (*d_tty)(dev)))) | 311 if (!(devsw(dev)->d_flags & D_TTY)) |
314 return EINVAL; | 312 return EINVAL; |
313 tp = dev->si_tty; 314 if (!tp) 315 return EINVAL; |
|
315 if (args->cmd == LINUX_F_GETOWN) { 316 p->p_retval[0] = tp->t_pgrp ? tp->t_pgrp->pg_id : NO_PID; 317 return 0; 318 } 319 if ((long)args->arg <= 0) { 320 pgid = -(long)args->arg; 321 } else { 322 struct proc *p1 = pfind((long)args->arg); --- 559 unchanged lines hidden --- | 316 if (args->cmd == LINUX_F_GETOWN) { 317 p->p_retval[0] = tp->t_pgrp ? tp->t_pgrp->pg_id : NO_PID; 318 return 0; 319 } 320 if ((long)args->arg <= 0) { 321 pgid = -(long)args->arg; 322 } else { 323 struct proc *p1 = pfind((long)args->arg); --- 559 unchanged lines hidden --- |