mirror of https://git.musl-libc.org/git/musl
Browse Source
we can do this without violating the namespace now that they are macros/inline functions rather than extern functions. the motivation is that gcc was generating giant, slow, horrible code for the old functions, and now generates a single byte-swapping instruction.rs-1.0
4 changed files with 12 additions and 20 deletions
@ -1,10 +1,8 @@ |
|||||
#include <netinet/in.h> |
#include <netinet/in.h> |
||||
|
#include <byteswap.h> |
||||
|
|
||||
uint32_t htonl(uint32_t n) |
uint32_t htonl(uint32_t n) |
||||
{ |
{ |
||||
union { |
union { int i; char c; } u = { 1 }; |
||||
uint8_t b[4]; |
return u.c ? bswap_32(n) : n; |
||||
uint32_t i; |
|
||||
} u = { { n>>24, n>>16, n>>8, n } }; |
|
||||
return u.i; |
|
||||
} |
} |
||||
|
|||||
@ -1,10 +1,8 @@ |
|||||
#include <netinet/in.h> |
#include <netinet/in.h> |
||||
|
#include <byteswap.h> |
||||
|
|
||||
uint16_t htons(uint16_t n) |
uint16_t htons(uint16_t n) |
||||
{ |
{ |
||||
union { |
union { int i; char c; } u = { 1 }; |
||||
uint8_t b[2]; |
return u.c ? bswap_16(n) : n; |
||||
uint16_t s; |
|
||||
} u = { { n>>8, n } }; |
|
||||
return u.s; |
|
||||
} |
} |
||||
|
|||||
@ -1,10 +1,8 @@ |
|||||
#include <netinet/in.h> |
#include <netinet/in.h> |
||||
|
#include <byteswap.h> |
||||
|
|
||||
uint32_t ntohl(uint32_t n) |
uint32_t ntohl(uint32_t n) |
||||
{ |
{ |
||||
union { |
union { int i; char c; } u = { 1 }; |
||||
uint32_t i; |
return u.c ? bswap_32(n) : n; |
||||
uint8_t b[4]; |
|
||||
} u = { n }; |
|
||||
return (u.b[0]<<24) | (u.b[1]<<16) | (u.b[2]<<8) | u.b[3]; |
|
||||
} |
} |
||||
|
|||||
@ -1,10 +1,8 @@ |
|||||
#include <netinet/in.h> |
#include <netinet/in.h> |
||||
|
#include <byteswap.h> |
||||
|
|
||||
uint16_t ntohs(uint16_t n) |
uint16_t ntohs(uint16_t n) |
||||
{ |
{ |
||||
union { |
union { int i; char c; } u = { 1 }; |
||||
uint16_t s; |
return u.c ? bswap_16(n) : n; |
||||
uint8_t b[2]; |
|
||||
} u = { n }; |
|
||||
return (u.b[0]<<8) | u.b[1]; |
|
||||
} |
} |
||||
|
|||||
Loading…
Reference in new issue