153838Spendry /* 263231Sbostic * Copyright (c) 1992, 1993 363231Sbostic * The Regents of the University of California. All rights reserved. 453838Spendry * All rights reserved. 553838Spendry * 653838Spendry * This code is derived from software donated to Berkeley by 753838Spendry * Jan-Simon Pendry. 853838Spendry * 953838Spendry * %sccs.include.redist.c% 1053838Spendry * 11*65513Spendry * @(#)fdesc.h 8.4 (Berkeley) 01/05/94 1253838Spendry * 1359255Spendry * $Id: fdesc.h,v 1.8 1993/04/06 15:28:33 jsp Exp $ 1453838Spendry */ 1553838Spendry 1653838Spendry #ifdef KERNEL 1753838Spendry struct fdescmount { 1853838Spendry struct vnode *f_root; /* Root node */ 1953838Spendry }; 2053838Spendry 2159255Spendry #define FD_ROOT 2 2259255Spendry #define FD_DEVFD 3 2359255Spendry #define FD_STDIN 4 2459255Spendry #define FD_STDOUT 5 2559255Spendry #define FD_STDERR 6 2659255Spendry #define FD_CTTY 7 2759255Spendry #define FD_DESC 8 2859255Spendry #define FD_MAX 12 2959255Spendry 3059255Spendry typedef enum { 3159255Spendry Froot, 3259255Spendry Fdevfd, 3359255Spendry Fdesc, 3459255Spendry Flink, 3559255Spendry Fctty 3659255Spendry } fdntype; 3759255Spendry 3853838Spendry struct fdescnode { 39*65513Spendry struct fdescnode *fd_forw; /* Hash chain */ 40*65513Spendry struct fdescnode *fd_back; 41*65513Spendry struct vnode *fd_vnode; /* Back ptr to vnode */ 4259255Spendry fdntype fd_type; /* Type of this node */ 4359255Spendry unsigned fd_fd; /* Fd to be dup'ed */ 4459255Spendry char *fd_link; /* Link to fd/n */ 4559255Spendry int fd_ix; /* filesystem index */ 4653838Spendry }; 4753838Spendry 4853838Spendry #define VFSTOFDESC(mp) ((struct fdescmount *)((mp)->mnt_data)) 4953838Spendry #define VTOFDESC(vp) ((struct fdescnode *)(vp)->v_data) 5053838Spendry 5159255Spendry extern dev_t devctty; 52*65513Spendry extern int fdesc_init __P((void)); 53*65513Spendry extern int fdesc_root __P((struct mount *, struct vnode **)); 5459255Spendry extern int fdesc_allocvp __P((fdntype, int, struct mount *, struct vnode **)); 5553838Spendry extern int (**fdesc_vnodeop_p)(); 5653838Spendry extern struct vfsops fdesc_vfsops; 5753838Spendry #endif /* KERNEL */ 58