break up fs/devices.c
Subsystems (2)
PATCH 1/1 break up fs/devices.c
This patch breaks up and removes fs/devices.c:
Character device functions -> char_dev.cinit_special_inode() -> inode.ckdevname() -> libfs.c
--
Brian Gerst
fs/Makefile +1 -1
@@ -8,7 +8,7 @@ export-objs := open.o dcache.o buffer.o bio.o inode.o dquot.o mpage.o aio.o \ fcntl.o read_write.o dcookies.o mbcache.o posix_acl.o xattr_acl.o -obj-y := open.o read_write.o devices.o file_table.o buffer.o \ +obj-y := open.o read_write.o file_table.o buffer.o \ bio.o super.o block_dev.o char_dev.o stat.o exec.o pipe.o \ namei.o fcntl.o ioctl.o readdir.o select.o fifo.o locks.o \ dcache.o inode.o attr.o bad_inode.o file.o dnotify.o \
fs/char_dev.c +164 -0
173 lines not on this page · raw message
fs/devices.c +0 -221
221 lines not on this page · raw message
fs/inode.c +27 -0
@@ -1244,3 +1244,30 @@set_shrinker (DEFAULT_SEEKS , shrink_icache_memory); } + +static int sock_no_open (struct inode *irrelevant,struct file *dontcare) +{ +return -ENXIO ; +} + +static struct file_operations bad_sock_fops = { + .open = sock_no_open +}; + +void init_special_inode (struct inode *inode,umode_t mode,int rdev) +{ + inode->i_mode = mode; +if (S_ISCHR (mode)) { + inode->i_fop = &def_chr_fops; + inode->i_rdev =to_kdev_t (rdev); + inode->i_cdev =cdget (rdev); + }else if (S_ISBLK (mode)) { + inode->i_fop = &def_blk_fops; + inode->i_rdev =to_kdev_t (rdev); + }else if (S_ISFIFO (mode)) + inode->i_fop = &def_fifo_fops; +else if (S_ISSOCK (mode)) + inode->i_fop = &bad_sock_fops; +else +printk (KERN_DEBUG "init_special_inode: bogus i_mode (%o)\n" , mode); +}
fs/libfs.c +11 -0
@@ -323,3 +323,14 @@set_page_dirty (page);return 0 ; } + +/* +* Print device name (in decimal, hexadecimal or symbolic) +* Note: returns pointer to static data! +*/ +const char *kdevname (kdev_t dev) +{ +static char buffer[32 ]; +sprintf (buffer,"%02x:%02x" ,major (dev),minor (dev)); +return buffer; +}
fs/proc/proc_misc.c +4 -2
@@ -57,7 +57,8 @@*/ extern int get_hardware_list (char *);extern int get_stram_list (char *); -extern int get_device_list (char *); +extern int get_chrdev_list (char *); +extern int get_blkdev_list (char *);extern int get_filesystem_list (char *);extern int get_exec_domain_list (char *);extern int get_dma_list (char *);
@@ -376,7 +377,8 @@static int devices_read_proc (char *page,char **start,off_t off,int count,int *eof,void *data) { -int len =get_device_list (page); +int len =get_chrdev_list (page); + len +=get_blkdev_list (page+len);return proc_calc_metrics (page, start, off, count, eof, len); }
include/linux/fs.h +1 -0
@@ -1097,6 +1097,7 @@extern int blkdev_close (struct inode *,struct file *);extern struct file_operations def_blk_fops;extern struct address_space_operations def_blk_aops; +extern struct file_operations def_chr_fops;extern struct file_operations def_fifo_fops;extern int ioctl_by_bdev (struct block_device *,unsigned ,unsigned long );extern int blkdev_ioctl (struct inode *,struct file *,unsigned ,unsigned long );