aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2009-06-05 12:06:05 +0200
committerDenys Vlasenko <vda.linux@googlemail.com>2009-06-05 12:06:05 +0200
commitd5f1b1bbe0a881f66b6bb6951fa54e553002c24d (patch)
treea3da20d19fa86c77e63c08f01d052b196cb1b192
parent8507e1f10927bc6498cf38eb8324a53bde8e0a61 (diff)
downloadbusybox-w32-d5f1b1bbe0a881f66b6bb6951fa54e553002c24d.tar.gz
busybox-w32-d5f1b1bbe0a881f66b6bb6951fa54e553002c24d.tar.bz2
busybox-w32-d5f1b1bbe0a881f66b6bb6951fa54e553002c24d.zip
*: add FAST_FUNC to function ptrs where it makes sense
function old new delta evalcommand 1195 1209 +14 testcmd - 10 +10 printfcmd - 10 +10 echocmd - 10 +10 func_exec 270 276 +6 echo_dg 104 109 +5 store_nlmsg 85 89 +4 pseudo_exec_argv 195 198 +3 dotcmd 287 290 +3 machtime_stream 29 31 +2 discard_stream 24 26 +2 argstr 1299 1301 +2 killcmd 108 109 +1 evalfor 226 227 +1 daytime_stream 43 44 +1 run_list 2544 2543 -1 lookupvar 62 61 -1 ipaddr_modify 1310 1309 -1 ... parse_stream 2254 2245 -9 evalpipe 356 347 -9 collect_if 210 197 -13 read_opt 869 851 -18 handle_dollar 681 658 -23 print_addrinfo 1342 1303 -39 iterate_on_dir 156 59 -97 print_route 1709 1609 -100 ------------------------------------------------------------------------------ (add/remove: 3/0 grow/shrink: 12/130 up/down: 74/-767) Total: -693 bytes text data bss dec hex filename 841748 467 7872 850087 cf8a7 busybox_old 841061 467 7872 849400 cf5f8 busybox_unstripped Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r--e2fsprogs/chattr.c2
-rw-r--r--e2fsprogs/e2fs_lib.c21
-rw-r--r--e2fsprogs/e2fs_lib.h2
-rw-r--r--e2fsprogs/lsattr.c5
-rw-r--r--findutils/find.c15
-rw-r--r--miscutils/devfsd.c25
-rw-r--r--modutils/modutils-24.c117
-rw-r--r--networking/ifupdown.c51
-rw-r--r--networking/inetd.c44
-rw-r--r--networking/libiproute/ipaddress.c7
-rw-r--r--networking/libiproute/iproute.c2
-rw-r--r--networking/libiproute/iprule.c2
-rw-r--r--networking/libiproute/libnetlink.c12
-rw-r--r--networking/libiproute/libnetlink.h10
-rw-r--r--networking/libiproute/ll_map.c12
-rw-r--r--networking/libiproute/ll_map.h12
-rw-r--r--networking/udhcp/files.c16
-rw-r--r--procps/nmeter.c28
-rw-r--r--shell/ash.c161
-rw-r--r--shell/hush.c120
-rw-r--r--util-linux/volume_id/sysv.c3
-rw-r--r--util-linux/volume_id/unused_hpfs.c3
22 files changed, 324 insertions, 346 deletions
diff --git a/e2fsprogs/chattr.c b/e2fsprogs/chattr.c
index b41919be2..ab52cb009 100644
--- a/e2fsprogs/chattr.c
+++ b/e2fsprogs/chattr.c
@@ -67,7 +67,7 @@ static int decode_arg(const char *arg, struct globals *gp)
67 67
68static void change_attributes(const char *name, struct globals *gp); 68static void change_attributes(const char *name, struct globals *gp);
69 69
70static int chattr_dir_proc(const char *dir_name, struct dirent *de, void *gp) 70static int FAST_FUNC chattr_dir_proc(const char *dir_name, struct dirent *de, void *gp)
71{ 71{
72 char *path = concat_subpath_file(dir_name, de->d_name); 72 char *path = concat_subpath_file(dir_name, de->d_name);
73 /* path is NULL if de->d_name is "." or "..", else... */ 73 /* path is NULL if de->d_name is "." or "..", else... */
diff --git a/e2fsprogs/e2fs_lib.c b/e2fsprogs/e2fs_lib.c
index 3e8d95687..70ae1f407 100644
--- a/e2fsprogs/e2fs_lib.c
+++ b/e2fsprogs/e2fs_lib.c
@@ -28,33 +28,20 @@ static void close_silently(int fd)
28 28
29/* Iterate a function on each entry of a directory */ 29/* Iterate a function on each entry of a directory */
30int iterate_on_dir(const char *dir_name, 30int iterate_on_dir(const char *dir_name,
31 int (*func)(const char *, struct dirent *, void *), 31 int FAST_FUNC (*func)(const char *, struct dirent *, void *),
32 void * private) 32 void *private)
33{ 33{
34 DIR *dir; 34 DIR *dir;
35 struct dirent *de, *dep; 35 struct dirent *de;
36 int max_len, len;
37
38 max_len = PATH_MAX + sizeof(struct dirent);
39 de = xmalloc(max_len+1);
40 memset(de, 0, max_len+1);
41 36
42 dir = opendir(dir_name); 37 dir = opendir(dir_name);
43 if (dir == NULL) { 38 if (dir == NULL) {
44 free(de);
45 return -1; 39 return -1;
46 } 40 }
47 while ((dep = readdir(dir))) { 41 while ((de = readdir(dir)) != NULL) {
48 len = sizeof(struct dirent);
49 if (len < dep->d_reclen)
50 len = dep->d_reclen;
51 if (len > max_len)
52 len = max_len;
53 memcpy(de, dep, len);
54 func(dir_name, de, private); 42 func(dir_name, de, private);
55 } 43 }
56 closedir(dir); 44 closedir(dir);
57 free(de);
58 return 0; 45 return 0;
59} 46}
60 47
diff --git a/e2fsprogs/e2fs_lib.h b/e2fsprogs/e2fs_lib.h
index 25b26d382..3905ee71d 100644
--- a/e2fsprogs/e2fs_lib.h
+++ b/e2fsprogs/e2fs_lib.h
@@ -13,7 +13,7 @@ PUSH_AND_SET_FUNCTION_VISIBILITY_TO_HIDDEN
13 13
14/* Iterate a function on each entry of a directory */ 14/* Iterate a function on each entry of a directory */
15int iterate_on_dir(const char *dir_name, 15int iterate_on_dir(const char *dir_name,
16 int (*func)(const char *, struct dirent *, void *), 16 int FAST_FUNC (*func)(const char *, struct dirent *, void *),
17 void *private); 17 void *private);
18 18
19/* Get/set a file version on an ext2 file system */ 19/* Get/set a file version on an ext2 file system */
diff --git a/e2fsprogs/lsattr.c b/e2fsprogs/lsattr.c
index 23a54b72e..7d475a969 100644
--- a/e2fsprogs/lsattr.c
+++ b/e2fsprogs/lsattr.c
@@ -57,8 +57,9 @@ static void list_attributes(const char *name)
57 bb_perror_msg("reading %s", name); 57 bb_perror_msg("reading %s", name);
58} 58}
59 59
60static int lsattr_dir_proc(const char *dir_name, struct dirent *de, 60static int FAST_FUNC lsattr_dir_proc(const char *dir_name,
61 void *private UNUSED_PARAM) 61 struct dirent *de,
62 void *private UNUSED_PARAM)
62{ 63{
63 struct stat st; 64 struct stat st;
64 char *path; 65 char *path;
diff --git a/findutils/find.c b/findutils/find.c
index da024afbf..5e8193ffa 100644
--- a/findutils/find.c
+++ b/findutils/find.c
@@ -65,7 +65,7 @@
65IF_FEATURE_FIND_XDEV(static dev_t *xdev_dev;) 65IF_FEATURE_FIND_XDEV(static dev_t *xdev_dev;)
66IF_FEATURE_FIND_XDEV(static int xdev_count;) 66IF_FEATURE_FIND_XDEV(static int xdev_count;)
67 67
68typedef int (*action_fp)(const char *fileName, struct stat *statbuf, void *); 68typedef int (*action_fp)(const char *fileName, struct stat *statbuf, void *) FAST_FUNC;
69 69
70typedef struct { 70typedef struct {
71 action_fp f; 71 action_fp f;
@@ -73,12 +73,15 @@ typedef struct {
73 bool invert; 73 bool invert;
74#endif 74#endif
75} action; 75} action;
76
76#define ACTS(name, arg...) typedef struct { action a; arg; } action_##name; 77#define ACTS(name, arg...) typedef struct { action a; arg; } action_##name;
77#define ACTF(name) static int func_##name(const char *fileName UNUSED_PARAM, \ 78#define ACTF(name) \
78 struct stat *statbuf UNUSED_PARAM, \ 79 static int FAST_FUNC func_##name(const char *fileName UNUSED_PARAM, \
79 action_##name* ap UNUSED_PARAM) 80 struct stat *statbuf UNUSED_PARAM, \
80 ACTS(print) 81 action_##name* ap UNUSED_PARAM)
81 ACTS(name, const char *pattern; bool iname;) 82
83 ACTS(print)
84 ACTS(name, const char *pattern; bool iname;)
82IF_FEATURE_FIND_PATH( ACTS(path, const char *pattern;)) 85IF_FEATURE_FIND_PATH( ACTS(path, const char *pattern;))
83IF_FEATURE_FIND_REGEX( ACTS(regex, regex_t compiled_pattern;)) 86IF_FEATURE_FIND_REGEX( ACTS(regex, regex_t compiled_pattern;))
84IF_FEATURE_FIND_PRINT0( ACTS(print0)) 87IF_FEATURE_FIND_PRINT0( ACTS(print0))
diff --git a/miscutils/devfsd.c b/miscutils/devfsd.c
index 61b97dce4..5e3ee23b3 100644
--- a/miscutils/devfsd.c
+++ b/miscutils/devfsd.c
@@ -92,8 +92,8 @@
92#define DEVFS_PATHLEN 1024 92#define DEVFS_PATHLEN 1024
93/* Never change this otherwise the binary interface will change */ 93/* Never change this otherwise the binary interface will change */
94 94
95struct devfsd_notify_struct 95struct devfsd_notify_struct {
96{ /* Use native C types to ensure same types in kernel and user space */ 96 /* Use native C types to ensure same types in kernel and user space */
97 unsigned int type; /* DEVFSD_NOTIFY_* value */ 97 unsigned int type; /* DEVFSD_NOTIFY_* value */
98 unsigned int mode; /* Mode of the inode or device entry */ 98 unsigned int mode; /* Mode of the inode or device entry */
99 unsigned int major; /* Major number of device entry */ 99 unsigned int major; /* Major number of device entry */
@@ -151,32 +151,27 @@ struct devfsd_notify_struct
151#define AC_RMNEWCOMPAT 10 151#define AC_RMNEWCOMPAT 10
152#define AC_RESTORE 11 152#define AC_RESTORE 11
153 153
154struct permissions_type 154struct permissions_type {
155{
156 mode_t mode; 155 mode_t mode;
157 uid_t uid; 156 uid_t uid;
158 gid_t gid; 157 gid_t gid;
159}; 158};
160 159
161struct execute_type 160struct execute_type {
162{
163 char *argv[MAX_ARGS + 1]; /* argv[0] must always be the programme */ 161 char *argv[MAX_ARGS + 1]; /* argv[0] must always be the programme */
164}; 162};
165 163
166struct copy_type 164struct copy_type {
167{
168 const char *source; 165 const char *source;
169 const char *destination; 166 const char *destination;
170}; 167};
171 168
172struct action_type 169struct action_type {
173{
174 unsigned int what; 170 unsigned int what;
175 unsigned int when; 171 unsigned int when;
176}; 172};
177 173
178struct config_entry_struct 174struct config_entry_struct {
179{
180 struct action_type action; 175 struct action_type action;
181 regex_t preg; 176 regex_t preg;
182 union 177 union
@@ -189,8 +184,7 @@ struct config_entry_struct
189 struct config_entry_struct *next; 184 struct config_entry_struct *next;
190}; 185};
191 186
192struct get_variable_info 187struct get_variable_info {
193{
194 const struct devfsd_notify_struct *info; 188 const struct devfsd_notify_struct *info;
195 const char *devname; 189 const char *devname;
196 char devpath[STRING_LENGTH]; 190 char devpath[STRING_LENGTH];
@@ -1336,8 +1330,7 @@ static void expand_regexp(char *output, size_t outsize, const char *input,
1336 1330
1337/* from compat_name.c */ 1331/* from compat_name.c */
1338 1332
1339struct translate_struct 1333struct translate_struct {
1340{
1341 const char *match; /* The string to match to(up to length) */ 1334 const char *match; /* The string to match to(up to length) */
1342 const char *format; /* Format of output, "%s" takes data past match string, 1335 const char *format; /* Format of output, "%s" takes data past match string,
1343 NULL is effectively "%s"(just more efficient) */ 1336 NULL is effectively "%s"(just more efficient) */
diff --git a/modutils/modutils-24.c b/modutils/modutils-24.c
index a16cb1bbe..9f91c9979 100644
--- a/modutils/modutils-24.c
+++ b/modutils/modutils-24.c
@@ -511,8 +511,7 @@ int delete_module(const char *module, unsigned int flags);
511struct obj_string_patch; 511struct obj_string_patch;
512struct obj_symbol_patch; 512struct obj_symbol_patch;
513 513
514struct obj_section 514struct obj_section {
515{
516 ElfW(Shdr) header; 515 ElfW(Shdr) header;
517 const char *name; 516 const char *name;
518 char *contents; 517 char *contents;
@@ -520,8 +519,7 @@ struct obj_section
520 int idx; 519 int idx;
521}; 520};
522 521
523struct obj_symbol 522struct obj_symbol {
524{
525 struct obj_symbol *next; /* hash table link */ 523 struct obj_symbol *next; /* hash table link */
526 const char *name; 524 const char *name;
527 unsigned long value; 525 unsigned long value;
@@ -546,8 +544,8 @@ struct obj_file {
546 struct obj_section **load_order_search_start; 544 struct obj_section **load_order_search_start;
547 struct obj_string_patch *string_patches; 545 struct obj_string_patch *string_patches;
548 struct obj_symbol_patch *symbol_patches; 546 struct obj_symbol_patch *symbol_patches;
549 int (*symbol_cmp)(const char *, const char *); 547 int (*symbol_cmp)(const char *, const char *); /* cant be FAST_FUNC */
550 unsigned long (*symbol_hash)(const char *); 548 unsigned long (*symbol_hash)(const char *) FAST_FUNC;
551 unsigned long local_symtab_size; 549 unsigned long local_symtab_size;
552 struct obj_symbol **local_symtab; 550 struct obj_symbol **local_symtab;
553 struct obj_symbol *symtab[HASH_BUCKETS]; 551 struct obj_symbol *symtab[HASH_BUCKETS];
@@ -577,45 +575,45 @@ struct obj_symbol_patch {
577 575
578/* Generic object manipulation routines. */ 576/* Generic object manipulation routines. */
579 577
580static unsigned long obj_elf_hash(const char *); 578static unsigned long FAST_FUNC obj_elf_hash(const char *);
581 579
582static unsigned long obj_elf_hash_n(const char *, unsigned long len); 580static unsigned long obj_elf_hash_n(const char *, unsigned long len);
583 581
584static struct obj_symbol *obj_find_symbol(struct obj_file *f, 582static struct obj_symbol *obj_find_symbol(struct obj_file *f,
585 const char *name); 583 const char *name);
586 584
587static ElfW(Addr) obj_symbol_final_value(struct obj_file *f, 585static ElfW(Addr) obj_symbol_final_value(struct obj_file *f,
588 struct obj_symbol *sym); 586 struct obj_symbol *sym);
589 587
590#if ENABLE_FEATURE_INSMOD_VERSION_CHECKING 588#if ENABLE_FEATURE_INSMOD_VERSION_CHECKING
591static void obj_set_symbol_compare(struct obj_file *f, 589static void obj_set_symbol_compare(struct obj_file *f,
592 int (*cmp)(const char *, const char *), 590 int (*cmp)(const char *, const char *),
593 unsigned long (*hash)(const char *)); 591 unsigned long (*hash)(const char *) FAST_FUNC);
594#endif 592#endif
595 593
596static struct obj_section *obj_find_section(struct obj_file *f, 594static struct obj_section *obj_find_section(struct obj_file *f,
597 const char *name); 595 const char *name);
598 596
599static void obj_insert_section_load_order(struct obj_file *f, 597static void obj_insert_section_load_order(struct obj_file *f,
600 struct obj_section *sec); 598 struct obj_section *sec);
601 599
602static struct obj_section *obj_create_alloced_section(struct obj_file *f, 600static struct obj_section *obj_create_alloced_section(struct obj_file *f,
603 const char *name, 601 const char *name,
604 unsigned long align, 602 unsigned long align,
605 unsigned long size); 603 unsigned long size);
606 604
607static struct obj_section *obj_create_alloced_section_first(struct obj_file *f, 605static struct obj_section *obj_create_alloced_section_first(struct obj_file *f,
608 const char *name, 606 const char *name,
609 unsigned long align, 607 unsigned long align,
610 unsigned long size); 608 unsigned long size);
611 609
612static void *obj_extend_section(struct obj_section *sec, unsigned long more); 610static void *obj_extend_section(struct obj_section *sec, unsigned long more);
613 611
614static void obj_string_patch(struct obj_file *f, int secidx, ElfW(Addr) offset, 612static void obj_string_patch(struct obj_file *f, int secidx, ElfW(Addr) offset,
615 const char *string); 613 const char *string);
616 614
617static void obj_symbol_patch(struct obj_file *f, int secidx, ElfW(Addr) offset, 615static void obj_symbol_patch(struct obj_file *f, int secidx, ElfW(Addr) offset,
618 struct obj_symbol *sym); 616 struct obj_symbol *sym);
619 617
620static void obj_check_undefineds(struct obj_file *f); 618static void obj_check_undefineds(struct obj_file *f);
621 619
@@ -642,10 +640,10 @@ static struct obj_section *arch_new_section(void);
642static struct obj_symbol *arch_new_symbol(void); 640static struct obj_symbol *arch_new_symbol(void);
643 641
644static enum obj_reloc arch_apply_relocation(struct obj_file *f, 642static enum obj_reloc arch_apply_relocation(struct obj_file *f,
645 struct obj_section *targsec, 643 struct obj_section *targsec,
646 /*struct obj_section *symsec,*/ 644 /*struct obj_section *symsec,*/
647 struct obj_symbol *sym, 645 struct obj_symbol *sym,
648 ElfW(RelM) *rel, ElfW(Addr) value); 646 ElfW(RelM) *rel, ElfW(Addr) value);
649 647
650static void arch_create_got(struct obj_file *f); 648static void arch_create_got(struct obj_file *f);
651#if ENABLE_FEATURE_CHECK_TAINTED_MODULE 649#if ENABLE_FEATURE_CHECK_TAINTED_MODULE
@@ -679,8 +677,7 @@ enum { STRVERSIONLEN = 64 };
679 677
680#if defined(USE_LIST) 678#if defined(USE_LIST)
681 679
682struct arch_list_entry 680struct arch_list_entry {
683{
684 struct arch_list_entry *next; 681 struct arch_list_entry *next;
685 LIST_ARCHTYPE addend; 682 LIST_ARCHTYPE addend;
686 int offset; 683 int offset;
@@ -691,8 +688,7 @@ struct arch_list_entry
691 688
692#if defined(USE_SINGLE) 689#if defined(USE_SINGLE)
693 690
694struct arch_single_entry 691struct arch_single_entry {
695{
696 int offset; 692 int offset;
697 int inited : 1; 693 int inited : 1;
698 int allocated : 1; 694 int allocated : 1;
@@ -701,8 +697,7 @@ struct arch_single_entry
701#endif 697#endif
702 698
703#if defined(__mips__) 699#if defined(__mips__)
704struct mips_hi16 700struct mips_hi16 {
705{
706 struct mips_hi16 *next; 701 struct mips_hi16 *next;
707 ElfW(Addr) *addr; 702 ElfW(Addr) *addr;
708 ElfW(Addr) value; 703 ElfW(Addr) value;
@@ -776,10 +771,10 @@ static struct obj_symbol *arch_new_symbol(void)
776 771
777static enum obj_reloc 772static enum obj_reloc
778arch_apply_relocation(struct obj_file *f, 773arch_apply_relocation(struct obj_file *f,
779 struct obj_section *targsec, 774 struct obj_section *targsec,
780 /*struct obj_section *symsec,*/ 775 /*struct obj_section *symsec,*/
781 struct obj_symbol *sym, 776 struct obj_symbol *sym,
782 ElfW(RelM) *rel, ElfW(Addr) v) 777 ElfW(RelM) *rel, ElfW(Addr) v)
783{ 778{
784#if defined(__arm__) || defined(__i386__) || defined(__mc68000__) \ 779#if defined(__arm__) || defined(__i386__) || defined(__mc68000__) \
785 || defined(__sh__) || defined(__s390__) || defined(__x86_64__) \ 780 || defined(__sh__) || defined(__s390__) || defined(__x86_64__) \
@@ -1707,7 +1702,7 @@ static int arch_list_add(ElfW(RelM) *rel, struct arch_list_entry **list,
1707#if defined(USE_SINGLE) 1702#if defined(USE_SINGLE)
1708 1703
1709static int arch_single_init(/*ElfW(RelM) *rel,*/ struct arch_single_entry *single, 1704static int arch_single_init(/*ElfW(RelM) *rel,*/ struct arch_single_entry *single,
1710 int offset, int size) 1705 int offset, int size)
1711{ 1706{
1712 if (single->allocated == 0) { 1707 if (single->allocated == 0) {
1713 single->allocated = 1; 1708 single->allocated = 1;
@@ -1723,7 +1718,7 @@ static int arch_single_init(/*ElfW(RelM) *rel,*/ struct arch_single_entry *singl
1723#if defined(USE_GOT_ENTRIES) || defined(USE_PLT_ENTRIES) 1718#if defined(USE_GOT_ENTRIES) || defined(USE_PLT_ENTRIES)
1724 1719
1725static struct obj_section *arch_xsect_init(struct obj_file *f, const char *name, 1720static struct obj_section *arch_xsect_init(struct obj_file *f, const char *name,
1726 int offset, int size) 1721 int offset, int size)
1727{ 1722{
1728 struct obj_section *myrelsec = obj_find_section(f, name); 1723 struct obj_section *myrelsec = obj_find_section(f, name);
1729 1724
@@ -1916,7 +1911,7 @@ static unsigned long obj_elf_hash_n(const char *name, unsigned long n)
1916 return h; 1911 return h;
1917} 1912}
1918 1913
1919static unsigned long obj_elf_hash(const char *name) 1914static unsigned long FAST_FUNC obj_elf_hash(const char *name)
1920{ 1915{
1921 return obj_elf_hash_n(name, strlen(name)); 1916 return obj_elf_hash_n(name, strlen(name));
1922} 1917}
@@ -1939,7 +1934,7 @@ static int ncv_strcmp(const char *a, const char *b)
1939/* String hashing for non-co-versioned kernel and module. Here 1934/* String hashing for non-co-versioned kernel and module. Here
1940 we are simply forced to drop the crc from the hash. */ 1935 we are simply forced to drop the crc from the hash. */
1941 1936
1942static unsigned long ncv_symbol_hash(const char *str) 1937static unsigned long FAST_FUNC ncv_symbol_hash(const char *str)
1943{ 1938{
1944 size_t len = strlen(str); 1939 size_t len = strlen(str);
1945 if (len > 10 && str[len - 10] == '_' && str[len - 9] == 'R') 1940 if (len > 10 && str[len - 10] == '_' && str[len - 9] == 'R')
@@ -1949,8 +1944,8 @@ static unsigned long ncv_symbol_hash(const char *str)
1949 1944
1950static void 1945static void
1951obj_set_symbol_compare(struct obj_file *f, 1946obj_set_symbol_compare(struct obj_file *f,
1952 int (*cmp) (const char *, const char *), 1947 int (*cmp) (const char *, const char *),
1953 unsigned long (*hash) (const char *)) 1948 unsigned long (*hash) (const char *) FAST_FUNC)
1954{ 1949{
1955 if (cmp) 1950 if (cmp)
1956 f->symbol_cmp = cmp; 1951 f->symbol_cmp = cmp;
@@ -1963,13 +1958,14 @@ obj_set_symbol_compare(struct obj_file *f,
1963 memcpy(tmptab, f->symtab, sizeof(tmptab)); 1958 memcpy(tmptab, f->symtab, sizeof(tmptab));
1964 memset(f->symtab, 0, sizeof(f->symtab)); 1959 memset(f->symtab, 0, sizeof(f->symtab));
1965 1960
1966 for (i = 0; i < HASH_BUCKETS; ++i) 1961 for (i = 0; i < HASH_BUCKETS; ++i) {
1967 for (sym = tmptab[i]; sym; sym = next) { 1962 for (sym = tmptab[i]; sym; sym = next) {
1968 unsigned long h = hash(sym->name) % HASH_BUCKETS; 1963 unsigned long h = hash(sym->name) % HASH_BUCKETS;
1969 next = sym->next; 1964 next = sym->next;
1970 sym->next = f->symtab[h]; 1965 sym->next = f->symtab[h];
1971 f->symtab[h] = sym; 1966 f->symtab[h] = sym;
1972 } 1967 }
1968 }
1973 } 1969 }
1974} 1970}
1975 1971
@@ -1977,9 +1973,9 @@ obj_set_symbol_compare(struct obj_file *f,
1977 1973
1978static struct obj_symbol * 1974static struct obj_symbol *
1979obj_add_symbol(struct obj_file *f, const char *name, 1975obj_add_symbol(struct obj_file *f, const char *name,
1980 unsigned long symidx, int info, 1976 unsigned long symidx, int info,
1981 int secidx, ElfW(Addr) value, 1977 int secidx, ElfW(Addr) value,
1982 unsigned long size) 1978 unsigned long size)
1983{ 1979{
1984 struct obj_symbol *sym; 1980 struct obj_symbol *sym;
1985 unsigned long hash = f->symbol_hash(name) % HASH_BUCKETS; 1981 unsigned long hash = f->symbol_hash(name) % HASH_BUCKETS;
@@ -2140,9 +2136,9 @@ obj_insert_section_load_order(struct obj_file *f, struct obj_section *sec)
2140} 2136}
2141 2137
2142static struct obj_section *helper_create_alloced_section(struct obj_file *f, 2138static struct obj_section *helper_create_alloced_section(struct obj_file *f,
2143 const char *name, 2139 const char *name,
2144 unsigned long align, 2140 unsigned long align,
2145 unsigned long size) 2141 unsigned long size)
2146{ 2142{
2147 int newidx = f->header.e_shnum++; 2143 int newidx = f->header.e_shnum++;
2148 struct obj_section *sec; 2144 struct obj_section *sec;
@@ -2163,9 +2159,9 @@ static struct obj_section *helper_create_alloced_section(struct obj_file *f,
2163} 2159}
2164 2160
2165static struct obj_section *obj_create_alloced_section(struct obj_file *f, 2161static struct obj_section *obj_create_alloced_section(struct obj_file *f,
2166 const char *name, 2162 const char *name,
2167 unsigned long align, 2163 unsigned long align,
2168 unsigned long size) 2164 unsigned long size)
2169{ 2165{
2170 struct obj_section *sec; 2166 struct obj_section *sec;
2171 2167
@@ -2175,9 +2171,9 @@ static struct obj_section *obj_create_alloced_section(struct obj_file *f,
2175} 2171}
2176 2172
2177static struct obj_section *obj_create_alloced_section_first(struct obj_file *f, 2173static struct obj_section *obj_create_alloced_section_first(struct obj_file *f,
2178 const char *name, 2174 const char *name,
2179 unsigned long align, 2175 unsigned long align,
2180 unsigned long size) 2176 unsigned long size)
2181{ 2177{
2182 struct obj_section *sec; 2178 struct obj_section *sec;
2183 2179
@@ -2205,9 +2201,9 @@ static void *obj_extend_section(struct obj_section *sec, unsigned long more)
2205 new module. */ 2201 new module. */
2206 2202
2207static int add_symbols_from(struct obj_file *f, 2203static int add_symbols_from(struct obj_file *f,
2208 int idx, 2204 int idx,
2209 struct new_module_symbol *syms, 2205 struct new_module_symbol *syms,
2210 size_t nsyms) 2206 size_t nsyms)
2211{ 2207{
2212 struct new_module_symbol *s; 2208 struct new_module_symbol *s;
2213 size_t i; 2209 size_t i;
@@ -2885,7 +2881,7 @@ obj_string_patch(struct obj_file *f, int secidx, ElfW(Addr) offset,
2885 2881
2886static void 2882static void
2887obj_symbol_patch(struct obj_file *f, int secidx, ElfW(Addr) offset, 2883obj_symbol_patch(struct obj_file *f, int secidx, ElfW(Addr) offset,
2888 struct obj_symbol *sym) 2884 struct obj_symbol *sym)
2889{ 2885{
2890 struct obj_symbol_patch *p; 2886 struct obj_symbol_patch *p;
2891 2887
@@ -3491,7 +3487,8 @@ static int obj_gpl_license(struct obj_file *f, const char **license)
3491#define TAINT_URL "http://www.tux.org/lkml/#export-tainted" 3487#define TAINT_URL "http://www.tux.org/lkml/#export-tainted"
3492 3488
3493static void set_tainted(int fd, const char *m_name, 3489static void set_tainted(int fd, const char *m_name,
3494 int kernel_has_tainted, int taint, const char *text1, const char *text2) 3490 int kernel_has_tainted, int taint,
3491 const char *text1, const char *text2)
3495{ 3492{
3496 static smallint printed_info; 3493 static smallint printed_info;
3497 3494
@@ -3586,7 +3583,7 @@ get_module_version(struct obj_file *f, char str[STRVERSIONLEN])
3586 */ 3583 */
3587static void 3584static void
3588add_ksymoops_symbols(struct obj_file *f, const char *filename, 3585add_ksymoops_symbols(struct obj_file *f, const char *filename,
3589 const char *m_name) 3586 const char *m_name)
3590{ 3587{
3591 static const char symprefix[] ALIGN1 = "__insmod_"; 3588 static const char symprefix[] ALIGN1 = "__insmod_";
3592 static const char section_names[][8] = { 3589 static const char section_names[][8] = {
diff --git a/networking/ifupdown.c b/networking/ifupdown.c
index 604a216d4..6d608105e 100644
--- a/networking/ifupdown.c
+++ b/networking/ifupdown.c
@@ -42,8 +42,8 @@ typedef int execfn(char *command);
42 42
43struct method_t { 43struct method_t {
44 const char *name; 44 const char *name;
45 int (*up)(struct interface_defn_t *ifd, execfn *e); 45 int (*up)(struct interface_defn_t *ifd, execfn *e) FAST_FUNC;
46 int (*down)(struct interface_defn_t *ifd, execfn *e); 46 int (*down)(struct interface_defn_t *ifd, execfn *e) FAST_FUNC;
47}; 47};
48 48
49struct address_family_t { 49struct address_family_t {
@@ -325,7 +325,7 @@ static int execute(const char *command, struct interface_defn_t *ifd, execfn *ex
325#endif 325#endif
326 326
327#if ENABLE_FEATURE_IFUPDOWN_IPV6 327#if ENABLE_FEATURE_IFUPDOWN_IPV6
328static int loopback_up6(struct interface_defn_t *ifd, execfn *exec) 328static int FAST_FUNC loopback_up6(struct interface_defn_t *ifd, execfn *exec)
329{ 329{
330#if ENABLE_FEATURE_IFUPDOWN_IP 330#if ENABLE_FEATURE_IFUPDOWN_IP
331 int result; 331 int result;
@@ -337,7 +337,7 @@ static int loopback_up6(struct interface_defn_t *ifd, execfn *exec)
337#endif 337#endif
338} 338}
339 339
340static int loopback_down6(struct interface_defn_t *ifd, execfn *exec) 340static int FAST_FUNC loopback_down6(struct interface_defn_t *ifd, execfn *exec)
341{ 341{
342#if ENABLE_FEATURE_IFUPDOWN_IP 342#if ENABLE_FEATURE_IFUPDOWN_IP
343 return execute("ip link set %iface% down", ifd, exec); 343 return execute("ip link set %iface% down", ifd, exec);
@@ -346,7 +346,7 @@ static int loopback_down6(struct interface_defn_t *ifd, execfn *exec)
346#endif 346#endif
347} 347}
348 348
349static int static_up6(struct interface_defn_t *ifd, execfn *exec) 349static int FAST_FUNC static_up6(struct interface_defn_t *ifd, execfn *exec)
350{ 350{
351 int result; 351 int result;
352#if ENABLE_FEATURE_IFUPDOWN_IP 352#if ENABLE_FEATURE_IFUPDOWN_IP
@@ -362,7 +362,7 @@ static int static_up6(struct interface_defn_t *ifd, execfn *exec)
362 return ((result == 3) ? 3 : 0); 362 return ((result == 3) ? 3 : 0);
363} 363}
364 364
365static int static_down6(struct interface_defn_t *ifd, execfn *exec) 365static int FAST_FUNC static_down6(struct interface_defn_t *ifd, execfn *exec)
366{ 366{
367#if ENABLE_FEATURE_IFUPDOWN_IP 367#if ENABLE_FEATURE_IFUPDOWN_IP
368 return execute("ip link set %iface% down", ifd, exec); 368 return execute("ip link set %iface% down", ifd, exec);
@@ -372,7 +372,7 @@ static int static_down6(struct interface_defn_t *ifd, execfn *exec)
372} 372}
373 373
374#if ENABLE_FEATURE_IFUPDOWN_IP 374#if ENABLE_FEATURE_IFUPDOWN_IP
375static int v4tunnel_up(struct interface_defn_t *ifd, execfn *exec) 375static int FAST_FUNC v4tunnel_up(struct interface_defn_t *ifd, execfn *exec)
376{ 376{
377 int result; 377 int result;
378 result = execute("ip tunnel add %iface% mode sit remote " 378 result = execute("ip tunnel add %iface% mode sit remote "
@@ -383,7 +383,7 @@ static int v4tunnel_up(struct interface_defn_t *ifd, execfn *exec)
383 return ((result == 4) ? 4 : 0); 383 return ((result == 4) ? 4 : 0);
384} 384}
385 385
386static int v4tunnel_down(struct interface_defn_t * ifd, execfn * exec) 386static int FAST_FUNC v4tunnel_down(struct interface_defn_t * ifd, execfn * exec)
387{ 387{
388 return execute("ip tunnel del %iface%", ifd, exec); 388 return execute("ip tunnel del %iface%", ifd, exec);
389} 389}
@@ -405,7 +405,7 @@ static const struct address_family_t addr_inet6 = {
405#endif /* FEATURE_IFUPDOWN_IPV6 */ 405#endif /* FEATURE_IFUPDOWN_IPV6 */
406 406
407#if ENABLE_FEATURE_IFUPDOWN_IPV4 407#if ENABLE_FEATURE_IFUPDOWN_IPV4
408static int loopback_up(struct interface_defn_t *ifd, execfn *exec) 408static int FAST_FUNC loopback_up(struct interface_defn_t *ifd, execfn *exec)
409{ 409{
410#if ENABLE_FEATURE_IFUPDOWN_IP 410#if ENABLE_FEATURE_IFUPDOWN_IP
411 int result; 411 int result;
@@ -417,7 +417,7 @@ static int loopback_up(struct interface_defn_t *ifd, execfn *exec)
417#endif 417#endif
418} 418}
419 419
420static int loopback_down(struct interface_defn_t *ifd, execfn *exec) 420static int FAST_FUNC loopback_down(struct interface_defn_t *ifd, execfn *exec)
421{ 421{
422#if ENABLE_FEATURE_IFUPDOWN_IP 422#if ENABLE_FEATURE_IFUPDOWN_IP
423 int result; 423 int result;
@@ -429,7 +429,7 @@ static int loopback_down(struct interface_defn_t *ifd, execfn *exec)
429#endif 429#endif
430} 430}
431 431
432static int static_up(struct interface_defn_t *ifd, execfn *exec) 432static int FAST_FUNC static_up(struct interface_defn_t *ifd, execfn *exec)
433{ 433{
434 int result; 434 int result;
435#if ENABLE_FEATURE_IFUPDOWN_IP 435#if ENABLE_FEATURE_IFUPDOWN_IP
@@ -451,7 +451,7 @@ static int static_up(struct interface_defn_t *ifd, execfn *exec)
451#endif 451#endif
452} 452}
453 453
454static int static_down(struct interface_defn_t *ifd, execfn *exec) 454static int FAST_FUNC static_down(struct interface_defn_t *ifd, execfn *exec)
455{ 455{
456 int result; 456 int result;
457#if ENABLE_FEATURE_IFUPDOWN_IP 457#if ENABLE_FEATURE_IFUPDOWN_IP
@@ -468,8 +468,7 @@ static int static_down(struct interface_defn_t *ifd, execfn *exec)
468} 468}
469 469
470#if ENABLE_FEATURE_IFUPDOWN_EXTERNAL_DHCP 470#if ENABLE_FEATURE_IFUPDOWN_EXTERNAL_DHCP
471struct dhcp_client_t 471struct dhcp_client_t {
472{
473 const char *name; 472 const char *name;
474 const char *startcmd; 473 const char *startcmd;
475 const char *stopcmd; 474 const char *stopcmd;
@@ -497,7 +496,7 @@ static const struct dhcp_client_t ext_dhcp_clients[] = {
497#endif /* ENABLE_FEATURE_IFUPDOWN_EXTERNAL_DHCPC */ 496#endif /* ENABLE_FEATURE_IFUPDOWN_EXTERNAL_DHCPC */
498 497
499#if ENABLE_FEATURE_IFUPDOWN_EXTERNAL_DHCP 498#if ENABLE_FEATURE_IFUPDOWN_EXTERNAL_DHCP
500static int dhcp_up(struct interface_defn_t *ifd, execfn *exec) 499static int FAST_FUNC dhcp_up(struct interface_defn_t *ifd, execfn *exec)
501{ 500{
502 unsigned i; 501 unsigned i;
503#if ENABLE_FEATURE_IFUPDOWN_IP 502#if ENABLE_FEATURE_IFUPDOWN_IP
@@ -517,7 +516,7 @@ static int dhcp_up(struct interface_defn_t *ifd, execfn *exec)
517 return 0; 516 return 0;
518} 517}
519#elif ENABLE_APP_UDHCPC 518#elif ENABLE_APP_UDHCPC
520static int dhcp_up(struct interface_defn_t *ifd, execfn *exec) 519static int FAST_FUNC dhcp_up(struct interface_defn_t *ifd, execfn *exec)
521{ 520{
522#if ENABLE_FEATURE_IFUPDOWN_IP 521#if ENABLE_FEATURE_IFUPDOWN_IP
523 /* ip doesn't up iface when it configures it (unlike ifconfig) */ 522 /* ip doesn't up iface when it configures it (unlike ifconfig) */
@@ -533,7 +532,7 @@ static int dhcp_up(struct interface_defn_t *ifd, execfn *exec)
533 ifd, exec); 532 ifd, exec);
534} 533}
535#else 534#else
536static int dhcp_up(struct interface_defn_t *ifd UNUSED_PARAM, 535static int FAST_FUNC dhcp_up(struct interface_defn_t *ifd UNUSED_PARAM,
537 execfn *exec UNUSED_PARAM) 536 execfn *exec UNUSED_PARAM)
538{ 537{
539 return 0; /* no dhcp support */ 538 return 0; /* no dhcp support */
@@ -541,7 +540,7 @@ static int dhcp_up(struct interface_defn_t *ifd UNUSED_PARAM,
541#endif 540#endif
542 541
543#if ENABLE_FEATURE_IFUPDOWN_EXTERNAL_DHCP 542#if ENABLE_FEATURE_IFUPDOWN_EXTERNAL_DHCP
544static int dhcp_down(struct interface_defn_t *ifd, execfn *exec) 543static int FAST_FUNC dhcp_down(struct interface_defn_t *ifd, execfn *exec)
545{ 544{
546 int result = 0; 545 int result = 0;
547 unsigned i; 546 unsigned i;
@@ -564,7 +563,7 @@ static int dhcp_down(struct interface_defn_t *ifd, execfn *exec)
564 return ((result == 3) ? 3 : 0); 563 return ((result == 3) ? 3 : 0);
565} 564}
566#elif ENABLE_APP_UDHCPC 565#elif ENABLE_APP_UDHCPC
567static int dhcp_down(struct interface_defn_t *ifd, execfn *exec) 566static int FAST_FUNC dhcp_down(struct interface_defn_t *ifd, execfn *exec)
568{ 567{
569 int result; 568 int result;
570 result = execute("kill " 569 result = execute("kill "
@@ -579,42 +578,42 @@ static int dhcp_down(struct interface_defn_t *ifd, execfn *exec)
579 return ((result == 3) ? 3 : 0); 578 return ((result == 3) ? 3 : 0);
580} 579}
581#else 580#else
582static int dhcp_down(struct interface_defn_t *ifd UNUSED_PARAM, 581static int FAST_FUNC dhcp_down(struct interface_defn_t *ifd UNUSED_PARAM,
583 execfn *exec UNUSED_PARAM) 582 execfn *exec UNUSED_PARAM)
584{ 583{
585 return 0; /* no dhcp support */ 584 return 0; /* no dhcp support */
586} 585}
587#endif 586#endif
588 587
589static int manual_up_down(struct interface_defn_t *ifd UNUSED_PARAM, execfn *exec UNUSED_PARAM) 588static int FAST_FUNC manual_up_down(struct interface_defn_t *ifd UNUSED_PARAM, execfn *exec UNUSED_PARAM)
590{ 589{
591 return 1; 590 return 1;
592} 591}
593 592
594static int bootp_up(struct interface_defn_t *ifd, execfn *exec) 593static int FAST_FUNC bootp_up(struct interface_defn_t *ifd, execfn *exec)
595{ 594{
596 return execute("bootpc[[ --bootfile %bootfile%]] --dev %iface%" 595 return execute("bootpc[[ --bootfile %bootfile%]] --dev %iface%"
597 "[[ --server %server%]][[ --hwaddr %hwaddr%]]" 596 "[[ --server %server%]][[ --hwaddr %hwaddr%]]"
598 " --returniffail --serverbcast", ifd, exec); 597 " --returniffail --serverbcast", ifd, exec);
599} 598}
600 599
601static int ppp_up(struct interface_defn_t *ifd, execfn *exec) 600static int FAST_FUNC ppp_up(struct interface_defn_t *ifd, execfn *exec)
602{ 601{
603 return execute("pon[[ %provider%]]", ifd, exec); 602 return execute("pon[[ %provider%]]", ifd, exec);
604} 603}
605 604
606static int ppp_down(struct interface_defn_t *ifd, execfn *exec) 605static int FAST_FUNC ppp_down(struct interface_defn_t *ifd, execfn *exec)
607{ 606{
608 return execute("poff[[ %provider%]]", ifd, exec); 607 return execute("poff[[ %provider%]]", ifd, exec);
609} 608}
610 609
611static int wvdial_up(struct interface_defn_t *ifd, execfn *exec) 610static int FAST_FUNC wvdial_up(struct interface_defn_t *ifd, execfn *exec)
612{ 611{
613 return execute("start-stop-daemon --start -x wvdial " 612 return execute("start-stop-daemon --start -x wvdial "
614 "-p /var/run/wvdial.%iface% -b -m --[[ %provider%]]", ifd, exec); 613 "-p /var/run/wvdial.%iface% -b -m --[[ %provider%]]", ifd, exec);
615} 614}
616 615
617static int wvdial_down(struct interface_defn_t *ifd, execfn *exec) 616static int FAST_FUNC wvdial_down(struct interface_defn_t *ifd, execfn *exec)
618{ 617{
619 return execute("start-stop-daemon --stop -x wvdial " 618 return execute("start-stop-daemon --stop -x wvdial "
620 "-p /var/run/wvdial.%iface% -s 2", ifd, exec); 619 "-p /var/run/wvdial.%iface% -s 2", ifd, exec);
diff --git a/networking/inetd.c b/networking/inetd.c
index 751010bc8..031edc397 100644
--- a/networking/inetd.c
+++ b/networking/inetd.c
@@ -239,36 +239,36 @@ typedef struct servtab_t {
239#ifdef INETD_BUILTINS_ENABLED 239#ifdef INETD_BUILTINS_ENABLED
240/* Echo received data */ 240/* Echo received data */
241#if ENABLE_FEATURE_INETD_SUPPORT_BUILTIN_ECHO 241#if ENABLE_FEATURE_INETD_SUPPORT_BUILTIN_ECHO
242static void echo_stream(int, servtab_t *); 242static void FAST_FUNC echo_stream(int, servtab_t *);
243static void echo_dg(int, servtab_t *); 243static void FAST_FUNC echo_dg(int, servtab_t *);
244#endif 244#endif
245/* Internet /dev/null */ 245/* Internet /dev/null */
246#if ENABLE_FEATURE_INETD_SUPPORT_BUILTIN_DISCARD 246#if ENABLE_FEATURE_INETD_SUPPORT_BUILTIN_DISCARD
247static void discard_stream(int, servtab_t *); 247static void FAST_FUNC discard_stream(int, servtab_t *);
248static void discard_dg(int, servtab_t *); 248static void FAST_FUNC discard_dg(int, servtab_t *);
249#endif 249#endif
250/* Return 32 bit time since 1900 */ 250/* Return 32 bit time since 1900 */
251#if ENABLE_FEATURE_INETD_SUPPORT_BUILTIN_TIME 251#if ENABLE_FEATURE_INETD_SUPPORT_BUILTIN_TIME
252static void machtime_stream(int, servtab_t *); 252static void FAST_FUNC machtime_stream(int, servtab_t *);
253static void machtime_dg(int, servtab_t *); 253static void FAST_FUNC machtime_dg(int, servtab_t *);
254#endif 254#endif
255/* Return human-readable time */ 255/* Return human-readable time */
256#if ENABLE_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME 256#if ENABLE_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME
257static void daytime_stream(int, servtab_t *); 257static void FAST_FUNC daytime_stream(int, servtab_t *);
258static void daytime_dg(int, servtab_t *); 258static void FAST_FUNC daytime_dg(int, servtab_t *);
259#endif 259#endif
260/* Familiar character generator */ 260/* Familiar character generator */
261#if ENABLE_FEATURE_INETD_SUPPORT_BUILTIN_CHARGEN 261#if ENABLE_FEATURE_INETD_SUPPORT_BUILTIN_CHARGEN
262static void chargen_stream(int, servtab_t *); 262static void FAST_FUNC chargen_stream(int, servtab_t *);
263static void chargen_dg(int, servtab_t *); 263static void FAST_FUNC chargen_dg(int, servtab_t *);
264#endif 264#endif
265 265
266struct builtin { 266struct builtin {
267 /* NB: not necessarily NUL terminated */ 267 /* NB: not necessarily NUL terminated */
268 char bi_service7[7]; /* internally provided service name */ 268 char bi_service7[7]; /* internally provided service name */
269 uint8_t bi_fork; /* 1 if stream fn should run in child */ 269 uint8_t bi_fork; /* 1 if stream fn should run in child */
270 void (*bi_stream_fn)(int, servtab_t *); 270 void (*bi_stream_fn)(int, servtab_t *) FAST_FUNC;
271 void (*bi_dgram_fn)(int, servtab_t *); 271 void (*bi_dgram_fn)(int, servtab_t *) FAST_FUNC;
272}; 272};
273 273
274static const struct builtin builtins[] = { 274static const struct builtin builtins[] = {
@@ -1386,7 +1386,7 @@ static const char *const cat_args[] = { "cat", NULL };
1386#if ENABLE_FEATURE_INETD_SUPPORT_BUILTIN_ECHO 1386#if ENABLE_FEATURE_INETD_SUPPORT_BUILTIN_ECHO
1387/* Echo service -- echo data back. */ 1387/* Echo service -- echo data back. */
1388/* ARGSUSED */ 1388/* ARGSUSED */
1389static void echo_stream(int s, servtab_t *sep UNUSED_PARAM) 1389static void FAST_FUNC echo_stream(int s, servtab_t *sep UNUSED_PARAM)
1390{ 1390{
1391#if BB_MMU 1391#if BB_MMU
1392 while (1) { 1392 while (1) {
@@ -1407,7 +1407,7 @@ static void echo_stream(int s, servtab_t *sep UNUSED_PARAM)
1407 /* on failure we return to main, which does exit(EXIT_FAILURE) */ 1407 /* on failure we return to main, which does exit(EXIT_FAILURE) */
1408#endif 1408#endif
1409} 1409}
1410static void echo_dg(int s, servtab_t *sep) 1410static void FAST_FUNC echo_dg(int s, servtab_t *sep)
1411{ 1411{
1412 enum { BUFSIZE = 12*1024 }; /* for jumbo sized packets! :) */ 1412 enum { BUFSIZE = 12*1024 }; /* for jumbo sized packets! :) */
1413 char *buf = xmalloc(BUFSIZE); /* too big for stack */ 1413 char *buf = xmalloc(BUFSIZE); /* too big for stack */
@@ -1427,7 +1427,7 @@ static void echo_dg(int s, servtab_t *sep)
1427#if ENABLE_FEATURE_INETD_SUPPORT_BUILTIN_DISCARD 1427#if ENABLE_FEATURE_INETD_SUPPORT_BUILTIN_DISCARD
1428/* Discard service -- ignore data. */ 1428/* Discard service -- ignore data. */
1429/* ARGSUSED */ 1429/* ARGSUSED */
1430static void discard_stream(int s, servtab_t *sep UNUSED_PARAM) 1430static void FAST_FUNC discard_stream(int s, servtab_t *sep UNUSED_PARAM)
1431{ 1431{
1432#if BB_MMU 1432#if BB_MMU
1433 while (safe_read(s, line, LINE_SIZE) > 0) 1433 while (safe_read(s, line, LINE_SIZE) > 0)
@@ -1446,7 +1446,7 @@ static void discard_stream(int s, servtab_t *sep UNUSED_PARAM)
1446#endif 1446#endif
1447} 1447}
1448/* ARGSUSED */ 1448/* ARGSUSED */
1449static void discard_dg(int s, servtab_t *sep UNUSED_PARAM) 1449static void FAST_FUNC discard_dg(int s, servtab_t *sep UNUSED_PARAM)
1450{ 1450{
1451 /* dgram builtins are non-forking - DONT BLOCK! */ 1451 /* dgram builtins are non-forking - DONT BLOCK! */
1452 recv(s, line, LINE_SIZE, MSG_DONTWAIT); 1452 recv(s, line, LINE_SIZE, MSG_DONTWAIT);
@@ -1467,7 +1467,7 @@ static void init_ring(void)
1467} 1467}
1468/* Character generator. MMU arches only. */ 1468/* Character generator. MMU arches only. */
1469/* ARGSUSED */ 1469/* ARGSUSED */
1470static void chargen_stream(int s, servtab_t *sep UNUSED_PARAM) 1470static void FAST_FUNC chargen_stream(int s, servtab_t *sep UNUSED_PARAM)
1471{ 1471{
1472 char *rs; 1472 char *rs;
1473 int len; 1473 int len;
@@ -1495,7 +1495,7 @@ static void chargen_stream(int s, servtab_t *sep UNUSED_PARAM)
1495 } 1495 }
1496} 1496}
1497/* ARGSUSED */ 1497/* ARGSUSED */
1498static void chargen_dg(int s, servtab_t *sep) 1498static void FAST_FUNC chargen_dg(int s, servtab_t *sep)
1499{ 1499{
1500 int len; 1500 int len;
1501 char text[LINESIZ + 2]; 1501 char text[LINESIZ + 2];
@@ -1544,14 +1544,14 @@ static uint32_t machtime(void)
1544 return htonl((uint32_t)(tv.tv_sec + 2208988800)); 1544 return htonl((uint32_t)(tv.tv_sec + 2208988800));
1545} 1545}
1546/* ARGSUSED */ 1546/* ARGSUSED */
1547static void machtime_stream(int s, servtab_t *sep UNUSED_PARAM) 1547static void FAST_FUNC machtime_stream(int s, servtab_t *sep UNUSED_PARAM)
1548{ 1548{
1549 uint32_t result; 1549 uint32_t result;
1550 1550
1551 result = machtime(); 1551 result = machtime();
1552 full_write(s, &result, sizeof(result)); 1552 full_write(s, &result, sizeof(result));
1553} 1553}
1554static void machtime_dg(int s, servtab_t *sep) 1554static void FAST_FUNC machtime_dg(int s, servtab_t *sep)
1555{ 1555{
1556 uint32_t result; 1556 uint32_t result;
1557 len_and_sockaddr *lsa = alloca(LSA_LEN_SIZE + sep->se_lsa->len); 1557 len_and_sockaddr *lsa = alloca(LSA_LEN_SIZE + sep->se_lsa->len);
@@ -1569,14 +1569,14 @@ static void machtime_dg(int s, servtab_t *sep)
1569#if ENABLE_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME 1569#if ENABLE_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME
1570/* Return human-readable time of day */ 1570/* Return human-readable time of day */
1571/* ARGSUSED */ 1571/* ARGSUSED */
1572static void daytime_stream(int s, servtab_t *sep UNUSED_PARAM) 1572static void FAST_FUNC daytime_stream(int s, servtab_t *sep UNUSED_PARAM)
1573{ 1573{
1574 time_t t; 1574 time_t t;
1575 1575
1576 t = time(NULL); 1576 t = time(NULL);
1577 fdprintf(s, "%.24s\r\n", ctime(&t)); 1577 fdprintf(s, "%.24s\r\n", ctime(&t));
1578} 1578}
1579static void daytime_dg(int s, servtab_t *sep) 1579static void FAST_FUNC daytime_dg(int s, servtab_t *sep)
1580{ 1580{
1581 time_t t; 1581 time_t t;
1582 len_and_sockaddr *lsa = alloca(LSA_LEN_SIZE + sep->se_lsa->len); 1582 len_and_sockaddr *lsa = alloca(LSA_LEN_SIZE + sep->se_lsa->len);
diff --git a/networking/libiproute/ipaddress.c b/networking/libiproute/ipaddress.c
index 644874f46..d042af07b 100644
--- a/networking/libiproute/ipaddress.c
+++ b/networking/libiproute/ipaddress.c
@@ -196,7 +196,7 @@ static int flush_update(void)
196 return 0; 196 return 0;
197} 197}
198 198
199static int print_addrinfo(const struct sockaddr_nl *who UNUSED_PARAM, 199static int FAST_FUNC print_addrinfo(const struct sockaddr_nl *who UNUSED_PARAM,
200 struct nlmsghdr *n, void *arg UNUSED_PARAM) 200 struct nlmsghdr *n, void *arg UNUSED_PARAM)
201{ 201{
202 struct ifaddrmsg *ifa = NLMSG_DATA(n); 202 struct ifaddrmsg *ifa = NLMSG_DATA(n);
@@ -349,8 +349,7 @@ static int print_addrinfo(const struct sockaddr_nl *who UNUSED_PARAM,
349} 349}
350 350
351 351
352struct nlmsg_list 352struct nlmsg_list {
353{
354 struct nlmsg_list *next; 353 struct nlmsg_list *next;
355 struct nlmsghdr h; 354 struct nlmsghdr h;
356}; 355};
@@ -377,7 +376,7 @@ static int print_selected_addrinfo(int ifindex, struct nlmsg_list *ainfo)
377} 376}
378 377
379 378
380static int store_nlmsg(const struct sockaddr_nl *who, struct nlmsghdr *n, void *arg) 379static int FAST_FUNC store_nlmsg(const struct sockaddr_nl *who, struct nlmsghdr *n, void *arg)
381{ 380{
382 struct nlmsg_list **linfo = (struct nlmsg_list**)arg; 381 struct nlmsg_list **linfo = (struct nlmsg_list**)arg;
383 struct nlmsg_list *h; 382 struct nlmsg_list *h;
diff --git a/networking/libiproute/iproute.c b/networking/libiproute/iproute.c
index 37859525d..ac7eec598 100644
--- a/networking/libiproute/iproute.c
+++ b/networking/libiproute/iproute.c
@@ -78,7 +78,7 @@ static unsigned get_hz(void)
78 return hz_internal; 78 return hz_internal;
79} 79}
80 80
81static int print_route(const struct sockaddr_nl *who UNUSED_PARAM, 81static int FAST_FUNC print_route(const struct sockaddr_nl *who UNUSED_PARAM,
82 struct nlmsghdr *n, void *arg UNUSED_PARAM) 82 struct nlmsghdr *n, void *arg UNUSED_PARAM)
83{ 83{
84 struct rtmsg *r = NLMSG_DATA(n); 84 struct rtmsg *r = NLMSG_DATA(n);
diff --git a/networking/libiproute/iprule.c b/networking/libiproute/iprule.c
index 6c90c6d21..bec530dcb 100644
--- a/networking/libiproute/iprule.c
+++ b/networking/libiproute/iprule.c
@@ -40,7 +40,7 @@ static void usage(void)
40} 40}
41*/ 41*/
42 42
43static int print_rule(const struct sockaddr_nl *who UNUSED_PARAM, 43static int FAST_FUNC print_rule(const struct sockaddr_nl *who UNUSED_PARAM,
44 struct nlmsghdr *n, void *arg UNUSED_PARAM) 44 struct nlmsghdr *n, void *arg UNUSED_PARAM)
45{ 45{
46 struct rtmsg *r = NLMSG_DATA(n); 46 struct rtmsg *r = NLMSG_DATA(n);
diff --git a/networking/libiproute/libnetlink.c b/networking/libiproute/libnetlink.c
index 7ad2de9fa..b4cc8dfa4 100644
--- a/networking/libiproute/libnetlink.c
+++ b/networking/libiproute/libnetlink.c
@@ -104,7 +104,7 @@ int FAST_FUNC rtnl_dump_request(struct rtnl_handle *rth, int type, void *req, in
104} 104}
105 105
106static int rtnl_dump_filter(struct rtnl_handle *rth, 106static int rtnl_dump_filter(struct rtnl_handle *rth,
107 int (*filter)(const struct sockaddr_nl *, struct nlmsghdr *n, void *), 107 int (*filter)(const struct sockaddr_nl *, struct nlmsghdr *n, void *) FAST_FUNC,
108 void *arg1/*, 108 void *arg1/*,
109 int (*junk)(struct sockaddr_nl *, struct nlmsghdr *n, void *), 109 int (*junk)(struct sockaddr_nl *, struct nlmsghdr *n, void *),
110 void *arg2*/) 110 void *arg2*/)
@@ -196,7 +196,7 @@ static int rtnl_dump_filter(struct rtnl_handle *rth,
196} 196}
197 197
198int FAST_FUNC xrtnl_dump_filter(struct rtnl_handle *rth, 198int FAST_FUNC xrtnl_dump_filter(struct rtnl_handle *rth,
199 int (*filter)(const struct sockaddr_nl *, struct nlmsghdr *, void *), 199 int (*filter)(const struct sockaddr_nl *, struct nlmsghdr *, void *) FAST_FUNC,
200 void *arg1) 200 void *arg1)
201{ 201{
202 int ret = rtnl_dump_filter(rth, filter, arg1/*, NULL, NULL*/); 202 int ret = rtnl_dump_filter(rth, filter, arg1/*, NULL, NULL*/);
@@ -206,10 +206,10 @@ int FAST_FUNC xrtnl_dump_filter(struct rtnl_handle *rth,
206} 206}
207 207
208int FAST_FUNC rtnl_talk(struct rtnl_handle *rtnl, struct nlmsghdr *n, 208int FAST_FUNC rtnl_talk(struct rtnl_handle *rtnl, struct nlmsghdr *n,
209 pid_t peer, unsigned groups, 209 pid_t peer, unsigned groups,
210 struct nlmsghdr *answer, 210 struct nlmsghdr *answer,
211 int (*junk)(struct sockaddr_nl *, struct nlmsghdr *, void *), 211 int (*junk)(struct sockaddr_nl *, struct nlmsghdr *, void *),
212 void *jarg) 212 void *jarg)
213{ 213{
214/* bbox doesn't use parameters no. 3, 4, 6, 7, they are stubbed out */ 214/* bbox doesn't use parameters no. 3, 4, 6, 7, they are stubbed out */
215#define peer 0 215#define peer 0
diff --git a/networking/libiproute/libnetlink.h b/networking/libiproute/libnetlink.h
index 11a4a100a..41ecfa6d0 100644
--- a/networking/libiproute/libnetlink.h
+++ b/networking/libiproute/libnetlink.h
@@ -23,16 +23,16 @@ extern void rtnl_close(struct rtnl_handle *rth) FAST_FUNC;
23extern int xrtnl_wilddump_request(struct rtnl_handle *rth, int fam, int type) FAST_FUNC; 23extern int xrtnl_wilddump_request(struct rtnl_handle *rth, int fam, int type) FAST_FUNC;
24extern int rtnl_dump_request(struct rtnl_handle *rth, int type, void *req, int len) FAST_FUNC; 24extern int rtnl_dump_request(struct rtnl_handle *rth, int type, void *req, int len) FAST_FUNC;
25extern int xrtnl_dump_filter(struct rtnl_handle *rth, 25extern int xrtnl_dump_filter(struct rtnl_handle *rth,
26 int (*filter)(const struct sockaddr_nl*, struct nlmsghdr *n, void*), 26 int (*filter)(const struct sockaddr_nl*, struct nlmsghdr *n, void*) FAST_FUNC,
27 void *arg1) FAST_FUNC; 27 void *arg1) FAST_FUNC;
28 28
29/* bbox doesn't use parameters no. 3, 4, 6, 7, stub them out */ 29/* bbox doesn't use parameters no. 3, 4, 6, 7, stub them out */
30#define rtnl_talk(rtnl, n, peer, groups, answer, junk, jarg) \ 30#define rtnl_talk(rtnl, n, peer, groups, answer, junk, jarg) \
31 rtnl_talk(rtnl, n, answer) 31 rtnl_talk(rtnl, n, answer)
32extern int rtnl_talk(struct rtnl_handle *rtnl, struct nlmsghdr *n, pid_t peer, 32extern int rtnl_talk(struct rtnl_handle *rtnl, struct nlmsghdr *n, pid_t peer,
33 unsigned groups, struct nlmsghdr *answer, 33 unsigned groups, struct nlmsghdr *answer,
34 int (*junk)(struct sockaddr_nl *,struct nlmsghdr *n, void *), 34 int (*junk)(struct sockaddr_nl *,struct nlmsghdr *n, void *),
35 void *jarg) FAST_FUNC; 35 void *jarg) FAST_FUNC;
36 36
37extern int rtnl_send(struct rtnl_handle *rth, char *buf, int) FAST_FUNC; 37extern int rtnl_send(struct rtnl_handle *rth, char *buf, int) FAST_FUNC;
38 38
diff --git a/networking/libiproute/ll_map.c b/networking/libiproute/ll_map.c
index 951496f4d..62528cc83 100644
--- a/networking/libiproute/ll_map.c
+++ b/networking/libiproute/ll_map.c
@@ -39,7 +39,7 @@ static struct idxmap *find_by_index(int idx)
39 return NULL; 39 return NULL;
40} 40}
41 41
42int ll_remember_index(const struct sockaddr_nl *who UNUSED_PARAM, 42int FAST_FUNC ll_remember_index(const struct sockaddr_nl *who UNUSED_PARAM,
43 struct nlmsghdr *n, 43 struct nlmsghdr *n,
44 void *arg UNUSED_PARAM) 44 void *arg UNUSED_PARAM)
45{ 45{
@@ -86,7 +86,7 @@ int ll_remember_index(const struct sockaddr_nl *who UNUSED_PARAM,
86 return 0; 86 return 0;
87} 87}
88 88
89const char *ll_idx_n2a(int idx, char *buf) 89const char FAST_FUNC *ll_idx_n2a(int idx, char *buf)
90{ 90{
91 struct idxmap *im; 91 struct idxmap *im;
92 92
@@ -100,7 +100,7 @@ const char *ll_idx_n2a(int idx, char *buf)
100} 100}
101 101
102 102
103const char *ll_index_to_name(int idx) 103const char FAST_FUNC *ll_index_to_name(int idx)
104{ 104{
105 static char nbuf[16]; 105 static char nbuf[16];
106 106
@@ -121,7 +121,7 @@ int ll_index_to_type(int idx)
121} 121}
122#endif 122#endif
123 123
124unsigned ll_index_to_flags(int idx) 124unsigned FAST_FUNC ll_index_to_flags(int idx)
125{ 125{
126 struct idxmap *im; 126 struct idxmap *im;
127 127
@@ -133,7 +133,7 @@ unsigned ll_index_to_flags(int idx)
133 return 0; 133 return 0;
134} 134}
135 135
136int xll_name_to_index(const char *name) 136int FAST_FUNC xll_name_to_index(const char *name)
137{ 137{
138 int ret = 0; 138 int ret = 0;
139 int sock_fd; 139 int sock_fd;
@@ -192,7 +192,7 @@ int xll_name_to_index(const char *name)
192 return ret; 192 return ret;
193} 193}
194 194
195int ll_init_map(struct rtnl_handle *rth) 195int FAST_FUNC ll_init_map(struct rtnl_handle *rth)
196{ 196{
197 xrtnl_wilddump_request(rth, AF_UNSPEC, RTM_GETLINK); 197 xrtnl_wilddump_request(rth, AF_UNSPEC, RTM_GETLINK);
198 xrtnl_dump_filter(rth, ll_remember_index, &idxmap); 198 xrtnl_dump_filter(rth, ll_remember_index, &idxmap);
diff --git a/networking/libiproute/ll_map.h b/networking/libiproute/ll_map.h
index b183cd6c6..c5d383422 100644
--- a/networking/libiproute/ll_map.h
+++ b/networking/libiproute/ll_map.h
@@ -4,13 +4,13 @@
4 4
5PUSH_AND_SET_FUNCTION_VISIBILITY_TO_HIDDEN 5PUSH_AND_SET_FUNCTION_VISIBILITY_TO_HIDDEN
6 6
7int ll_remember_index(const struct sockaddr_nl *who, struct nlmsghdr *n, void *arg); 7int ll_remember_index(const struct sockaddr_nl *who, struct nlmsghdr *n, void *arg) FAST_FUNC;
8int ll_init_map(struct rtnl_handle *rth); 8int ll_init_map(struct rtnl_handle *rth) FAST_FUNC;
9int xll_name_to_index(const char *name); 9int xll_name_to_index(const char *name) FAST_FUNC;
10const char *ll_index_to_name(int idx); 10const char *ll_index_to_name(int idx) FAST_FUNC;
11const char *ll_idx_n2a(int idx, char *buf); 11const char *ll_idx_n2a(int idx, char *buf) FAST_FUNC;
12/* int ll_index_to_type(int idx); */ 12/* int ll_index_to_type(int idx); */
13unsigned ll_index_to_flags(int idx); 13unsigned ll_index_to_flags(int idx) FAST_FUNC;
14 14
15POP_SAVED_FUNCTION_VISIBILITY 15POP_SAVED_FUNCTION_VISIBILITY
16 16
diff --git a/networking/udhcp/files.c b/networking/udhcp/files.c
index b13897608..af7730890 100644
--- a/networking/udhcp/files.c
+++ b/networking/udhcp/files.c
@@ -24,7 +24,7 @@ static inline uint64_t hton64(uint64_t v)
24 24
25 25
26/* on these functions, make sure your datatype matches */ 26/* on these functions, make sure your datatype matches */
27static int read_ip(const char *line, void *arg) 27static int FAST_FUNC read_ip(const char *line, void *arg)
28{ 28{
29 len_and_sockaddr *lsa; 29 len_and_sockaddr *lsa;
30 30
@@ -37,13 +37,13 @@ static int read_ip(const char *line, void *arg)
37} 37}
38 38
39 39
40static int read_mac(const char *line, void *arg) 40static int FAST_FUNC read_mac(const char *line, void *arg)
41{ 41{
42 return NULL == ether_aton_r(line, (struct ether_addr *)arg); 42 return NULL == ether_aton_r(line, (struct ether_addr *)arg);
43} 43}
44 44
45 45
46static int read_str(const char *line, void *arg) 46static int FAST_FUNC read_str(const char *line, void *arg)
47{ 47{
48 char **dest = arg; 48 char **dest = arg;
49 49
@@ -53,14 +53,14 @@ static int read_str(const char *line, void *arg)
53} 53}
54 54
55 55
56static int read_u32(const char *line, void *arg) 56static int FAST_FUNC read_u32(const char *line, void *arg)
57{ 57{
58 *(uint32_t*)arg = bb_strtou32(line, NULL, 10); 58 *(uint32_t*)arg = bb_strtou32(line, NULL, 10);
59 return errno == 0; 59 return errno == 0;
60} 60}
61 61
62 62
63static int read_yn(const char *line, void *arg) 63static int FAST_FUNC read_yn(const char *line, void *arg)
64{ 64{
65 char *dest = arg; 65 char *dest = arg;
66 66
@@ -156,7 +156,7 @@ static void attach_option(struct option_set **opt_list,
156 156
157 157
158/* read a dhcp option and add it to opt_list */ 158/* read a dhcp option and add it to opt_list */
159static int read_opt(const char *const_line, void *arg) 159static int FAST_FUNC read_opt(const char *const_line, void *arg)
160{ 160{
161 struct option_set **opt_list = arg; 161 struct option_set **opt_list = arg;
162 char *opt, *val, *endptr; 162 char *opt, *val, *endptr;
@@ -251,7 +251,7 @@ static int read_opt(const char *const_line, void *arg)
251 return retval; 251 return retval;
252} 252}
253 253
254static int read_staticlease(const char *const_line, void *arg) 254static int FAST_FUNC read_staticlease(const char *const_line, void *arg)
255{ 255{
256 char *line; 256 char *line;
257 char *mac_string; 257 char *mac_string;
@@ -278,7 +278,7 @@ static int read_staticlease(const char *const_line, void *arg)
278 278
279struct config_keyword { 279struct config_keyword {
280 const char *keyword; 280 const char *keyword;
281 int (*handler)(const char *line, void *var); 281 int (*handler)(const char *line, void *var) FAST_FUNC;
282 void *var; 282 void *var;
283 const char *def; 283 const char *def;
284}; 284};
diff --git a/procps/nmeter.c b/procps/nmeter.c
index 0358ccd3b..5c3525dc7 100644
--- a/procps/nmeter.c
+++ b/procps/nmeter.c
@@ -281,14 +281,14 @@ static void scale(ullong ul)
281#define S_STAT(a) \ 281#define S_STAT(a) \
282typedef struct a { \ 282typedef struct a { \
283 struct s_stat *next; \ 283 struct s_stat *next; \
284 void (*collect)(struct a *s); \ 284 void (*collect)(struct a *s) FAST_FUNC; \
285 const char *label; 285 const char *label;
286#define S_STAT_END(a) } a; 286#define S_STAT_END(a) } a;
287 287
288S_STAT(s_stat) 288S_STAT(s_stat)
289S_STAT_END(s_stat) 289S_STAT_END(s_stat)
290 290
291static void collect_literal(s_stat *s UNUSED_PARAM) 291static void FAST_FUNC collect_literal(s_stat *s UNUSED_PARAM)
292{ 292{
293} 293}
294 294
@@ -325,7 +325,7 @@ S_STAT(cpu_stat)
325S_STAT_END(cpu_stat) 325S_STAT_END(cpu_stat)
326 326
327 327
328static void collect_cpu(cpu_stat *s) 328static void FAST_FUNC collect_cpu(cpu_stat *s)
329{ 329{
330 ullong data[CPU_FIELDCNT] = { 0, 0, 0, 0, 0, 0, 0 }; 330 ullong data[CPU_FIELDCNT] = { 0, 0, 0, 0, 0, 0, 0 };
331 unsigned frac[CPU_FIELDCNT] = { 0, 0, 0, 0, 0, 0, 0 }; 331 unsigned frac[CPU_FIELDCNT] = { 0, 0, 0, 0, 0, 0, 0 };
@@ -399,7 +399,7 @@ S_STAT(int_stat)
399 int no; 399 int no;
400S_STAT_END(int_stat) 400S_STAT_END(int_stat)
401 401
402static void collect_int(int_stat *s) 402static void FAST_FUNC collect_int(int_stat *s)
403{ 403{
404 ullong data[1]; 404 ullong data[1];
405 ullong old; 405 ullong old;
@@ -433,7 +433,7 @@ S_STAT(ctx_stat)
433 ullong old; 433 ullong old;
434S_STAT_END(ctx_stat) 434S_STAT_END(ctx_stat)
435 435
436static void collect_ctx(ctx_stat *s) 436static void FAST_FUNC collect_ctx(ctx_stat *s)
437{ 437{
438 ullong data[1]; 438 ullong data[1];
439 ullong old; 439 ullong old;
@@ -462,7 +462,7 @@ S_STAT(blk_stat)
462 ullong old[2]; 462 ullong old[2];
463S_STAT_END(blk_stat) 463S_STAT_END(blk_stat)
464 464
465static void collect_blk(blk_stat *s) 465static void FAST_FUNC collect_blk(blk_stat *s)
466{ 466{
467 ullong data[2]; 467 ullong data[2];
468 int i; 468 int i;
@@ -504,7 +504,7 @@ S_STAT(fork_stat)
504 ullong old; 504 ullong old;
505S_STAT_END(fork_stat) 505S_STAT_END(fork_stat)
506 506
507static void collect_thread_nr(fork_stat *s UNUSED_PARAM) 507static void FAST_FUNC collect_thread_nr(fork_stat *s UNUSED_PARAM)
508{ 508{
509 ullong data[1]; 509 ullong data[1];
510 510
@@ -515,7 +515,7 @@ static void collect_thread_nr(fork_stat *s UNUSED_PARAM)
515 scale(data[0]); 515 scale(data[0]);
516} 516}
517 517
518static void collect_fork(fork_stat *s) 518static void FAST_FUNC collect_fork(fork_stat *s)
519{ 519{
520 ullong data[1]; 520 ullong data[1];
521 ullong old; 521 ullong old;
@@ -549,7 +549,7 @@ S_STAT(if_stat)
549 char *device_colon; 549 char *device_colon;
550S_STAT_END(if_stat) 550S_STAT_END(if_stat)
551 551
552static void collect_if(if_stat *s) 552static void FAST_FUNC collect_if(if_stat *s)
553{ 553{
554 ullong data[4]; 554 ullong data[4];
555 int i; 555 int i;
@@ -624,7 +624,7 @@ S_STAT_END(mem_stat)
624//HugePages_Total: 0 624//HugePages_Total: 0
625//HugePages_Free: 0 625//HugePages_Free: 0
626//Hugepagesize: 4096 kB 626//Hugepagesize: 4096 kB
627static void collect_mem(mem_stat *s) 627static void FAST_FUNC collect_mem(mem_stat *s)
628{ 628{
629 ullong m_total = 0; 629 ullong m_total = 0;
630 ullong m_free = 0; 630 ullong m_free = 0;
@@ -671,7 +671,7 @@ static s_stat* init_mem(const char *param)
671S_STAT(swp_stat) 671S_STAT(swp_stat)
672S_STAT_END(swp_stat) 672S_STAT_END(swp_stat)
673 673
674static void collect_swp(swp_stat *s UNUSED_PARAM) 674static void FAST_FUNC collect_swp(swp_stat *s UNUSED_PARAM)
675{ 675{
676 ullong s_total[1]; 676 ullong s_total[1];
677 ullong s_free[1]; 677 ullong s_free[1];
@@ -695,7 +695,7 @@ static s_stat* init_swp(const char *param UNUSED_PARAM)
695S_STAT(fd_stat) 695S_STAT(fd_stat)
696S_STAT_END(fd_stat) 696S_STAT_END(fd_stat)
697 697
698static void collect_fd(fd_stat *s UNUSED_PARAM) 698static void FAST_FUNC collect_fd(fd_stat *s UNUSED_PARAM)
699{ 699{
700 ullong data[2]; 700 ullong data[2];
701 701
@@ -720,7 +720,7 @@ S_STAT(time_stat)
720 int scale; 720 int scale;
721S_STAT_END(time_stat) 721S_STAT_END(time_stat)
722 722
723static void collect_time(time_stat *s) 723static void FAST_FUNC collect_time(time_stat *s)
724{ 724{
725 char buf[sizeof("12:34:56.123456")]; 725 char buf[sizeof("12:34:56.123456")];
726 struct tm* tm; 726 struct tm* tm;
@@ -755,7 +755,7 @@ static s_stat* init_time(const char *param)
755 return (s_stat*)s; 755 return (s_stat*)s;
756} 756}
757 757
758static void collect_info(s_stat *s) 758static void FAST_FUNC collect_info(s_stat *s)
759{ 759{
760 gen ^= 1; 760 gen ^= 1;
761 while (s) { 761 while (s) {
diff --git a/shell/ash.c b/shell/ash.c
index b27b2777e..1e7429cb1 100644
--- a/shell/ash.c
+++ b/shell/ash.c
@@ -900,7 +900,7 @@ sharg(union node *arg, FILE *fp)
900 } 900 }
901} 901}
902 902
903static void 903static void FAST_FUNC
904shcmd(union node *cmd, FILE *fp) 904shcmd(union node *cmd, FILE *fp)
905{ 905{
906 union node *np; 906 union node *np;
@@ -1686,14 +1686,14 @@ freeparam(volatile struct shparam *param)
1686} 1686}
1687 1687
1688#if ENABLE_ASH_GETOPTS 1688#if ENABLE_ASH_GETOPTS
1689static void getoptsreset(const char *value); 1689static void FAST_FUNC getoptsreset(const char *value);
1690#endif 1690#endif
1691 1691
1692struct var { 1692struct var {
1693 struct var *next; /* next entry in hash list */ 1693 struct var *next; /* next entry in hash list */
1694 int flags; /* flags are defined above */ 1694 int flags; /* flags are defined above */
1695 const char *text; /* name=value */ 1695 const char *text; /* name=value */
1696 void (*func)(const char *); /* function to be called when */ 1696 void (*func)(const char *) FAST_FUNC; /* function to be called when */
1697 /* the variable gets set/unset */ 1697 /* the variable gets set/unset */
1698}; 1698};
1699 1699
@@ -1745,17 +1745,17 @@ change_lc_ctype(const char *value)
1745#endif 1745#endif
1746#if ENABLE_ASH_MAIL 1746#if ENABLE_ASH_MAIL
1747static void chkmail(void); 1747static void chkmail(void);
1748static void changemail(const char *); 1748static void changemail(const char *) FAST_FUNC;
1749#endif 1749#endif
1750static void changepath(const char *); 1750static void changepath(const char *) FAST_FUNC;
1751#if ENABLE_ASH_RANDOM_SUPPORT 1751#if ENABLE_ASH_RANDOM_SUPPORT
1752static void change_random(const char *); 1752static void change_random(const char *) FAST_FUNC;
1753#endif 1753#endif
1754 1754
1755static const struct { 1755static const struct {
1756 int flags; 1756 int flags;
1757 const char *text; 1757 const char *text;
1758 void (*func)(const char *); 1758 void (*func)(const char *) FAST_FUNC;
1759} varinit_data[] = { 1759} varinit_data[] = {
1760#ifdef IFS_BROKEN 1760#ifdef IFS_BROKEN
1761 { VSTRFIXED|VTEXTFIXED , defifsvar , NULL }, 1761 { VSTRFIXED|VTEXTFIXED , defifsvar , NULL },
@@ -1861,7 +1861,7 @@ extern struct globals_var *const ash_ptr_to_globals_var;
1861#define is_in_name(c) ((c) == '_' || isalnum((unsigned char)(c))) 1861#define is_in_name(c) ((c) == '_' || isalnum((unsigned char)(c)))
1862 1862
1863#if ENABLE_ASH_GETOPTS 1863#if ENABLE_ASH_GETOPTS
1864static void 1864static void FAST_FUNC
1865getoptsreset(const char *value) 1865getoptsreset(const char *value)
1866{ 1866{
1867 shellparam.optind = number(value); 1867 shellparam.optind = number(value);
@@ -2492,7 +2492,7 @@ docd(const char *dest, int flags)
2492 return err; 2492 return err;
2493} 2493}
2494 2494
2495static int 2495static int FAST_FUNC
2496cdcmd(int argc UNUSED_PARAM, char **argv UNUSED_PARAM) 2496cdcmd(int argc UNUSED_PARAM, char **argv UNUSED_PARAM)
2497{ 2497{
2498 const char *dest; 2498 const char *dest;
@@ -2556,7 +2556,7 @@ cdcmd(int argc UNUSED_PARAM, char **argv UNUSED_PARAM)
2556 return 0; 2556 return 0;
2557} 2557}
2558 2558
2559static int 2559static int FAST_FUNC
2560pwdcmd(int argc UNUSED_PARAM, char **argv UNUSED_PARAM) 2560pwdcmd(int argc UNUSED_PARAM, char **argv UNUSED_PARAM)
2561{ 2561{
2562 int flags; 2562 int flags;
@@ -3161,7 +3161,7 @@ printalias(const struct alias *ap)
3161/* 3161/*
3162 * TODO - sort output 3162 * TODO - sort output
3163 */ 3163 */
3164static int 3164static int FAST_FUNC
3165aliascmd(int argc UNUSED_PARAM, char **argv) 3165aliascmd(int argc UNUSED_PARAM, char **argv)
3166{ 3166{
3167 char *n, *v; 3167 char *n, *v;
@@ -3196,7 +3196,7 @@ aliascmd(int argc UNUSED_PARAM, char **argv)
3196 return ret; 3196 return ret;
3197} 3197}
3198 3198
3199static int 3199static int FAST_FUNC
3200unaliascmd(int argc UNUSED_PARAM, char **argv UNUSED_PARAM) 3200unaliascmd(int argc UNUSED_PARAM, char **argv UNUSED_PARAM)
3201{ 3201{
3202 int i; 3202 int i;
@@ -3680,7 +3680,7 @@ setjobctl(int on)
3680 doing_jobctl = on; 3680 doing_jobctl = on;
3681} 3681}
3682 3682
3683static int 3683static int FAST_FUNC
3684killcmd(int argc, char **argv) 3684killcmd(int argc, char **argv)
3685{ 3685{
3686 int i = 1; 3686 int i = 1;
@@ -3745,7 +3745,7 @@ restartjob(struct job *jp, int mode)
3745 return status; 3745 return status;
3746} 3746}
3747 3747
3748static int 3748static int FAST_FUNC
3749fg_bgcmd(int argc UNUSED_PARAM, char **argv) 3749fg_bgcmd(int argc UNUSED_PARAM, char **argv)
3750{ 3750{
3751 struct job *jp; 3751 struct job *jp;
@@ -4000,7 +4000,7 @@ showjobs(FILE *out, int mode)
4000 } 4000 }
4001} 4001}
4002 4002
4003static int 4003static int FAST_FUNC
4004jobscmd(int argc UNUSED_PARAM, char **argv) 4004jobscmd(int argc UNUSED_PARAM, char **argv)
4005{ 4005{
4006 int mode, m; 4006 int mode, m;
@@ -4053,7 +4053,7 @@ getstatus(struct job *job)
4053 return retval; 4053 return retval;
4054} 4054}
4055 4055
4056static int 4056static int FAST_FUNC
4057waitcmd(int argc UNUSED_PARAM, char **argv) 4057waitcmd(int argc UNUSED_PARAM, char **argv)
4058{ 4058{
4059 struct job *job; 4059 struct job *job;
@@ -5587,9 +5587,9 @@ struct backcmd { /* result of evalbackcmd */
5587/* These forward decls are needed to use "eval" code for backticks handling: */ 5587/* These forward decls are needed to use "eval" code for backticks handling: */
5588static uint8_t back_exitstatus; /* exit status of backquoted command */ 5588static uint8_t back_exitstatus; /* exit status of backquoted command */
5589#define EV_EXIT 01 /* exit after evaluating tree */ 5589#define EV_EXIT 01 /* exit after evaluating tree */
5590static void evaltree(union node *, int); 5590static void FAST_FUNC evaltree(union node *, int);
5591 5591
5592static void 5592static void FAST_FUNC
5593evalbackcmd(union node *n, struct backcmd *result) 5593evalbackcmd(union node *n, struct backcmd *result)
5594{ 5594{
5595 int saveherefd; 5595 int saveherefd;
@@ -7018,7 +7018,7 @@ casematch(union node *pattern, char *val)
7018 7018
7019struct builtincmd { 7019struct builtincmd {
7020 const char *name; 7020 const char *name;
7021 int (*builtin)(int, char **); 7021 int (*builtin)(int, char **) FAST_FUNC;
7022 /* unsigned flags; */ 7022 /* unsigned flags; */
7023}; 7023};
7024#define IS_BUILTIN_SPECIAL(b) ((b)->name[0] & 1) 7024#define IS_BUILTIN_SPECIAL(b) ((b)->name[0] & 1)
@@ -7312,7 +7312,7 @@ addcmdentry(char *name, struct cmdentry *entry)
7312 cmdp->rehash = 0; 7312 cmdp->rehash = 0;
7313} 7313}
7314 7314
7315static int 7315static int FAST_FUNC
7316hashcmd(int argc UNUSED_PARAM, char **argv UNUSED_PARAM) 7316hashcmd(int argc UNUSED_PARAM, char **argv UNUSED_PARAM)
7317{ 7317{
7318 struct tblentry **pp; 7318 struct tblentry **pp;
@@ -7382,7 +7382,7 @@ hashcd(void)
7382 * pathval() still returns the old value at this point. 7382 * pathval() still returns the old value at this point.
7383 * Called with interrupts off. 7383 * Called with interrupts off.
7384 */ 7384 */
7385static void 7385static void FAST_FUNC
7386changepath(const char *new) 7386changepath(const char *new)
7387{ 7387{
7388 const char *old; 7388 const char *old;
@@ -7614,7 +7614,7 @@ describe_command(char *command, int describe_command_verbose)
7614 return 0; 7614 return 0;
7615} 7615}
7616 7616
7617static int 7617static int FAST_FUNC
7618typecmd(int argc UNUSED_PARAM, char **argv) 7618typecmd(int argc UNUSED_PARAM, char **argv)
7619{ 7619{
7620 int i = 1; 7620 int i = 1;
@@ -7633,7 +7633,7 @@ typecmd(int argc UNUSED_PARAM, char **argv)
7633} 7633}
7634 7634
7635#if ENABLE_ASH_CMDCMD 7635#if ENABLE_ASH_CMDCMD
7636static int 7636static int FAST_FUNC
7637commandcmd(int argc UNUSED_PARAM, char **argv UNUSED_PARAM) 7637commandcmd(int argc UNUSED_PARAM, char **argv UNUSED_PARAM)
7638{ 7638{
7639 int c; 7639 int c;
@@ -8018,13 +8018,13 @@ dotrap(void)
8018} 8018}
8019 8019
8020/* forward declarations - evaluation is fairly recursive business... */ 8020/* forward declarations - evaluation is fairly recursive business... */
8021static void evalloop(union node *, int); 8021static void FAST_FUNC evalloop(union node *, int);
8022static void evalfor(union node *, int); 8022static void FAST_FUNC evalfor(union node *, int);
8023static void evalcase(union node *, int); 8023static void FAST_FUNC evalcase(union node *, int);
8024static void evalsubshell(union node *, int); 8024static void FAST_FUNC evalsubshell(union node *, int);
8025static void expredir(union node *); 8025static void expredir(union node *);
8026static void evalpipe(union node *, int); 8026static void FAST_FUNC evalpipe(union node *, int);
8027static void evalcommand(union node *, int); 8027static void FAST_FUNC evalcommand(union node *, int);
8028static int evalbltin(const struct builtincmd *, int, char **); 8028static int evalbltin(const struct builtincmd *, int, char **);
8029static void prehash(union node *); 8029static void prehash(union node *);
8030 8030
@@ -8032,13 +8032,13 @@ static void prehash(union node *);
8032 * Evaluate a parse tree. The value is left in the global variable 8032 * Evaluate a parse tree. The value is left in the global variable
8033 * exitstatus. 8033 * exitstatus.
8034 */ 8034 */
8035static void 8035static void FAST_FUNC
8036evaltree(union node *n, int flags) 8036evaltree(union node *n, int flags)
8037{ 8037{
8038 struct jmploc *volatile savehandler = exception_handler; 8038 struct jmploc *volatile savehandler = exception_handler;
8039 struct jmploc jmploc; 8039 struct jmploc jmploc;
8040 int checkexit = 0; 8040 int checkexit = 0;
8041 void (*evalfn)(union node *, int); 8041 void (*evalfn)(union node *, int) FAST_FUNC;
8042 int status; 8042 int status;
8043 int int_level; 8043 int int_level;
8044 8044
@@ -8182,7 +8182,7 @@ static
8182#endif 8182#endif
8183void evaltreenr(union node *, int) __attribute__ ((alias("evaltree"),__noreturn__)); 8183void evaltreenr(union node *, int) __attribute__ ((alias("evaltree"),__noreturn__));
8184 8184
8185static void 8185static void FAST_FUNC
8186evalloop(union node *n, int flags) 8186evalloop(union node *n, int flags)
8187{ 8187{
8188 int status; 8188 int status;
@@ -8218,7 +8218,7 @@ evalloop(union node *n, int flags)
8218 exitstatus = status; 8218 exitstatus = status;
8219} 8219}
8220 8220
8221static void 8221static void FAST_FUNC
8222evalfor(union node *n, int flags) 8222evalfor(union node *n, int flags)
8223{ 8223{
8224 struct arglist arglist; 8224 struct arglist arglist;
@@ -8258,7 +8258,7 @@ evalfor(union node *n, int flags)
8258 popstackmark(&smark); 8258 popstackmark(&smark);
8259} 8259}
8260 8260
8261static void 8261static void FAST_FUNC
8262evalcase(union node *n, int flags) 8262evalcase(union node *n, int flags)
8263{ 8263{
8264 union node *cp; 8264 union node *cp;
@@ -8288,7 +8288,7 @@ evalcase(union node *n, int flags)
8288/* 8288/*
8289 * Kick off a subshell to evaluate a tree. 8289 * Kick off a subshell to evaluate a tree.
8290 */ 8290 */
8291static void 8291static void FAST_FUNC
8292evalsubshell(union node *n, int flags) 8292evalsubshell(union node *n, int flags)
8293{ 8293{
8294 struct job *jp; 8294 struct job *jp;
@@ -8375,7 +8375,7 @@ expredir(union node *n)
8375 * of the shell, which make the last process in a pipeline the parent 8375 * of the shell, which make the last process in a pipeline the parent
8376 * of all the rest.) 8376 * of all the rest.)
8377 */ 8377 */
8378static void 8378static void FAST_FUNC
8379evalpipe(union node *n, int flags) 8379evalpipe(union node *n, int flags)
8380{ 8380{
8381 struct job *jp; 8381 struct job *jp;
@@ -8644,7 +8644,7 @@ mklocal(char *name)
8644/* 8644/*
8645 * The "local" command. 8645 * The "local" command.
8646 */ 8646 */
8647static int 8647static int FAST_FUNC
8648localcmd(int argc UNUSED_PARAM, char **argv) 8648localcmd(int argc UNUSED_PARAM, char **argv)
8649{ 8649{
8650 char *name; 8650 char *name;
@@ -8656,19 +8656,19 @@ localcmd(int argc UNUSED_PARAM, char **argv)
8656 return 0; 8656 return 0;
8657} 8657}
8658 8658
8659static int 8659static int FAST_FUNC
8660falsecmd(int argc UNUSED_PARAM, char **argv UNUSED_PARAM) 8660falsecmd(int argc UNUSED_PARAM, char **argv UNUSED_PARAM)
8661{ 8661{
8662 return 1; 8662 return 1;
8663} 8663}
8664 8664
8665static int 8665static int FAST_FUNC
8666truecmd(int argc UNUSED_PARAM, char **argv UNUSED_PARAM) 8666truecmd(int argc UNUSED_PARAM, char **argv UNUSED_PARAM)
8667{ 8667{
8668 return 0; 8668 return 0;
8669} 8669}
8670 8670
8671static int 8671static int FAST_FUNC
8672execcmd(int argc UNUSED_PARAM, char **argv) 8672execcmd(int argc UNUSED_PARAM, char **argv)
8673{ 8673{
8674 if (argv[1]) { 8674 if (argv[1]) {
@@ -8683,7 +8683,7 @@ execcmd(int argc UNUSED_PARAM, char **argv)
8683/* 8683/*
8684 * The return command. 8684 * The return command.
8685 */ 8685 */
8686static int 8686static int FAST_FUNC
8687returncmd(int argc UNUSED_PARAM, char **argv) 8687returncmd(int argc UNUSED_PARAM, char **argv)
8688{ 8688{
8689 /* 8689 /*
@@ -8695,28 +8695,28 @@ returncmd(int argc UNUSED_PARAM, char **argv)
8695} 8695}
8696 8696
8697/* Forward declarations for builtintab[] */ 8697/* Forward declarations for builtintab[] */
8698static int breakcmd(int, char **); 8698static int breakcmd(int, char **) FAST_FUNC;
8699static int dotcmd(int, char **); 8699static int dotcmd(int, char **) FAST_FUNC;
8700static int evalcmd(int, char **); 8700static int evalcmd(int, char **) FAST_FUNC;
8701static int exitcmd(int, char **); 8701static int exitcmd(int, char **) FAST_FUNC;
8702static int exportcmd(int, char **); 8702static int exportcmd(int, char **) FAST_FUNC;
8703#if ENABLE_ASH_GETOPTS 8703#if ENABLE_ASH_GETOPTS
8704static int getoptscmd(int, char **); 8704static int getoptscmd(int, char **) FAST_FUNC;
8705#endif 8705#endif
8706#if !ENABLE_FEATURE_SH_EXTRA_QUIET 8706#if !ENABLE_FEATURE_SH_EXTRA_QUIET
8707static int helpcmd(int, char **); 8707static int helpcmd(int, char **) FAST_FUNC;
8708#endif 8708#endif
8709#if ENABLE_SH_MATH_SUPPORT 8709#if ENABLE_SH_MATH_SUPPORT
8710static int letcmd(int, char **); 8710static int letcmd(int, char **) FAST_FUNC;
8711#endif 8711#endif
8712static int readcmd(int, char **); 8712static int readcmd(int, char **) FAST_FUNC;
8713static int setcmd(int, char **); 8713static int setcmd(int, char **) FAST_FUNC;
8714static int shiftcmd(int, char **); 8714static int shiftcmd(int, char **) FAST_FUNC;
8715static int timescmd(int, char **); 8715static int timescmd(int, char **) FAST_FUNC;
8716static int trapcmd(int, char **); 8716static int trapcmd(int, char **) FAST_FUNC;
8717static int umaskcmd(int, char **); 8717static int umaskcmd(int, char **) FAST_FUNC;
8718static int unsetcmd(int, char **); 8718static int unsetcmd(int, char **) FAST_FUNC;
8719static int ulimitcmd(int, char **); 8719static int ulimitcmd(int, char **) FAST_FUNC;
8720 8720
8721#define BUILTIN_NOSPEC "0" 8721#define BUILTIN_NOSPEC "0"
8722#define BUILTIN_SPECIAL "1" 8722#define BUILTIN_SPECIAL "1"
@@ -8739,9 +8739,10 @@ static int ulimitcmd(int, char **);
8739 * Apart from the above, [[ expr ]] should work as [ expr ] 8739 * Apart from the above, [[ expr ]] should work as [ expr ]
8740 */ 8740 */
8741 8741
8742#define echocmd echo_main 8742/* Stubs for calling non-FAST_FUNC's */
8743#define printfcmd printf_main 8743static int FAST_FUNC echocmd(int argc, char **argv) { return echo_main(argc, argv); }
8744#define testcmd test_main 8744static int FAST_FUNC printfcmd(int argc, char **argv) { return printf_main(argc, argv); }
8745static int FAST_FUNC testcmd(int argc, char **argv) { return test_main(argc, argv); }
8745 8746
8746/* Keep these in proper order since it is searched via bsearch() */ 8747/* Keep these in proper order since it is searched via bsearch() */
8747static const struct builtincmd builtintab[] = { 8748static const struct builtincmd builtintab[] = {
@@ -8864,14 +8865,14 @@ isassignment(const char *p)
8864 return 0; 8865 return 0;
8865 return *q == '='; 8866 return *q == '=';
8866} 8867}
8867static int 8868static int FAST_FUNC
8868bltincmd(int argc UNUSED_PARAM, char **argv UNUSED_PARAM) 8869bltincmd(int argc UNUSED_PARAM, char **argv UNUSED_PARAM)
8869{ 8870{
8870 /* Preserve exitstatus of a previous possible redirection 8871 /* Preserve exitstatus of a previous possible redirection
8871 * as POSIX mandates */ 8872 * as POSIX mandates */
8872 return back_exitstatus; 8873 return back_exitstatus;
8873} 8874}
8874static void 8875static void FAST_FUNC
8875evalcommand(union node *cmd, int flags) 8876evalcommand(union node *cmd, int flags)
8876{ 8877{
8877 static const struct builtincmd null_bltin = { 8878 static const struct builtincmd null_bltin = {
@@ -9189,7 +9190,7 @@ prehash(union node *n)
9189 * be an error to break out of more loops than exist, but it isn't 9190 * be an error to break out of more loops than exist, but it isn't
9190 * in the standard shell so we don't make it one here. 9191 * in the standard shell so we don't make it one here.
9191 */ 9192 */
9192static int 9193static int FAST_FUNC
9193breakcmd(int argc UNUSED_PARAM, char **argv) 9194breakcmd(int argc UNUSED_PARAM, char **argv)
9194{ 9195{
9195 int n = argv[1] ? number(argv[1]) : 1; 9196 int n = argv[1] ? number(argv[1]) : 1;
@@ -9734,7 +9735,7 @@ chkmail(void)
9734 popstackmark(&smark); 9735 popstackmark(&smark);
9735} 9736}
9736 9737
9737static void 9738static void FAST_FUNC
9738changemail(const char *val UNUSED_PARAM) 9739changemail(const char *val UNUSED_PARAM)
9739{ 9740{
9740 mail_var_path_changed = 1; 9741 mail_var_path_changed = 1;
@@ -9890,7 +9891,7 @@ options(int cmdline)
9890/* 9891/*
9891 * The shift builtin command. 9892 * The shift builtin command.
9892 */ 9893 */
9893static int 9894static int FAST_FUNC
9894shiftcmd(int argc UNUSED_PARAM, char **argv) 9895shiftcmd(int argc UNUSED_PARAM, char **argv)
9895{ 9896{
9896 int n; 9897 int n;
@@ -9952,7 +9953,7 @@ showvars(const char *sep_prefix, int on, int off)
9952/* 9953/*
9953 * The set command builtin. 9954 * The set command builtin.
9954 */ 9955 */
9955static int 9956static int FAST_FUNC
9956setcmd(int argc UNUSED_PARAM, char **argv UNUSED_PARAM) 9957setcmd(int argc UNUSED_PARAM, char **argv UNUSED_PARAM)
9957{ 9958{
9958 int retval; 9959 int retval;
@@ -9973,7 +9974,7 @@ setcmd(int argc UNUSED_PARAM, char **argv UNUSED_PARAM)
9973} 9974}
9974 9975
9975#if ENABLE_ASH_RANDOM_SUPPORT 9976#if ENABLE_ASH_RANDOM_SUPPORT
9976static void 9977static void FAST_FUNC
9977change_random(const char *value) 9978change_random(const char *value)
9978{ 9979{
9979 /* Galois LFSR parameter */ 9980 /* Galois LFSR parameter */
@@ -10103,7 +10104,7 @@ getopts(char *optstr, char *optvar, char **optfirst, int *param_optind, int *opt
10103 * be processed in the current argument. If shellparam.optnext is NULL, 10104 * be processed in the current argument. If shellparam.optnext is NULL,
10104 * then it's the first time getopts has been called. 10105 * then it's the first time getopts has been called.
10105 */ 10106 */
10106static int 10107static int FAST_FUNC
10107getoptscmd(int argc, char **argv) 10108getoptscmd(int argc, char **argv)
10108{ 10109{
10109 char **optbase; 10110 char **optbase;
@@ -11792,7 +11793,7 @@ evalstring(char *s, int mask)
11792/* 11793/*
11793 * The eval command. 11794 * The eval command.
11794 */ 11795 */
11795static int 11796static int FAST_FUNC
11796evalcmd(int argc UNUSED_PARAM, char **argv) 11797evalcmd(int argc UNUSED_PARAM, char **argv)
11797{ 11798{
11798 char *p; 11799 char *p;
@@ -11917,7 +11918,7 @@ find_dot_file(char *name)
11917 /* NOTREACHED */ 11918 /* NOTREACHED */
11918} 11919}
11919 11920
11920static int 11921static int FAST_FUNC
11921dotcmd(int argc, char **argv) 11922dotcmd(int argc, char **argv)
11922{ 11923{
11923 struct strlist *sp; 11924 struct strlist *sp;
@@ -11952,7 +11953,7 @@ dotcmd(int argc, char **argv)
11952 return status; 11953 return status;
11953} 11954}
11954 11955
11955static int 11956static int FAST_FUNC
11956exitcmd(int argc UNUSED_PARAM, char **argv) 11957exitcmd(int argc UNUSED_PARAM, char **argv)
11957{ 11958{
11958 if (stoppedjobs()) 11959 if (stoppedjobs())
@@ -12176,7 +12177,7 @@ find_command(char *name, struct cmdentry *entry, int act, const char *path)
12176/* 12177/*
12177 * The trap builtin. 12178 * The trap builtin.
12178 */ 12179 */
12179static int 12180static int FAST_FUNC
12180trapcmd(int argc UNUSED_PARAM, char **argv UNUSED_PARAM) 12181trapcmd(int argc UNUSED_PARAM, char **argv UNUSED_PARAM)
12181{ 12182{
12182 char *action; 12183 char *action;
@@ -12226,7 +12227,7 @@ trapcmd(int argc UNUSED_PARAM, char **argv UNUSED_PARAM)
12226/* 12227/*
12227 * Lists available builtins 12228 * Lists available builtins
12228 */ 12229 */
12229static int 12230static int FAST_FUNC
12230helpcmd(int argc UNUSED_PARAM, char **argv UNUSED_PARAM) 12231helpcmd(int argc UNUSED_PARAM, char **argv UNUSED_PARAM)
12231{ 12232{
12232 unsigned col; 12233 unsigned col;
@@ -12264,7 +12265,7 @@ helpcmd(int argc UNUSED_PARAM, char **argv UNUSED_PARAM)
12264/* 12265/*
12265 * The export and readonly commands. 12266 * The export and readonly commands.
12266 */ 12267 */
12267static int 12268static int FAST_FUNC
12268exportcmd(int argc UNUSED_PARAM, char **argv) 12269exportcmd(int argc UNUSED_PARAM, char **argv)
12269{ 12270{
12270 struct var *vp; 12271 struct var *vp;
@@ -12315,7 +12316,7 @@ unsetfunc(const char *name)
12315 * variable to allow a function to be unset when there is a readonly variable 12316 * variable to allow a function to be unset when there is a readonly variable
12316 * with the same name. 12317 * with the same name.
12317 */ 12318 */
12318static int 12319static int FAST_FUNC
12319unsetcmd(int argc UNUSED_PARAM, char **argv UNUSED_PARAM) 12320unsetcmd(int argc UNUSED_PARAM, char **argv UNUSED_PARAM)
12320{ 12321{
12321 char **ap; 12322 char **ap;
@@ -12353,7 +12354,7 @@ static const unsigned char timescmd_str[] ALIGN1 = {
12353 0 12354 0
12354}; 12355};
12355 12356
12356static int 12357static int FAST_FUNC
12357timescmd(int argc UNUSED_PARAM, char **argv UNUSED_PARAM) 12358timescmd(int argc UNUSED_PARAM, char **argv UNUSED_PARAM)
12358{ 12359{
12359 long clk_tck, s, t; 12360 long clk_tck, s, t;
@@ -12383,7 +12384,7 @@ timescmd(int argc UNUSED_PARAM, char **argv UNUSED_PARAM)
12383 * 12384 *
12384 * Copyright (C) 2003 Vladimir Oleynik <dzo@simtreas.ru> 12385 * Copyright (C) 2003 Vladimir Oleynik <dzo@simtreas.ru>
12385 */ 12386 */
12386static int 12387static int FAST_FUNC
12387letcmd(int argc UNUSED_PARAM, char **argv) 12388letcmd(int argc UNUSED_PARAM, char **argv)
12388{ 12389{
12389 arith_t i; 12390 arith_t i;
@@ -12425,7 +12426,7 @@ typedef enum __rlimit_resource rlim_t;
12425 * -d DELIM End on DELIM char, not newline 12426 * -d DELIM End on DELIM char, not newline
12426 * -e Use line editing (tty only) 12427 * -e Use line editing (tty only)
12427 */ 12428 */
12428static int 12429static int FAST_FUNC
12429readcmd(int argc UNUSED_PARAM, char **argv UNUSED_PARAM) 12430readcmd(int argc UNUSED_PARAM, char **argv UNUSED_PARAM)
12430{ 12431{
12431 static const char *const arg_REPLY[] = { "REPLY", NULL }; 12432 static const char *const arg_REPLY[] = { "REPLY", NULL };
@@ -12635,7 +12636,7 @@ readcmd(int argc UNUSED_PARAM, char **argv UNUSED_PARAM)
12635 return status; 12636 return status;
12636} 12637}
12637 12638
12638static int 12639static int FAST_FUNC
12639umaskcmd(int argc UNUSED_PARAM, char **argv) 12640umaskcmd(int argc UNUSED_PARAM, char **argv)
12640{ 12641{
12641 static const char permuser[3] ALIGN1 = "ugo"; 12642 static const char permuser[3] ALIGN1 = "ugo";
@@ -12811,7 +12812,7 @@ printlim(enum limtype how, const struct rlimit *limit,
12811 } 12812 }
12812} 12813}
12813 12814
12814static int 12815static int FAST_FUNC
12815ulimitcmd(int argc UNUSED_PARAM, char **argv UNUSED_PARAM) 12816ulimitcmd(int argc UNUSED_PARAM, char **argv UNUSED_PARAM)
12816{ 12817{
12817 int c; 12818 int c;
diff --git a/shell/hush.c b/shell/hush.c
index a6db16c35..f34fdd402 100644
--- a/shell/hush.c
+++ b/shell/hush.c
@@ -256,8 +256,8 @@ typedef struct in_str {
256 smallint promptmode; /* 0: PS1, 1: PS2 */ 256 smallint promptmode; /* 0: PS1, 1: PS2 */
257#endif 257#endif
258 FILE *file; 258 FILE *file;
259 int (*get) (struct in_str *); 259 int (*get) (struct in_str *) FAST_FUNC;
260 int (*peek) (struct in_str *); 260 int (*peek) (struct in_str *) FAST_FUNC;
261} in_str; 261} in_str;
262#define i_getch(input) ((input)->get(input)) 262#define i_getch(input) ((input)->get(input))
263#define i_peek(input) ((input)->peek(input)) 263#define i_peek(input) ((input)->peek(input))
@@ -537,43 +537,43 @@ struct globals {
537 537
538 538
539/* Function prototypes for builtins */ 539/* Function prototypes for builtins */
540static int builtin_cd(char **argv); 540static int builtin_cd(char **argv) FAST_FUNC;
541static int builtin_echo(char **argv); 541static int builtin_echo(char **argv) FAST_FUNC;
542static int builtin_eval(char **argv); 542static int builtin_eval(char **argv) FAST_FUNC;
543static int builtin_exec(char **argv); 543static int builtin_exec(char **argv) FAST_FUNC;
544static int builtin_exit(char **argv); 544static int builtin_exit(char **argv) FAST_FUNC;
545static int builtin_export(char **argv); 545static int builtin_export(char **argv) FAST_FUNC;
546#if ENABLE_HUSH_JOB 546#if ENABLE_HUSH_JOB
547static int builtin_fg_bg(char **argv); 547static int builtin_fg_bg(char **argv) FAST_FUNC;
548static int builtin_jobs(char **argv); 548static int builtin_jobs(char **argv) FAST_FUNC;
549#endif 549#endif
550#if ENABLE_HUSH_HELP 550#if ENABLE_HUSH_HELP
551static int builtin_help(char **argv); 551static int builtin_help(char **argv) FAST_FUNC;
552#endif 552#endif
553#if ENABLE_HUSH_LOCAL 553#if ENABLE_HUSH_LOCAL
554static int builtin_local(char **argv); 554static int builtin_local(char **argv) FAST_FUNC;
555#endif 555#endif
556#if HUSH_DEBUG 556#if HUSH_DEBUG
557static int builtin_memleak(char **argv); 557static int builtin_memleak(char **argv) FAST_FUNC;
558#endif 558#endif
559static int builtin_pwd(char **argv); 559static int builtin_pwd(char **argv) FAST_FUNC;
560static int builtin_read(char **argv); 560static int builtin_read(char **argv) FAST_FUNC;
561static int builtin_set(char **argv); 561static int builtin_set(char **argv) FAST_FUNC;
562static int builtin_shift(char **argv); 562static int builtin_shift(char **argv) FAST_FUNC;
563static int builtin_source(char **argv); 563static int builtin_source(char **argv) FAST_FUNC;
564static int builtin_test(char **argv); 564static int builtin_test(char **argv) FAST_FUNC;
565static int builtin_trap(char **argv); 565static int builtin_trap(char **argv) FAST_FUNC;
566static int builtin_type(char **argv); 566static int builtin_type(char **argv) FAST_FUNC;
567static int builtin_true(char **argv); 567static int builtin_true(char **argv) FAST_FUNC;
568static int builtin_umask(char **argv); 568static int builtin_umask(char **argv) FAST_FUNC;
569static int builtin_unset(char **argv); 569static int builtin_unset(char **argv) FAST_FUNC;
570static int builtin_wait(char **argv); 570static int builtin_wait(char **argv) FAST_FUNC;
571#if ENABLE_HUSH_LOOPS 571#if ENABLE_HUSH_LOOPS
572static int builtin_break(char **argv); 572static int builtin_break(char **argv) FAST_FUNC;
573static int builtin_continue(char **argv); 573static int builtin_continue(char **argv) FAST_FUNC;
574#endif 574#endif
575#if ENABLE_HUSH_FUNCTIONS 575#if ENABLE_HUSH_FUNCTIONS
576static int builtin_return(char **argv); 576static int builtin_return(char **argv) FAST_FUNC;
577#endif 577#endif
578 578
579/* Table of built-in functions. They can be forked or not, depending on 579/* Table of built-in functions. They can be forked or not, depending on
@@ -584,7 +584,7 @@ static int builtin_return(char **argv);
584 * still be set at the end. */ 584 * still be set at the end. */
585struct built_in_command { 585struct built_in_command {
586 const char *cmd; 586 const char *cmd;
587 int (*function)(char **argv); 587 int (*function)(char **argv) FAST_FUNC;
588#if ENABLE_HUSH_HELP 588#if ENABLE_HUSH_HELP
589 const char *descr; 589 const char *descr;
590# define BLTIN(cmd, func, help) { cmd, func, help } 590# define BLTIN(cmd, func, help) { cmd, func, help }
@@ -1541,7 +1541,7 @@ static struct variable *set_vars_and_save_old(char **strings)
1541/* 1541/*
1542 * in_str support 1542 * in_str support
1543 */ 1543 */
1544static int static_get(struct in_str *i) 1544static int FAST_FUNC static_get(struct in_str *i)
1545{ 1545{
1546 int ch = *i->p++; 1546 int ch = *i->p++;
1547 if (ch != '\0') 1547 if (ch != '\0')
@@ -1550,7 +1550,7 @@ static int static_get(struct in_str *i)
1550 return EOF; 1550 return EOF;
1551} 1551}
1552 1552
1553static int static_peek(struct in_str *i) 1553static int FAST_FUNC static_peek(struct in_str *i)
1554{ 1554{
1555 return *i->p; 1555 return *i->p;
1556} 1556}
@@ -1629,7 +1629,7 @@ static void get_user_input(struct in_str *i)
1629 1629
1630/* This is the magic location that prints prompts 1630/* This is the magic location that prints prompts
1631 * and gets data back from the user */ 1631 * and gets data back from the user */
1632static int file_get(struct in_str *i) 1632static int FAST_FUNC file_get(struct in_str *i)
1633{ 1633{
1634 int ch; 1634 int ch;
1635 1635
@@ -1668,7 +1668,7 @@ static int file_get(struct in_str *i)
1668/* All callers guarantee this routine will never 1668/* All callers guarantee this routine will never
1669 * be used right after a newline, so prompting is not needed. 1669 * be used right after a newline, so prompting is not needed.
1670 */ 1670 */
1671static int file_peek(struct in_str *i) 1671static int FAST_FUNC file_peek(struct in_str *i)
1672{ 1672{
1673 int ch; 1673 int ch;
1674 if (i->p && *i->p) { 1674 if (i->p && *i->p) {
@@ -6560,12 +6560,12 @@ int lash_main(int argc, char **argv)
6560/* 6560/*
6561 * Built-ins 6561 * Built-ins
6562 */ 6562 */
6563static int builtin_true(char **argv UNUSED_PARAM) 6563static int FAST_FUNC builtin_true(char **argv UNUSED_PARAM)
6564{ 6564{
6565 return 0; 6565 return 0;
6566} 6566}
6567 6567
6568static int builtin_test(char **argv) 6568static int FAST_FUNC builtin_test(char **argv)
6569{ 6569{
6570 int argc = 0; 6570 int argc = 0;
6571 while (*argv) { 6571 while (*argv) {
@@ -6575,7 +6575,7 @@ static int builtin_test(char **argv)
6575 return test_main(argc, argv - argc); 6575 return test_main(argc, argv - argc);
6576} 6576}
6577 6577
6578static int builtin_echo(char **argv) 6578static int FAST_FUNC builtin_echo(char **argv)
6579{ 6579{
6580 int argc = 0; 6580 int argc = 0;
6581 while (*argv) { 6581 while (*argv) {
@@ -6585,7 +6585,7 @@ static int builtin_echo(char **argv)
6585 return echo_main(argc, argv - argc); 6585 return echo_main(argc, argv - argc);
6586} 6586}
6587 6587
6588static int builtin_eval(char **argv) 6588static int FAST_FUNC builtin_eval(char **argv)
6589{ 6589{
6590 int rcode = EXIT_SUCCESS; 6590 int rcode = EXIT_SUCCESS;
6591 6591
@@ -6602,7 +6602,7 @@ static int builtin_eval(char **argv)
6602 return rcode; 6602 return rcode;
6603} 6603}
6604 6604
6605static int builtin_cd(char **argv) 6605static int FAST_FUNC builtin_cd(char **argv)
6606{ 6606{
6607 const char *newdir = argv[1]; 6607 const char *newdir = argv[1];
6608 if (newdir == NULL) { 6608 if (newdir == NULL) {
@@ -6621,7 +6621,7 @@ static int builtin_cd(char **argv)
6621 return EXIT_SUCCESS; 6621 return EXIT_SUCCESS;
6622} 6622}
6623 6623
6624static int builtin_exec(char **argv) 6624static int FAST_FUNC builtin_exec(char **argv)
6625{ 6625{
6626 if (*++argv == NULL) 6626 if (*++argv == NULL)
6627 return EXIT_SUCCESS; /* bash does this */ 6627 return EXIT_SUCCESS; /* bash does this */
@@ -6635,7 +6635,7 @@ static int builtin_exec(char **argv)
6635 } 6635 }
6636} 6636}
6637 6637
6638static int builtin_exit(char **argv) 6638static int FAST_FUNC builtin_exit(char **argv)
6639{ 6639{
6640 debug_printf_exec("%s()\n", __func__); 6640 debug_printf_exec("%s()\n", __func__);
6641 6641
@@ -6730,7 +6730,7 @@ static void helper_export_local(char **argv, int exp, int lvl)
6730 } while (*++argv); 6730 } while (*++argv);
6731} 6731}
6732 6732
6733static int builtin_export(char **argv) 6733static int FAST_FUNC builtin_export(char **argv)
6734{ 6734{
6735 unsigned opt_unexport; 6735 unsigned opt_unexport;
6736 6736
@@ -6778,7 +6778,7 @@ static int builtin_export(char **argv)
6778} 6778}
6779 6779
6780#if ENABLE_HUSH_LOCAL 6780#if ENABLE_HUSH_LOCAL
6781static int builtin_local(char **argv) 6781static int FAST_FUNC builtin_local(char **argv)
6782{ 6782{
6783 if (G.func_nest_level == 0) { 6783 if (G.func_nest_level == 0) {
6784 bb_error_msg("%s: not in a function", argv[0]); 6784 bb_error_msg("%s: not in a function", argv[0]);
@@ -6789,7 +6789,7 @@ static int builtin_local(char **argv)
6789} 6789}
6790#endif 6790#endif
6791 6791
6792static int builtin_trap(char **argv) 6792static int FAST_FUNC builtin_trap(char **argv)
6793{ 6793{
6794 int sig; 6794 int sig;
6795 char *new_cmd; 6795 char *new_cmd;
@@ -6879,7 +6879,7 @@ static int builtin_trap(char **argv)
6879} 6879}
6880 6880
6881/* http://www.opengroup.org/onlinepubs/9699919799/utilities/type.html */ 6881/* http://www.opengroup.org/onlinepubs/9699919799/utilities/type.html */
6882static int builtin_type(char **argv) 6882static int FAST_FUNC builtin_type(char **argv)
6883{ 6883{
6884 int ret = EXIT_SUCCESS; 6884 int ret = EXIT_SUCCESS;
6885 6885
@@ -6913,7 +6913,7 @@ static int builtin_type(char **argv)
6913 6913
6914#if ENABLE_HUSH_JOB 6914#if ENABLE_HUSH_JOB
6915/* built-in 'fg' and 'bg' handler */ 6915/* built-in 'fg' and 'bg' handler */
6916static int builtin_fg_bg(char **argv) 6916static int FAST_FUNC builtin_fg_bg(char **argv)
6917{ 6917{
6918 int i, jobnum; 6918 int i, jobnum;
6919 struct pipe *pi; 6919 struct pipe *pi;
@@ -6976,7 +6976,7 @@ static int builtin_fg_bg(char **argv)
6976#endif 6976#endif
6977 6977
6978#if ENABLE_HUSH_HELP 6978#if ENABLE_HUSH_HELP
6979static int builtin_help(char **argv UNUSED_PARAM) 6979static int FAST_FUNC builtin_help(char **argv UNUSED_PARAM)
6980{ 6980{
6981 const struct built_in_command *x; 6981 const struct built_in_command *x;
6982 6982
@@ -6992,7 +6992,7 @@ static int builtin_help(char **argv UNUSED_PARAM)
6992#endif 6992#endif
6993 6993
6994#if ENABLE_HUSH_JOB 6994#if ENABLE_HUSH_JOB
6995static int builtin_jobs(char **argv UNUSED_PARAM) 6995static int FAST_FUNC builtin_jobs(char **argv UNUSED_PARAM)
6996{ 6996{
6997 struct pipe *job; 6997 struct pipe *job;
6998 const char *status_string; 6998 const char *status_string;
@@ -7010,7 +7010,7 @@ static int builtin_jobs(char **argv UNUSED_PARAM)
7010#endif 7010#endif
7011 7011
7012#if HUSH_DEBUG 7012#if HUSH_DEBUG
7013static int builtin_memleak(char **argv UNUSED_PARAM) 7013static int FAST_FUNC builtin_memleak(char **argv UNUSED_PARAM)
7014{ 7014{
7015 void *p; 7015 void *p;
7016 unsigned long l; 7016 unsigned long l;
@@ -7039,13 +7039,13 @@ static int builtin_memleak(char **argv UNUSED_PARAM)
7039} 7039}
7040#endif 7040#endif
7041 7041
7042static int builtin_pwd(char **argv UNUSED_PARAM) 7042static int FAST_FUNC builtin_pwd(char **argv UNUSED_PARAM)
7043{ 7043{
7044 puts(set_cwd()); 7044 puts(set_cwd());
7045 return EXIT_SUCCESS; 7045 return EXIT_SUCCESS;
7046} 7046}
7047 7047
7048static int builtin_read(char **argv) 7048static int FAST_FUNC builtin_read(char **argv)
7049{ 7049{
7050 char *string; 7050 char *string;
7051 const char *name = "REPLY"; 7051 const char *name = "REPLY";
@@ -7088,7 +7088,7 @@ static int builtin_read(char **argv)
7088 * 7088 *
7089 * So far, we only support "set -- [argument...]" and some of the short names. 7089 * So far, we only support "set -- [argument...]" and some of the short names.
7090 */ 7090 */
7091static int builtin_set(char **argv) 7091static int FAST_FUNC builtin_set(char **argv)
7092{ 7092{
7093 int n; 7093 int n;
7094 char **pp, **g_argv; 7094 char **pp, **g_argv;
@@ -7147,7 +7147,7 @@ static int builtin_set(char **argv)
7147 return EXIT_FAILURE; 7147 return EXIT_FAILURE;
7148} 7148}
7149 7149
7150static int builtin_shift(char **argv) 7150static int FAST_FUNC builtin_shift(char **argv)
7151{ 7151{
7152 int n = 1; 7152 int n = 1;
7153 if (argv[1]) { 7153 if (argv[1]) {
@@ -7167,7 +7167,7 @@ static int builtin_shift(char **argv)
7167 return EXIT_FAILURE; 7167 return EXIT_FAILURE;
7168} 7168}
7169 7169
7170static int builtin_source(char **argv) 7170static int FAST_FUNC builtin_source(char **argv)
7171{ 7171{
7172 char *arg_path; 7172 char *arg_path;
7173 FILE *input; 7173 FILE *input;
@@ -7208,7 +7208,7 @@ static int builtin_source(char **argv)
7208 return G.last_exitcode; 7208 return G.last_exitcode;
7209} 7209}
7210 7210
7211static int builtin_umask(char **argv) 7211static int FAST_FUNC builtin_umask(char **argv)
7212{ 7212{
7213 int rc; 7213 int rc;
7214 mode_t mask; 7214 mode_t mask;
@@ -7240,7 +7240,7 @@ static int builtin_umask(char **argv)
7240} 7240}
7241 7241
7242/* http://www.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#unset */ 7242/* http://www.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#unset */
7243static int builtin_unset(char **argv) 7243static int FAST_FUNC builtin_unset(char **argv)
7244{ 7244{
7245 int ret; 7245 int ret;
7246 unsigned opts; 7246 unsigned opts;
@@ -7277,7 +7277,7 @@ static int builtin_unset(char **argv)
7277} 7277}
7278 7278
7279/* http://www.opengroup.org/onlinepubs/9699919799/utilities/wait.html */ 7279/* http://www.opengroup.org/onlinepubs/9699919799/utilities/wait.html */
7280static int builtin_wait(char **argv) 7280static int FAST_FUNC builtin_wait(char **argv)
7281{ 7281{
7282 int ret = EXIT_SUCCESS; 7282 int ret = EXIT_SUCCESS;
7283 int status, sig; 7283 int status, sig;
@@ -7361,7 +7361,7 @@ static unsigned parse_numeric_argv1(char **argv, unsigned def, unsigned def_min)
7361#endif 7361#endif
7362 7362
7363#if ENABLE_HUSH_LOOPS 7363#if ENABLE_HUSH_LOOPS
7364static int builtin_break(char **argv) 7364static int FAST_FUNC builtin_break(char **argv)
7365{ 7365{
7366 unsigned depth; 7366 unsigned depth;
7367 if (G.depth_of_loop == 0) { 7367 if (G.depth_of_loop == 0) {
@@ -7379,7 +7379,7 @@ static int builtin_break(char **argv)
7379 return EXIT_SUCCESS; 7379 return EXIT_SUCCESS;
7380} 7380}
7381 7381
7382static int builtin_continue(char **argv) 7382static int FAST_FUNC builtin_continue(char **argv)
7383{ 7383{
7384 G.flag_break_continue = 1; /* BC_CONTINUE = 2 = 1+1 */ 7384 G.flag_break_continue = 1; /* BC_CONTINUE = 2 = 1+1 */
7385 return builtin_break(argv); 7385 return builtin_break(argv);
@@ -7387,7 +7387,7 @@ static int builtin_continue(char **argv)
7387#endif 7387#endif
7388 7388
7389#if ENABLE_HUSH_FUNCTIONS 7389#if ENABLE_HUSH_FUNCTIONS
7390static int builtin_return(char **argv) 7390static int FAST_FUNC builtin_return(char **argv)
7391{ 7391{
7392 int rc; 7392 int rc;
7393 7393
diff --git a/util-linux/volume_id/sysv.c b/util-linux/volume_id/sysv.c
index 165033258..7a99cd6c7 100644
--- a/util-linux/volume_id/sysv.c
+++ b/util-linux/volume_id/sysv.c
@@ -23,8 +23,7 @@
23#define SYSV_NICINOD 100 23#define SYSV_NICINOD 100
24#define SYSV_NICFREE 50 24#define SYSV_NICFREE 50
25 25
26struct sysv_super 26struct sysv_super {
27{
28 uint16_t s_isize; 27 uint16_t s_isize;
29 uint16_t s_pad0; 28 uint16_t s_pad0;
30 uint32_t s_fsize; 29 uint32_t s_fsize;
diff --git a/util-linux/volume_id/unused_hpfs.c b/util-linux/volume_id/unused_hpfs.c
index 8b517569d..9d5244f57 100644
--- a/util-linux/volume_id/unused_hpfs.c
+++ b/util-linux/volume_id/unused_hpfs.c
@@ -20,8 +20,7 @@
20 20
21#include "volume_id_internal.h" 21#include "volume_id_internal.h"
22 22
23struct hpfs_super 23struct hpfs_super {
24{
25 uint8_t magic[4]; 24 uint8_t magic[4];
26 uint8_t version; 25 uint8_t version;
27} __attribute__((__packed__)); 26} __attribute__((__packed__));