From: Matthew Dillon Date: Thu, 6 Aug 2009 17:09:01 +0000 (-0700) Subject: DEVFS - Code Cleanup X-Git-Tag: v2.4.0~327 X-Git-Url: https://gitweb.dragonflybsd.org/dragonfly.git/commitdiff_plain/d6805482f45bcb10ca176ec74d7a28cdf7212ab6 DEVFS - Code Cleanup --- diff --git a/sys/vfs/devfs/devfs.h b/sys/vfs/devfs/devfs.h index 23e05f5f53..473a738338 100644 --- a/sys/vfs/devfs/devfs.h +++ b/sys/vfs/devfs/devfs.h @@ -77,87 +77,81 @@ struct devfs_dirent { }; struct devfs_fid { - uint16_t fid_len; /* Length of structure. */ - uint16_t fid_pad; /* Force 32-bit alignment. */ - uint32_t fid_gen; - ino_t fid_ino; /* File number (ino). */ + uint16_t fid_len; /* Length of structure. */ + uint16_t fid_pad; /* Force 32-bit alignment. */ + uint32_t fid_gen; + ino_t fid_ino; /* File number (ino). */ }; struct devfs_node { - cdev_t d_dev; /* device assoicated with this node */ + cdev_t d_dev; /* device assoicated with this node */ - struct mount *mp; /* mount point of this node */ - struct devfs_dirent d_dir; /* dirent data (name, inode, ...) */ - struct vnode *v_node; /* assoicated vnode */ - struct devfs_node *parent; /* parent of this node */ - devfs_nodetype node_type; /* devfs node type */ + struct mount *mp; /* mount point of this node */ + struct devfs_dirent d_dir; /* dirent data (name, inode, ...) */ + struct vnode *v_node; /* assoicated vnode */ + struct devfs_node *parent; /* parent of this node */ + devfs_nodetype node_type; /* devfs node type */ u_int64_t refs; /* number of open references */ size_t nchildren; /* number of children of a parent */ u_int64_t cookie_jar; /* cookie pool for children */ u_int64_t cookie; /* directory entry cookie for readdir */ - struct devfs_node *link_target; /* target of this autolink-type node */ - size_t nlinks; /* number of links that point to this node */ + struct devfs_node *link_target; /* target of this autolink-type node */ + size_t nlinks; /* hard links */ - char *symlink_name; /* symlink name for readlink */ - size_t symlink_namelen; /* symlink name length for readlink */ + char *symlink_name; /* symlink name for readlink */ + size_t symlink_namelen; /* symlink name length for readlink */ u_short mode; /* files access mode and type */ uid_t uid; /* owner user id */ gid_t gid; /* owner group id */ u_long flags; - struct timespec atime; /* time of last access */ - struct timespec mtime; /* time of last modification */ - struct timespec ctime; /* time file changed */ + struct timespec atime; /* time of last access */ + struct timespec mtime; /* time of last modification */ + struct timespec ctime; /* time file changed */ - /* Other members */ - TAILQ_ENTRY(devfs_node) link; - TAILQ_HEAD(, devfs_node) list; /* linked list of children */ + TAILQ_ENTRY(devfs_node) link; + TAILQ_HEAD(, devfs_node) list; /* linked list of children */ }; struct devfs_orphan { - struct devfs_node *node; - - TAILQ_ENTRY(devfs_orphan) link; + struct devfs_node *node; + TAILQ_ENTRY(devfs_orphan) link; }; struct devfs_mnt_data { - TAILQ_HEAD(, devfs_orphan) orphan_list; - - struct devfs_node *root_node; - struct mount *mp; + TAILQ_HEAD(, devfs_orphan) orphan_list; + TAILQ_ENTRY(devfs_mnt_data) link; + struct devfs_node *root_node; + struct mount *mp; uint32_t mnt_type; size_t leak_count; - int jailed; - size_t mntonnamelen; - TAILQ_ENTRY(devfs_mnt_data) link; + size_t mntonnamelen; }; struct devfs_clone_handler { char *name; u_char namlen; d_clone_t *nhandler; - - TAILQ_ENTRY(devfs_clone_handler) link; + TAILQ_ENTRY(devfs_clone_handler) link; }; struct devfs_alias { - char *name; - size_t namlen; - cdev_t dev_target; - - TAILQ_ENTRY(devfs_alias) link; + char *name; + size_t namlen; + cdev_t dev_target; + TAILQ_ENTRY(devfs_alias) link; }; typedef struct devfs_msg { - struct lwkt_msg hdr; - __uint32_t id; + struct lwkt_msg hdr; + __uint32_t id; union { struct { @@ -215,6 +209,7 @@ typedef struct devfs_msg { struct mount *mp; } __m_ino; } __m_u; +} *devfs_msg_t; #define mdv_chandler __m_u.__m_chandler #define mdv_mnt __m_u.__m_mnt.mnt @@ -231,13 +226,11 @@ typedef struct devfs_msg { #define mdv_flags __m_u.__m_flags #define mdv_ino __m_u.__m_ino -} *devfs_msg_t; typedef struct devfs_core_args { - thread_t td; + thread_t td; } *devfs_core_args_t; - TAILQ_HEAD(devfs_node_head, devfs_node); TAILQ_HEAD(devfs_dev_head, cdev); TAILQ_HEAD(devfs_mnt_head, devfs_mnt_data); @@ -246,58 +239,65 @@ TAILQ_HEAD(devfs_alias_head, devfs_alias); typedef void (devfs_scan_t)(cdev_t); - -#define DEVFS_NODE(x) ((struct devfs_node *)((x)->v_data)) -#define DEVFS_MNTDATA(x) ((struct devfs_mnt_data *)((x)->mnt_data)) -#define DEVFS_ORPHANLIST(x) (&(DEVFS_MNTDATA(x)->orphan_list)) +#define DEVFS_NODE(x) ((struct devfs_node *)((x)->v_data)) +#define DEVFS_MNTDATA(x) ((struct devfs_mnt_data *)((x)->mnt_data)) +#define DEVFS_ORPHANLIST(x) (&(DEVFS_MNTDATA(x)->orphan_list)) #define DEVFS_DENODE_HEAD(x) (&((x)->list)) -#define DEVFS_ISDIGIT(x) ((x >= '0') && (x <= '9')) +#define DEVFS_ISDIGIT(x) ((x >= '0') && (x <= '9')) + +/* + * -rwxr-xr-x + */ +#define DEVFS_DEFAULT_MODE ((VREAD|VWRITE|VEXEC) | ((VREAD|VEXEC)>>3) | \ + ((VREAD|VEXEC)>>6)); -#define DEVFS_DEFAULT_MODE ((VREAD|VWRITE|VEXEC) | ((VREAD|VEXEC)>>3) | ((VREAD|VEXEC)>>6)); /* -rwxr-xr-x */ #define DEVFS_DEFAULT_UID 0 /* root */ #define DEVFS_DEFAULT_GID 5 /* operator */ /* * debug levels */ -#define DEVFS_DEBUG_SHOW 0x00 -#define DEVFS_DEBUG_WARNING 0x01 -#define DEVFS_DEBUG_INFO 0x02 -#define DEVFS_DEBUG_DEBUG 0x03 +#define DEVFS_DEBUG_SHOW 0x00 +#define DEVFS_DEBUG_WARNING 0x01 +#define DEVFS_DEBUG_INFO 0x02 +#define DEVFS_DEBUG_DEBUG 0x03 /* * Message ids */ -#define DEVFS_TERMINATE_CORE 0x01 +#define DEVFS_TERMINATE_CORE 0x01 #define DEVFS_DEVICE_CREATE 0x02 -#define DEVFS_DEVICE_DESTROY 0x03 +#define DEVFS_DEVICE_DESTROY 0x03 #define DEVFS_MOUNT_ADD 0x04 #define DEVFS_MOUNT_DEL 0x05 -#define DEVFS_CREATE_ALL_DEV 0x06 -#define DEVFS_DESTROY_SUBNAMES 0x07 -#define DEVFS_DESTROY_DEV_BY_OPS 0x08 +#define DEVFS_CREATE_ALL_DEV 0x06 +#define DEVFS_DESTROY_SUBNAMES 0x07 +#define DEVFS_DESTROY_DEV_BY_OPS 0x08 #define DEVFS_CHANDLER_ADD 0x09 #define DEVFS_CHANDLER_DEL 0x0A -#define DEVFS_FIND_DEVICE_BY_UDEV 0x0B -#define DEVFS_FIND_DEVICE_BY_NAME 0x0C +#define DEVFS_FIND_DEVICE_BY_UDEV 0x0B +#define DEVFS_FIND_DEVICE_BY_NAME 0x0C #define DEVFS_MAKE_ALIAS 0x0D #define DEVFS_APPLY_RULES 0x0F #define DEVFS_RESET_RULES 0x10 #define DEVFS_SCAN_CALLBACK 0x11 -#define DEVFS_CLR_SUBNAMES_FLAG 0x12 +#define DEVFS_CLR_SUBNAMES_FLAG 0x12 #define DEVFS_DESTROY_SUBNAMES_WO_FLAG 0x13 -#define DEVFS_INODE_TO_VNODE 0x14 -#define DEVFS_SYNC 0x99 +#define DEVFS_INODE_TO_VNODE 0x14 +#define DEVFS_SYNC 0x99 /* * Node flags + * + * HIDDEN Makes node inaccessible, apart from already allocated vnodes + * INVISIBLE Makes node invisible in a readdir() */ #define DEVFS_NODE_LINKED 0x01 /* Linked into topology */ #define DEVFS_USER_CREATED 0x02 /* Node was user-created */ #define DEVFS_ORPHANED 0x04 /* on orphan list */ #define DEVFS_CLONED 0x08 /* Created by cloning code */ -#define DEVFS_HIDDEN 0x10 /* Makes node inaccessible, apart from already allocated vnodes*/ -#define DEVFS_INVISIBLE 0x20 /* Makes node invisible in a readdir() */ +#define DEVFS_HIDDEN 0x10 /* Makes node inaccessible */ +#define DEVFS_INVISIBLE 0x20 /* Makes node invisible */ #define DEVFS_PTY 0x40 /* PTY device */ #define DEVFS_DESTROYED 0x80 /* Sanity check */ @@ -305,24 +305,21 @@ typedef void (devfs_scan_t)(cdev_t); /* * Clone helper stuff */ -#define DEVFS_UNIT_HSIZE 64 /* power of 2 */ -#define DEVFS_UNIT_HMASK (DEVFS_UNIT_HSIZE - 1) - -#define DEVFS_BITMAP_INITIAL_SIZE 1 +#define DEVFS_BITMAP_INITIAL_SIZE 1 #define DEVFS_CLONE_BITMAP(name) devfs_ ## name ## _clone_bitmap -#define DEVFS_DECLARE_CLONE_BITMAP(name) struct devfs_bitmap DEVFS_CLONE_BITMAP(name) -#define devfs_clone_bitmap_put devfs_clone_bitmap_rst +#define DEVFS_DECLARE_CLONE_BITMAP(name) \ + struct devfs_bitmap DEVFS_CLONE_BITMAP(name) +#define devfs_clone_bitmap_put devfs_clone_bitmap_rst struct devfs_bitmap { - int chunks; - unsigned long *bitmap; + int chunks; + unsigned long *bitmap; }; struct devfs_unit_hash { - struct devfs_unit_hash *next; - int unit_no; - - cdev_t dev; + struct devfs_unit_hash *next; + int unit_no; + cdev_t dev; }; void devfs_clone_bitmap_init(struct devfs_bitmap *); @@ -339,8 +336,10 @@ int devfs_clone_bitmap_chk(struct devfs_bitmap *, int); */ int devfs_debug(int level, char *fmt, ...); int devfs_allocv(struct vnode **, struct devfs_node *); -struct devfs_node *devfs_allocp(devfs_nodetype, char *, struct devfs_node *, struct mount *, cdev_t); -int devfs_allocvp(struct mount *, struct vnode **, devfs_nodetype, char *, struct devfs_node *, cdev_t); +struct devfs_node *devfs_allocp(devfs_nodetype, char *, struct devfs_node *, + struct mount *, cdev_t); +int devfs_allocvp(struct mount *, struct vnode **, devfs_nodetype, char *, + struct devfs_node *, cdev_t); int devfs_freep(struct devfs_node *); int devfs_reaperp(struct devfs_node *); @@ -375,9 +374,11 @@ int devfs_mount_del(struct devfs_mnt_data *); int devfs_create_all_dev(struct devfs_node *); -struct devfs_node *devfs_resolve_or_create_path(struct devfs_node *, char *, int); +struct devfs_node *devfs_resolve_or_create_path( + struct devfs_node *, char *, int); int devfs_resolve_name_path(char *, char *, char **, char **); -struct devfs_node *devfs_create_device_node(struct devfs_node *, cdev_t, char *, char *, ...); +struct devfs_node *devfs_create_device_node(struct devfs_node *, cdev_t, + char *, char *, ...); int devfs_destroy_device_node(struct devfs_node *, cdev_t); int devfs_destroy_subnames(char *); @@ -416,4 +417,5 @@ int devfs_reference_ops(struct dev_ops *); void devfs_release_ops(struct dev_ops *); void devfs_config(void *); + #endif /* _VFS_DEVFS_H_ */