reuse xxx_fifo_fops for xxx_pipe_fops
PATCH 1/1 reuse xxx_fifo_fops for xxx_pipe_fops
Hi Al,
I noticed that read/write/rdwr_pipe_fops are (1) const and
(2) exactly identical to xxx_fifo_fops, which are also const.
Attached patch #defines xxx_pipe_fops as aliases to xxx_fifo_fops. Size difference:
# size linux-2.6.25-rc6*/*/pipe.o text data bss dec hex filename 6534 144 0 6678 1a16 linux-2.6.25-rc6/fs/pipe.o 5862 144 0 6006 1776 linux-2.6.25-rc6-pt/fs/pipe.o
--
vda
fs/pipe.c +3 -36
@@ -814,42 +814,9 @@ .fasync = pipe_rdwr_fasync, }; -static const struct file_operations read_pipe_fops = { - .llseek = no_llseek, - .read = do_sync_read, - .aio_read = pipe_read, - .write = bad_pipe_w, - .poll = pipe_poll, - .unlocked_ioctl = pipe_ioctl, - .open = pipe_read_open, - .release = pipe_read_release, - .fasync = pipe_read_fasync, -}; - -static const struct file_operations write_pipe_fops = { - .llseek = no_llseek, - .read = bad_pipe_r, - .write = do_sync_write, - .aio_write = pipe_write, - .poll = pipe_poll, - .unlocked_ioctl = pipe_ioctl, - .open = pipe_write_open, - .release = pipe_write_release, - .fasync = pipe_write_fasync, -}; - -static const struct file_operations rdwr_pipe_fops = { - .llseek = no_llseek, - .read = do_sync_read, - .aio_read = pipe_read, - .write = do_sync_write, - .aio_write = pipe_write, - .poll = pipe_poll, - .unlocked_ioctl = pipe_ioctl, - .open = pipe_rdwr_open, - .release = pipe_rdwr_release, - .fasync = pipe_rdwr_fasync, -}; +#define read_pipe_fops read_fifo_fops +#define write_pipe_fops write_fifo_fops +#define rdwr_pipe_fops rdwr_fifo_fopsstruct pipe_inode_info *alloc_pipe_info (struct inode *inode) {