xref: /csrg-svn/sys/miscfs/fdesc/fdesc.h (revision 68727)
153838Spendry /*
263231Sbostic  * Copyright (c) 1992, 1993
363231Sbostic  *	The Regents of the University of California.  All rights reserved.
453838Spendry  *
553838Spendry  * This code is derived from software donated to Berkeley by
653838Spendry  * Jan-Simon Pendry.
753838Spendry  *
853838Spendry  * %sccs.include.redist.c%
953838Spendry  *
10*68727Smckusick  *	@(#)fdesc.h	8.8 (Berkeley) 04/03/95
1153838Spendry  *
1259255Spendry  * $Id: fdesc.h,v 1.8 1993/04/06 15:28:33 jsp Exp $
1353838Spendry  */
1453838Spendry 
1553838Spendry #ifdef KERNEL
1653838Spendry struct fdescmount {
1753838Spendry 	struct vnode	*f_root;	/* Root node */
1853838Spendry };
1953838Spendry 
2059255Spendry #define FD_ROOT		2
2159255Spendry #define FD_DEVFD	3
2259255Spendry #define FD_STDIN	4
2359255Spendry #define FD_STDOUT	5
2459255Spendry #define FD_STDERR	6
2559255Spendry #define FD_CTTY		7
2659255Spendry #define FD_DESC		8
2759255Spendry #define FD_MAX		12
2859255Spendry 
2959255Spendry typedef enum {
3059255Spendry 	Froot,
3159255Spendry 	Fdevfd,
3259255Spendry 	Fdesc,
3359255Spendry 	Flink,
3459255Spendry 	Fctty
3559255Spendry } fdntype;
3659255Spendry 
3753838Spendry struct fdescnode {
3867715Smckusick 	LIST_ENTRY(fdescnode) fd_hash;	/* Hash list */
3965513Spendry 	struct vnode	*fd_vnode;	/* Back ptr to vnode */
4059255Spendry 	fdntype		fd_type;	/* Type of this node */
4159255Spendry 	unsigned	fd_fd;		/* Fd to be dup'ed */
4259255Spendry 	char		*fd_link;	/* Link to fd/n */
4359255Spendry 	int		fd_ix;		/* filesystem index */
4453838Spendry };
4553838Spendry 
4653838Spendry #define VFSTOFDESC(mp)	((struct fdescmount *)((mp)->mnt_data))
4753838Spendry #define	VTOFDESC(vp) ((struct fdescnode *)(vp)->v_data)
4853838Spendry 
4959255Spendry extern dev_t devctty;
5068616Smckusick extern int fdesc_init __P((struct vfsconf *));
5165513Spendry extern int fdesc_root __P((struct mount *, struct vnode **));
5259255Spendry extern int fdesc_allocvp __P((fdntype, int, struct mount *, struct vnode **));
5353838Spendry extern int (**fdesc_vnodeop_p)();
5453838Spendry extern struct vfsops fdesc_vfsops;
5553838Spendry #endif /* KERNEL */
56