xref: /csrg-svn/sys/miscfs/fdesc/fdesc.h (revision 65513)
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