Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

proc: : uninline name_to_int()

Save ~360 bytes.

add/remove: 1/0 grow/shrink: 0/4 up/down: 104/-463 (-359)
function old new delta
name_to_int - 104 +104
proc_pid_lookup 217 126 -91
proc_lookupfd_common 212 121 -91
proc_task_lookup 289 194 -95
__proc_create 588 402 -186

Link: http://lkml.kernel.org/r/20170912194850.GA17730@avx2
Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

authored by

Alexey Dobriyan and committed by
Linus Torvalds
3ee2a199 c6434012

+25 -22
+1
fs/proc/Makefile
··· 21 21 proc-y += meminfo.o 22 22 proc-y += stat.o 23 23 proc-y += uptime.o 24 + proc-y += util.o 24 25 proc-y += version.o 25 26 proc-y += softirqs.o 26 27 proc-y += namespaces.o
+1 -22
fs/proc/internal.h
··· 103 103 void task_dump_owner(struct task_struct *task, mode_t mode, 104 104 kuid_t *ruid, kgid_t *rgid); 105 105 106 - static inline unsigned name_to_int(const struct qstr *qstr) 107 - { 108 - const char *name = qstr->name; 109 - int len = qstr->len; 110 - unsigned n = 0; 111 - 112 - if (len > 1 && *name == '0') 113 - goto out; 114 - while (len-- > 0) { 115 - unsigned c = *name++ - '0'; 116 - if (c > 9) 117 - goto out; 118 - if (n >= (~0U-9)/10) 119 - goto out; 120 - n *= 10; 121 - n += c; 122 - } 123 - return n; 124 - out: 125 - return ~0U; 126 - } 127 - 106 + unsigned name_to_int(const struct qstr *qstr); 128 107 /* 129 108 * Offset of the first process in the /proc root directory.. 130 109 */
+23
fs/proc/util.c
··· 1 + #include <linux/dcache.h> 2 + 3 + unsigned name_to_int(const struct qstr *qstr) 4 + { 5 + const char *name = qstr->name; 6 + int len = qstr->len; 7 + unsigned n = 0; 8 + 9 + if (len > 1 && *name == '0') 10 + goto out; 11 + while (len-- > 0) { 12 + unsigned c = *name++ - '0'; 13 + if (c > 9) 14 + goto out; 15 + if (n >= (~0U-9)/10) 16 + goto out; 17 + n *= 10; 18 + n += c; 19 + } 20 + return n; 21 + out: 22 + return ~0U; 23 + }