From: Eric Dumazet <dada1@cosmosbay.com>
To: Andi Kleen <ak@suse.de>
Cc: Andrew Morton <akpm@osdl.org>, linux-kernel@vger.kernel.org
Subject: [PATCH] small change to fget()
Date: Mon, 29 Mar 2004 11:37:53 +0200 [thread overview]
Message-ID: <4067EE71.4000205@cosmosbay.com> (raw)
In-Reply-To: <p7365co848r.fsf@nielsen.suse.de>
Hello all
This one liner patch permits to save 2 instructions in the fget()
function, at least on x86_64 SMP (only one ref to current->files)
diff -Nru linux-2.6.2/fs/file_table.c linux-2.6.2-custom/fs/file_table.c
--- linux-2.6.2/fs/file_table.c 2004-02-04 17:59:43.000000000 +0100
+++ linux-2.6.2-custom/fs/file_table.c 2004-03-29
11:26:42.170555000 +0200
@@ -198,7 +198,7 @@
struct files_struct *files = current->files;
spin_lock(&files->file_lock);
- file = fcheck(fd);
+ file = fcheck_files(files,fd) ;
if (file)
get_file(file);
spin_unlock(&files->file_lock);
The assembly code was (oprofile data included) :
ffffffff8016c3d0 <fget>: /* fget total: 921168 0.1624 */
51191 0.0090 :ffffffff8016c3d0: mov %gs:0x0,%rax
76621 0.0135 :ffffffff8016c3d9: mov 0x7e8(%rax),%rsi
121592 0.0214 :ffffffff8016c3e0: lock decb 0x4(%rsi)
11278 0.0020 :ffffffff8016c3e4: js ffffffff8016c5e8
<.text.lock.file_table+0x20>
122737 0.0216 :ffffffff8016c3ea: mov %gs:0x0,%rax
174870 0.0308 :ffffffff8016c3f3: mov 0x7e8(%rax),%rcx
2274 4.0e-04 :ffffffff8016c3fa: xor %eax,%eax
77418 0.0137 :ffffffff8016c3fc: cmp 0x8(%rcx),%edi
3417 6.0e-04 :ffffffff8016c3ff: jae ffffffff8016c40b <fget+0x3b>
8184 0.0014 :ffffffff8016c401: mov 0x18(%rcx),%rax
37585 0.0066 :ffffffff8016c405: mov %edi,%edx
7357 0.0013 :ffffffff8016c407: mov (%rax,%rdx,8),%rax
5817 0.0010 :ffffffff8016c40b: test %rax,%rax
57910 0.0102 :ffffffff8016c40e: je ffffffff8016c414 <fget+0x44>
3401 6.0e-04 :ffffffff8016c410: lock incl 0x28(%rax)
7729 0.0014 :ffffffff8016c414: movb $0x1,0x4(%rsi)
151787 0.0268 :ffffffff8016c418: retq
And it is now :
380: 65 48 8b 04 25 00 00 mov %gs:0x0,%rax
387: 00 00
389: 48 8b 88 e8 07 00 00 mov 0x7e8(%rax),%rcx
390: f0 fe 49 04 lock decb 0x4(%rcx)
394: 0f 88 ee 01 00 00 js 588 <.text.lock.file_table+0x20>
39a: 31 c0 xor %eax,%eax
39c: 3b 79 08 cmp 0x8(%rcx),%edi
39f: 73 0a jae 3ab <fget+0x2b>
3a1: 48 8b 41 18 mov 0x18(%rcx),%rax
3a5: 89 fa mov %edi,%edx
3a7: 48 8b 04 d0 mov (%rax,%rdx,8),%rax
3ab: 48 85 c0 test %rax,%rax
3ae: 74 04 je 3b4 <fget+0x34>
3b0: f0 ff 40 28 lock incl 0x28(%rax)
3b4: c6 41 04 01 movb $0x1,0x4(%rcx)
3b8: c3 retq
Thanks
next prev parent reply other threads:[~2004-03-29 9:38 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-03-29 6:32 [PATCH] ppc32: Fix sector_t definition with CONFIG_LBD Benjamin Herrenschmidt
2004-03-29 7:03 ` Andrew Morton
[not found] ` <20040328230351.1a0d0e9c.akpm@osdl.org.suse.lists.linux.kernel>
2004-03-29 8:08 ` Andi Kleen
2004-03-29 9:37 ` Eric Dumazet [this message]
2004-03-29 13:18 ` Benjamin Herrenschmidt
2004-03-29 10:00 ` Andi Kleen
2004-03-29 13:10 ` Anton Blanchard
2004-03-29 13:19 ` Christoph Hellwig
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4067EE71.4000205@cosmosbay.com \
--to=dada1@cosmosbay.com \
--cc=ak@suse.de \
--cc=akpm@osdl.org \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.