Deleted Added
full compact
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 ---