diff options
author | Suren A. Chilingaryan <csa@dside.dyndns.org> | 2011-05-02 12:39:02 +0200 |
---|---|---|
committer | Suren A. Chilingaryan <csa@dside.dyndns.org> | 2011-05-02 12:39:02 +0200 |
commit | 33edd4a542232582368f85203e0640c5f8123e76 (patch) | |
tree | df0c335aabf52b88668805be328b04134ae64297 | |
parent | 4be69efe315f2c510b886ce0039df8d52695cae0 (diff) | |
download | ipecamera-33edd4a542232582368f85203e0640c5f8123e76.tar.gz ipecamera-33edd4a542232582368f85203e0640c5f8123e76.tar.bz2 ipecamera-33edd4a542232582368f85203e0640c5f8123e76.tar.xz ipecamera-33edd4a542232582368f85203e0640c5f8123e76.zip |
A bit faster datacpy
-rw-r--r-- | tools.c | 27 |
1 files changed, 17 insertions, 10 deletions
@@ -197,19 +197,26 @@ void *pcilib_datacpy32(void * dst, void const * src, uint8_t size, size_t n, pci uint32_t const * plSrc = (uint32_t const *) src; int swap = 0; - - if (endianess) swap = (endianess == PCILIB_BIG_ENDIAN)?(ntohs(1)!=1):(ntohs(1)==1); - - assert(size == 4); // only 32 bit at the moment - while (n > 0) { - if (swap) *plDst = ntohl(*plSrc); - else *plDst = *plSrc; + if (endianess) + swap = (endianess == PCILIB_BIG_ENDIAN)?(ntohs(1)!=1):(ntohs(1)==1); - ++plSrc; - ++plDst; + assert(size == 4); // only 32 bit at the moment - --n; + if (swap) { + while (n > 0) { + *plDst = ntohl(*plSrc); + ++plSrc; + ++plDst; + --n; + } + } else { + while (n > 0) { + *plDst = *plSrc; + ++plSrc; + ++plDst; + --n; + } } } |