diff options
author | julian <julian@FreeBSD.org> | 1996-11-21 07:19:00 +0000 |
---|---|---|
committer | julian <julian@FreeBSD.org> | 1996-11-21 07:19:00 +0000 |
commit | 534a4e360d9682e1baa92ccad9b132c156d91d99 (patch) | |
tree | 0c3c419527ac181f413e927a8da1882a980be7f0 /sys/miscfs/devfs/devfsdefs.h | |
parent | c7dd0fe0974df032d23790e95e60b2b1c42b84dd (diff) | |
download | FreeBSD-src-534a4e360d9682e1baa92ccad9b132c156d91d99.zip FreeBSD-src-534a4e360d9682e1baa92ccad9b132c156d91d99.tar.gz |
changes to make devfs more 'normal'
also fixes a bug I've been chasing for a LONG TIME,
due to the fact that spec_bwrite is a NOP and I didn't realise it..
old symptom:
mount -t devfs devfs /mnt
mount /mnt/wd0e /mnt/mnt2
umount /mnt2 <process hangs>
there are some pretty large structural differences internal to devfs
but outwards it should look the same.
I have not yet tested extensively but will do so and fix 3 warnings tomorrow.
Diffstat (limited to 'sys/miscfs/devfs/devfsdefs.h')
-rw-r--r-- | sys/miscfs/devfs/devfsdefs.h | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/sys/miscfs/devfs/devfsdefs.h b/sys/miscfs/devfs/devfsdefs.h index f3b91ac..c3d9b35 100644 --- a/sys/miscfs/devfs/devfsdefs.h +++ b/sys/miscfs/devfs/devfsdefs.h @@ -7,7 +7,7 @@ /* * Written by Julian Elischer (julian@DIALIX.oz.au) * - * $Header: /home/ncvs/src/sys/miscfs/devfs/devfsdefs.h,v 1.9 1996/01/30 22:57:01 mpp Exp $ + * $Header: /home/ncvs/src/sys/miscfs/devfs/devfsdefs.h,v 1.10 1996/09/10 08:27:42 bde Exp $ */ /* first a couple of defines for compatibility with inodes */ @@ -66,6 +66,7 @@ #define DEV_DDEV 4 #define DEV_ALIAS 5 #define DEV_SLNK 6 +#define DEV_PIPE 7 extern vop_t **devfs_vnodeop_p; /* our own vector array for dirs */ @@ -90,7 +91,10 @@ struct devnode /* the equivalent of an INODE */ u_long vn_id; /* make sure we have the right vnode */ int (***ops)(void *); /* yuk... pointer to pointer(s) to funcs */ int len; /* of any associated info (e.g. dir data) */ + devnm_p linklist; /* circular list of hardlinks to this node */ devnm_p last_lookup; /* name I was last looked up from */ + dn_p nextsibling; /* the list of equivelent nodes */ + dn_p *prevsiblingp; /* backpointer for the above */ union typeinfo { struct { struct cdevsw *cdevsw; @@ -119,6 +123,9 @@ struct devnode /* the equivalent of an INODE */ devnm_p realthing; devnm_p next; }Alias; + struct { + struct socket *sock; + }Pipe; }by; }; typedef struct devnode devnode_t; @@ -131,6 +138,8 @@ struct dev_name dn_p parent; /* backpointer to the directory itself */ devnm_p next; /* next object in this directory */ devnm_p *prevp; /* previous pointer in directory linked list */ + devnm_p nextlink; /* next hardlink to this node */ + devnm_p *prevlinkp; /* previous hardlink pointer for this node */ /*-----------------------aliases or backing nodes----------*/ union { struct { @@ -140,9 +149,6 @@ struct dev_name devnm_p realthing; /* ptr to the backing node */ } front; } as; - /*-----------------------the front-back chain-------------*/ - devnm_p next_front; /* the linked list of all our front nodes */ - devnm_p *prev_frontp; /* the end of the front node chain */ }; typedef struct dev_name devnm_t; |