diff options
author | Zachary T Welch <zw@superlucidity.net> | 2009-11-14 10:41:35 -0800 |
---|---|---|
committer | Zachary T Welch <zw@superlucidity.net> | 2009-11-16 00:46:34 -0800 |
commit | d8d8c5d8c3e47a38059952c3407bb819c5c33d05 (patch) | |
tree | 539092825bd439fda82a6825ca3c52f9f070a3eb /src | |
parent | d09e308130619f8667b6f08399cfc7d16dddab36 (diff) | |
download | riscv-openocd-d8d8c5d8c3e47a38059952c3407bb819c5c33d05.zip riscv-openocd-d8d8c5d8c3e47a38059952c3407bb819c5c33d05.tar.gz riscv-openocd-d8d8c5d8c3e47a38059952c3407bb819c5c33d05.tar.bz2 |
improve buf_set_ones
Use memset instead of loop. Improve types, using void * and unsigned.
Diffstat (limited to 'src')
-rw-r--r-- | src/helper/binarybuffer.c | 18 | ||||
-rw-r--r-- | src/helper/binarybuffer.h | 3 |
2 files changed, 11 insertions, 10 deletions
diff --git a/src/helper/binarybuffer.c b/src/helper/binarybuffer.c index e5f9854..8275d12 100644 --- a/src/helper/binarybuffer.c +++ b/src/helper/binarybuffer.c @@ -113,17 +113,17 @@ bool buf_cmp_mask(const void *_buf1, const void *_buf2, } -uint8_t* buf_set_ones(uint8_t *buf, int count) +void* buf_set_ones(void *_buf, unsigned size) { - for (unsigned i = 0, num_bytes = CEIL(count, 8); i < num_bytes; i++) - { - if (count >= 8) - buf[i] = 0xff; - else - buf[i] = (1 << count) - 1; + uint8_t *buf = _buf; + if (!buf) + return NULL; - count -= 8; - } + memset(buf, 0xff, size / 8); + + unsigned trailing_bits = size % 8; + if (trailing_bits) + buf[size / 8] = (1 << trailing_bits) - 1; return buf; } diff --git a/src/helper/binarybuffer.h b/src/helper/binarybuffer.h index 07a5862..b988e40 100644 --- a/src/helper/binarybuffer.h +++ b/src/helper/binarybuffer.h @@ -76,7 +76,8 @@ bool buf_cmp_mask(const void *buf1, const void *buf2, void* buf_cpy(const void *from, void *to, unsigned size); -uint8_t* buf_set_ones(uint8_t *buf, int count); +void* buf_set_ones(void *buf, unsigned count); + uint8_t* buf_set_buf(const uint8_t *src, int src_start, uint8_t *dst, int dst_start, int len); |