[PATCH] ifdef ->rchar, ->wchar, ->syscr, ->syscw from task_struct

They are fat: 4x8 bytes in task_struct.
They are uncoditionally updated in every fork, read, write and sendfile.
They are used only if you have some "extended acct fields feature".

And please, please, please, read(2) knows about bytes, not characters,
why it is called "rchar"?

Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com>
Cc: Jay Lan <jlan@engr.sgi.com>
Cc: Balbir Singh <balbir@in.ibm.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
Alexey Dobriyan
2007-02-10 01:46:45 -08:00
committed by Linus Torvalds
parent 18f705f49a
commit 4b98d11b40
4 changed files with 58 additions and 12 deletions

View File

@ -274,9 +274,9 @@ ssize_t vfs_read(struct file *file, char __user *buf, size_t count, loff_t *pos)
ret = do_sync_read(file, buf, count, pos);
if (ret > 0) {
fsnotify_access(file->f_path.dentry);
current->rchar += ret;
add_rchar(current, ret);
}
current->syscr++;
inc_syscr(current);
}
}
@ -332,9 +332,9 @@ ssize_t vfs_write(struct file *file, const char __user *buf, size_t count, loff_
ret = do_sync_write(file, buf, count, pos);
if (ret > 0) {
fsnotify_modify(file->f_path.dentry);
current->wchar += ret;
add_wchar(current, ret);
}
current->syscw++;
inc_syscw(current);
}
}
@ -675,8 +675,8 @@ sys_readv(unsigned long fd, const struct iovec __user *vec, unsigned long vlen)
}
if (ret > 0)
current->rchar += ret;
current->syscr++;
add_rchar(current, ret);
inc_syscr(current);
return ret;
}
@ -696,8 +696,8 @@ sys_writev(unsigned long fd, const struct iovec __user *vec, unsigned long vlen)
}
if (ret > 0)
current->wchar += ret;
current->syscw++;
add_wchar(current, ret);
inc_syscw(current);
return ret;
}
@ -779,12 +779,12 @@ static ssize_t do_sendfile(int out_fd, int in_fd, loff_t *ppos,
retval = in_file->f_op->sendfile(in_file, ppos, count, file_send_actor, out_file);
if (retval > 0) {
current->rchar += retval;
current->wchar += retval;
add_rchar(current, retval);
add_wchar(current, retval);
}
current->syscr++;
current->syscw++;
inc_syscr(current);
inc_syscw(current);
if (*ppos > max)
retval = -EOVERFLOW;