diff options
author | Denis Vlasenko <vda.linux@googlemail.com> | 2008-06-27 02:52:20 +0000 |
---|---|---|
committer | Denis Vlasenko <vda.linux@googlemail.com> | 2008-06-27 02:52:20 +0000 |
commit | defc1ea34074e7882724c460260d307cdf981a70 (patch) | |
tree | fca9b9a5fe243f9c0c76b84824ea2ff92ea8e589 /libbb/xconnect.c | |
parent | 26bc57d8b26425f23f4be974cce7bf35c95c9a1a (diff) | |
download | busybox-w32-defc1ea34074e7882724c460260d307cdf981a70.tar.gz busybox-w32-defc1ea34074e7882724c460260d307cdf981a70.tar.bz2 busybox-w32-defc1ea34074e7882724c460260d307cdf981a70.zip |
*: introduce and use FAST_FUNC: regparm on i386, otherwise no-on
text data bss dec hex filename
808035 611 6868 815514 c719a busybox_old
804472 611 6868 811951 c63af busybox_unstripped
Diffstat (limited to 'libbb/xconnect.c')
-rw-r--r-- | libbb/xconnect.c | 50 |
1 files changed, 25 insertions, 25 deletions
diff --git a/libbb/xconnect.c b/libbb/xconnect.c index 950aee826..d48c50339 100644 --- a/libbb/xconnect.c +++ b/libbb/xconnect.c | |||
@@ -9,16 +9,16 @@ | |||
9 | #include <netinet/in.h> | 9 | #include <netinet/in.h> |
10 | #include "libbb.h" | 10 | #include "libbb.h" |
11 | 11 | ||
12 | void setsockopt_reuseaddr(int fd) | 12 | void FAST_FUNC setsockopt_reuseaddr(int fd) |
13 | { | 13 | { |
14 | setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &const_int_1, sizeof(const_int_1)); | 14 | setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &const_int_1, sizeof(const_int_1)); |
15 | } | 15 | } |
16 | int setsockopt_broadcast(int fd) | 16 | int FAST_FUNC setsockopt_broadcast(int fd) |
17 | { | 17 | { |
18 | return setsockopt(fd, SOL_SOCKET, SO_BROADCAST, &const_int_1, sizeof(const_int_1)); | 18 | return setsockopt(fd, SOL_SOCKET, SO_BROADCAST, &const_int_1, sizeof(const_int_1)); |
19 | } | 19 | } |
20 | 20 | ||
21 | void xconnect(int s, const struct sockaddr *s_addr, socklen_t addrlen) | 21 | void FAST_FUNC xconnect(int s, const struct sockaddr *s_addr, socklen_t addrlen) |
22 | { | 22 | { |
23 | if (connect(s, s_addr, addrlen) < 0) { | 23 | if (connect(s, s_addr, addrlen) < 0) { |
24 | if (ENABLE_FEATURE_CLEAN_UP) | 24 | if (ENABLE_FEATURE_CLEAN_UP) |
@@ -35,7 +35,7 @@ void xconnect(int s, const struct sockaddr *s_addr, socklen_t addrlen) | |||
35 | * If "port" is a number use it as the port. | 35 | * If "port" is a number use it as the port. |
36 | * If "port" is a name it is looked up in /etc/services, if it isnt found return | 36 | * If "port" is a name it is looked up in /etc/services, if it isnt found return |
37 | * default_port */ | 37 | * default_port */ |
38 | unsigned bb_lookup_port(const char *port, const char *protocol, unsigned default_port) | 38 | unsigned FAST_FUNC bb_lookup_port(const char *port, const char *protocol, unsigned default_port) |
39 | { | 39 | { |
40 | unsigned port_nr = default_port; | 40 | unsigned port_nr = default_port; |
41 | if (port) { | 41 | if (port) { |
@@ -60,7 +60,7 @@ unsigned bb_lookup_port(const char *port, const char *protocol, unsigned default | |||
60 | /* "Old" networking API - only IPv4 */ | 60 | /* "Old" networking API - only IPv4 */ |
61 | 61 | ||
62 | /* | 62 | /* |
63 | void bb_lookup_host(struct sockaddr_in *s_in, const char *host) | 63 | void FAST_FUNC bb_lookup_host(struct sockaddr_in *s_in, const char *host) |
64 | { | 64 | { |
65 | struct hostent *he; | 65 | struct hostent *he; |
66 | 66 | ||
@@ -71,7 +71,7 @@ void bb_lookup_host(struct sockaddr_in *s_in, const char *host) | |||
71 | } | 71 | } |
72 | 72 | ||
73 | 73 | ||
74 | int xconnect_tcp_v4(struct sockaddr_in *s_addr) | 74 | int FAST_FUNC xconnect_tcp_v4(struct sockaddr_in *s_addr) |
75 | { | 75 | { |
76 | int s = xsocket(AF_INET, SOCK_STREAM, 0); | 76 | int s = xsocket(AF_INET, SOCK_STREAM, 0); |
77 | xconnect(s, (struct sockaddr*) s_addr, sizeof(*s_addr)); | 77 | xconnect(s, (struct sockaddr*) s_addr, sizeof(*s_addr)); |
@@ -82,7 +82,7 @@ int xconnect_tcp_v4(struct sockaddr_in *s_addr) | |||
82 | /* "New" networking API */ | 82 | /* "New" networking API */ |
83 | 83 | ||
84 | 84 | ||
85 | int get_nport(const struct sockaddr *sa) | 85 | int FAST_FUNC get_nport(const struct sockaddr *sa) |
86 | { | 86 | { |
87 | #if ENABLE_FEATURE_IPV6 | 87 | #if ENABLE_FEATURE_IPV6 |
88 | if (sa->sa_family == AF_INET6) { | 88 | if (sa->sa_family == AF_INET6) { |
@@ -96,7 +96,7 @@ int get_nport(const struct sockaddr *sa) | |||
96 | return -1; | 96 | return -1; |
97 | } | 97 | } |
98 | 98 | ||
99 | void set_nport(len_and_sockaddr *lsa, unsigned port) | 99 | void FAST_FUNC set_nport(len_and_sockaddr *lsa, unsigned port) |
100 | { | 100 | { |
101 | #if ENABLE_FEATURE_IPV6 | 101 | #if ENABLE_FEATURE_IPV6 |
102 | if (lsa->u.sa.sa_family == AF_INET6) { | 102 | if (lsa->u.sa.sa_family == AF_INET6) { |
@@ -205,34 +205,34 @@ USE_FEATURE_IPV6(sa_family_t af,) | |||
205 | #endif | 205 | #endif |
206 | 206 | ||
207 | #if ENABLE_FEATURE_IPV6 | 207 | #if ENABLE_FEATURE_IPV6 |
208 | len_and_sockaddr* host_and_af2sockaddr(const char *host, int port, sa_family_t af) | 208 | len_and_sockaddr* FAST_FUNC host_and_af2sockaddr(const char *host, int port, sa_family_t af) |
209 | { | 209 | { |
210 | return str2sockaddr(host, port, af, 0); | 210 | return str2sockaddr(host, port, af, 0); |
211 | } | 211 | } |
212 | 212 | ||
213 | len_and_sockaddr* xhost_and_af2sockaddr(const char *host, int port, sa_family_t af) | 213 | len_and_sockaddr* FAST_FUNC xhost_and_af2sockaddr(const char *host, int port, sa_family_t af) |
214 | { | 214 | { |
215 | return str2sockaddr(host, port, af, DIE_ON_ERROR); | 215 | return str2sockaddr(host, port, af, DIE_ON_ERROR); |
216 | } | 216 | } |
217 | #endif | 217 | #endif |
218 | 218 | ||
219 | len_and_sockaddr* host2sockaddr(const char *host, int port) | 219 | len_and_sockaddr* FAST_FUNC host2sockaddr(const char *host, int port) |
220 | { | 220 | { |
221 | return str2sockaddr(host, port, AF_UNSPEC, 0); | 221 | return str2sockaddr(host, port, AF_UNSPEC, 0); |
222 | } | 222 | } |
223 | 223 | ||
224 | len_and_sockaddr* xhost2sockaddr(const char *host, int port) | 224 | len_and_sockaddr* FAST_FUNC xhost2sockaddr(const char *host, int port) |
225 | { | 225 | { |
226 | return str2sockaddr(host, port, AF_UNSPEC, DIE_ON_ERROR); | 226 | return str2sockaddr(host, port, AF_UNSPEC, DIE_ON_ERROR); |
227 | } | 227 | } |
228 | 228 | ||
229 | len_and_sockaddr* xdotted2sockaddr(const char *host, int port) | 229 | len_and_sockaddr* FAST_FUNC xdotted2sockaddr(const char *host, int port) |
230 | { | 230 | { |
231 | return str2sockaddr(host, port, AF_UNSPEC, AI_NUMERICHOST | DIE_ON_ERROR); | 231 | return str2sockaddr(host, port, AF_UNSPEC, AI_NUMERICHOST | DIE_ON_ERROR); |
232 | } | 232 | } |
233 | 233 | ||
234 | #undef xsocket_type | 234 | #undef xsocket_type |
235 | int xsocket_type(len_and_sockaddr **lsap, USE_FEATURE_IPV6(int family,) int sock_type) | 235 | int FAST_FUNC xsocket_type(len_and_sockaddr **lsap, USE_FEATURE_IPV6(int family,) int sock_type) |
236 | { | 236 | { |
237 | SKIP_FEATURE_IPV6(enum { family = AF_INET };) | 237 | SKIP_FEATURE_IPV6(enum { family = AF_INET };) |
238 | len_and_sockaddr *lsa; | 238 | len_and_sockaddr *lsa; |
@@ -264,7 +264,7 @@ int xsocket_type(len_and_sockaddr **lsap, USE_FEATURE_IPV6(int family,) int sock | |||
264 | return fd; | 264 | return fd; |
265 | } | 265 | } |
266 | 266 | ||
267 | int xsocket_stream(len_and_sockaddr **lsap) | 267 | int FAST_FUNC xsocket_stream(len_and_sockaddr **lsap) |
268 | { | 268 | { |
269 | return xsocket_type(lsap, USE_FEATURE_IPV6(AF_UNSPEC,) SOCK_STREAM); | 269 | return xsocket_type(lsap, USE_FEATURE_IPV6(AF_UNSPEC,) SOCK_STREAM); |
270 | } | 270 | } |
@@ -288,18 +288,18 @@ static int create_and_bind_or_die(const char *bindaddr, int port, int sock_type) | |||
288 | return fd; | 288 | return fd; |
289 | } | 289 | } |
290 | 290 | ||
291 | int create_and_bind_stream_or_die(const char *bindaddr, int port) | 291 | int FAST_FUNC create_and_bind_stream_or_die(const char *bindaddr, int port) |
292 | { | 292 | { |
293 | return create_and_bind_or_die(bindaddr, port, SOCK_STREAM); | 293 | return create_and_bind_or_die(bindaddr, port, SOCK_STREAM); |
294 | } | 294 | } |
295 | 295 | ||
296 | int create_and_bind_dgram_or_die(const char *bindaddr, int port) | 296 | int FAST_FUNC create_and_bind_dgram_or_die(const char *bindaddr, int port) |
297 | { | 297 | { |
298 | return create_and_bind_or_die(bindaddr, port, SOCK_DGRAM); | 298 | return create_and_bind_or_die(bindaddr, port, SOCK_DGRAM); |
299 | } | 299 | } |
300 | 300 | ||
301 | 301 | ||
302 | int create_and_connect_stream_or_die(const char *peer, int port) | 302 | int FAST_FUNC create_and_connect_stream_or_die(const char *peer, int port) |
303 | { | 303 | { |
304 | int fd; | 304 | int fd; |
305 | len_and_sockaddr *lsa; | 305 | len_and_sockaddr *lsa; |
@@ -312,7 +312,7 @@ int create_and_connect_stream_or_die(const char *peer, int port) | |||
312 | return fd; | 312 | return fd; |
313 | } | 313 | } |
314 | 314 | ||
315 | int xconnect_stream(const len_and_sockaddr *lsa) | 315 | int FAST_FUNC xconnect_stream(const len_and_sockaddr *lsa) |
316 | { | 316 | { |
317 | int fd = xsocket(lsa->u.sa.sa_family, SOCK_STREAM, 0); | 317 | int fd = xsocket(lsa->u.sa.sa_family, SOCK_STREAM, 0); |
318 | xconnect(fd, &lsa->u.sa, lsa->len); | 318 | xconnect(fd, &lsa->u.sa, lsa->len); |
@@ -322,7 +322,7 @@ int xconnect_stream(const len_and_sockaddr *lsa) | |||
322 | /* We hijack this constant to mean something else */ | 322 | /* We hijack this constant to mean something else */ |
323 | /* It doesn't hurt because we will add this bit anyway */ | 323 | /* It doesn't hurt because we will add this bit anyway */ |
324 | #define IGNORE_PORT NI_NUMERICSERV | 324 | #define IGNORE_PORT NI_NUMERICSERV |
325 | static char* sockaddr2str(const struct sockaddr *sa, int flags) | 325 | static char* FAST_FUNC sockaddr2str(const struct sockaddr *sa, int flags) |
326 | { | 326 | { |
327 | char host[128]; | 327 | char host[128]; |
328 | char serv[16]; | 328 | char serv[16]; |
@@ -361,26 +361,26 @@ static char* sockaddr2str(const struct sockaddr *sa, int flags) | |||
361 | /*return xstrdup(host);*/ | 361 | /*return xstrdup(host);*/ |
362 | } | 362 | } |
363 | 363 | ||
364 | char* xmalloc_sockaddr2host(const struct sockaddr *sa) | 364 | char* FAST_FUNC xmalloc_sockaddr2host(const struct sockaddr *sa) |
365 | { | 365 | { |
366 | return sockaddr2str(sa, 0); | 366 | return sockaddr2str(sa, 0); |
367 | } | 367 | } |
368 | 368 | ||
369 | char* xmalloc_sockaddr2host_noport(const struct sockaddr *sa) | 369 | char* FAST_FUNC xmalloc_sockaddr2host_noport(const struct sockaddr *sa) |
370 | { | 370 | { |
371 | return sockaddr2str(sa, IGNORE_PORT); | 371 | return sockaddr2str(sa, IGNORE_PORT); |
372 | } | 372 | } |
373 | 373 | ||
374 | char* xmalloc_sockaddr2hostonly_noport(const struct sockaddr *sa) | 374 | char* FAST_FUNC xmalloc_sockaddr2hostonly_noport(const struct sockaddr *sa) |
375 | { | 375 | { |
376 | return sockaddr2str(sa, NI_NAMEREQD | IGNORE_PORT); | 376 | return sockaddr2str(sa, NI_NAMEREQD | IGNORE_PORT); |
377 | } | 377 | } |
378 | char* xmalloc_sockaddr2dotted(const struct sockaddr *sa) | 378 | char* FAST_FUNC xmalloc_sockaddr2dotted(const struct sockaddr *sa) |
379 | { | 379 | { |
380 | return sockaddr2str(sa, NI_NUMERICHOST); | 380 | return sockaddr2str(sa, NI_NUMERICHOST); |
381 | } | 381 | } |
382 | 382 | ||
383 | char* xmalloc_sockaddr2dotted_noport(const struct sockaddr *sa) | 383 | char* FAST_FUNC xmalloc_sockaddr2dotted_noport(const struct sockaddr *sa) |
384 | { | 384 | { |
385 | return sockaddr2str(sa, NI_NUMERICHOST | IGNORE_PORT); | 385 | return sockaddr2str(sa, NI_NUMERICHOST | IGNORE_PORT); |
386 | } | 386 | } |