v1.1.0
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Groups Pages
memory.h
1 /* -*- mode: C; c-basic-offset: 4; intent-tabs-mode: nil -*-
2  *
3  * This file is part of the public interface to the Sifteo SDK.
4  * Copyright <c> 2012 Sifteo, Inc. All rights reserved.
5  */
6 
7 #pragma once
8 #ifdef NOT_USERSPACE
9 # error This is a userspace-only header, not allowed by the current build.
10 #endif
11 
12 #include <sifteo/abi.h>
13 
14 namespace Sifteo {
15 
24 
25 inline void memset8(uint8_t *dest, uint8_t value, unsigned count) {
26  _SYS_memset8(dest, value, count);
27 }
28 
30 inline void memset16(uint16_t *dest, uint16_t value, unsigned count) {
31  _SYS_memset16(dest, value, count);
32 }
33 
35 inline void memset32(uint32_t *dest, uint32_t value, unsigned count) {
36  _SYS_memset32(dest, value, count);
37 }
38 
40 inline void memcpy8(uint8_t *dest, const uint8_t *src, unsigned count) {
41  _SYS_memcpy8(dest, src, count);
42 }
43 
45 inline void memcpy16(uint16_t *dest, const uint16_t *src, unsigned count) {
46  _SYS_memcpy16(dest, src, count);
47 }
48 
50 inline void memcpy32(uint32_t *dest, const uint32_t *src, unsigned count) {
51  _SYS_memcpy32(dest, src, count);
52 }
53 
55 inline int memcmp8(const uint8_t *a, const uint8_t *b, unsigned count) {
56  return _SYS_memcmp8(a, b, count);
57 }
58 
60 inline void memset(uint8_t *dest, uint8_t value, unsigned count) {
61  _SYS_memset8(dest, value, count);
62 }
63 
65 inline void memset(uint16_t *dest, uint16_t value, unsigned count) {
66  _SYS_memset16(dest, value, count);
67 }
68 
70 inline void memset(uint32_t *dest, uint32_t value, unsigned count) {
71  _SYS_memset32(dest, value, count);
72 }
73 
75 inline void memcpy(uint8_t *dest, const uint8_t *src, unsigned count) {
76  _SYS_memcpy8(dest, src, count);
77 }
78 
80 inline void memcpy(uint16_t *dest, const uint16_t *src, unsigned count) {
81  _SYS_memcpy16(dest, src, count);
82 }
83 
85 inline void memcpy(uint32_t *dest, const uint32_t *src, unsigned count) {
86  _SYS_memcpy32(dest, src, count);
87 }
88 
90 inline int memcmp(const uint8_t *a, const uint8_t *b, unsigned count) {
91  return _SYS_memcmp8(a, b, count);
92 }
93 
95 inline void bzero(void *s, unsigned count) {
96  _SYS_memset8((uint8_t*)s, 0, count);
97 }
98 
100 template <typename T>
101 inline void bzero(T &s) {
102  _SYS_memset8((uint8_t*)&s, 0, sizeof s);
103 }
104 
142 inline uint32_t crc32(const void *bytes, unsigned count) {
143  return _SYS_crc32((const uint8_t*)bytes, count);
144 }
145 
147 template <typename T>
148 inline uint32_t crc32(const T &s) {
149  return _SYS_crc32((const uint8_t*)&s, sizeof s);
150 }
151 
152 
157 }; // namespace Sifteo