1 /* 2 * Copyright (c) 1992, 1993 3 * The Regents of the University of California. All rights reserved. 4 * All rights reserved. 5 * 6 * This code is derived from software donated to Berkeley by 7 * Jan-Simon Pendry. 8 * 9 * %sccs.include.redist.c% 10 * 11 * @(#)fdesc.h 8.4 (Berkeley) 01/05/94 12 * 13 * $Id: fdesc.h,v 1.8 1993/04/06 15:28:33 jsp Exp $ 14 */ 15 16 #ifdef KERNEL 17 struct fdescmount { 18 struct vnode *f_root; /* Root node */ 19 }; 20 21 #define FD_ROOT 2 22 #define FD_DEVFD 3 23 #define FD_STDIN 4 24 #define FD_STDOUT 5 25 #define FD_STDERR 6 26 #define FD_CTTY 7 27 #define FD_DESC 8 28 #define FD_MAX 12 29 30 typedef enum { 31 Froot, 32 Fdevfd, 33 Fdesc, 34 Flink, 35 Fctty 36 } fdntype; 37 38 struct fdescnode { 39 struct fdescnode *fd_forw; /* Hash chain */ 40 struct fdescnode *fd_back; 41 struct vnode *fd_vnode; /* Back ptr to vnode */ 42 fdntype fd_type; /* Type of this node */ 43 unsigned fd_fd; /* Fd to be dup'ed */ 44 char *fd_link; /* Link to fd/n */ 45 int fd_ix; /* filesystem index */ 46 }; 47 48 #define VFSTOFDESC(mp) ((struct fdescmount *)((mp)->mnt_data)) 49 #define VTOFDESC(vp) ((struct fdescnode *)(vp)->v_data) 50 51 extern dev_t devctty; 52 extern int fdesc_init __P((void)); 53 extern int fdesc_root __P((struct mount *, struct vnode **)); 54 extern int fdesc_allocvp __P((fdntype, int, struct mount *, struct vnode **)); 55 extern int (**fdesc_vnodeop_p)(); 56 extern struct vfsops fdesc_vfsops; 57 #endif /* KERNEL */ 58