Changeset 9f3363e in mainline
- Timestamp:
- 2008-09-14T10:59:25Z (16 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- ac02aaa
- Parents:
- 27518e4
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/generic/src/lib/memstr.c
r27518e4 r9f3363e 35 35 * @brief Memory string operations. 36 36 * 37 * This file provides architecture independent functions 38 * to manipulate blocks of memory. These functions 39 * are optimized as much as generic functions of 40 * this type can be. However, architectures are 41 * free to provide even more optimized versions of these 42 * functions. 37 * This file provides architecture independent functions to manipulate blocks of 38 * memory. These functions are optimized as much as generic functions of this 39 * type can be. However, architectures are free to provide even more optimized 40 * versions of these functions. 43 41 */ 44 42 … … 47 45 #include <align.h> 48 46 49 /** Copy block of memory 47 /** Copy block of memory. 50 48 * 51 * Copy cnt bytes from src address to dst address. 52 * The copying is done word-by-word and then byte-by-byte.53 * The source and destination memory areascannot overlap.49 * Copy cnt bytes from src address to dst address. The copying is done 50 * word-by-word and then byte-by-byte. The source and destination memory areas 51 * cannot overlap. 54 52 * 55 * @param src Originaddress to copy from.56 * @param dst Origin address to copy to.57 * @param cnt 53 * @param src Source address to copy from. 54 * @param dst Destination address to copy to. 55 * @param cnt Number of bytes to copy. 58 56 * 57 * @return Destination address. 59 58 */ 60 void *_memcpy(void * 59 void *_memcpy(void *dst, const void *src, size_t cnt) 61 60 { 62 61 unsigned int i, j; 63 62 64 63 if (ALIGN_UP((uintptr_t) src, sizeof(unative_t)) != (uintptr_t) src || 65 64 ALIGN_UP((uintptr_t) dst, sizeof(unative_t)) != (uintptr_t) dst) { 66 65 for (i = 0; i < cnt; i++) 67 66 ((uint8_t *) dst)[i] = ((uint8_t *) src)[i]; 68 67 } else { 69 70 68 for (i = 0; i < cnt / sizeof(unative_t); i++) 71 69 ((unative_t *) dst)[i] = ((unative_t *) src)[i]; 72 70 73 71 for (j = 0; j < cnt % sizeof(unative_t); j++) 74 ((uint8_t *)(((unative_t *) dst) + i))[j] = ((uint8_t *)(((unative_t *) src) + i))[j]; 72 ((uint8_t *)(((unative_t *) dst) + i))[j] = 73 ((uint8_t *)(((unative_t *) src) + i))[j]; 75 74 } 76 75 … … 80 79 /** Fill block of memory 81 80 * 82 * Fill cnt bytes at dst address with the value x. 83 * The filling is donebyte-by-byte.81 * Fill cnt bytes at dst address with the value x. The filling is done 82 * byte-by-byte. 84 83 * 85 * @param dst Origin address to fill.86 * @param cnt 87 * @param x 84 * @param dst Destination address to fill. 85 * @param cnt Number of bytes to fill. 86 * @param x Value to fill. 88 87 * 89 88 */ … … 97 96 } 98 97 99 /** Fill block of memory 98 /** Fill block of memory. 100 99 * 101 * Fill cnt words at dst address with the value x. 102 * The filling is doneword-by-word.100 * Fill cnt words at dst address with the value x. The filling is done 101 * word-by-word. 103 102 * 104 * @param dst Origin address to fill.105 * @param cnt 106 * @param x 103 * @param dst Destination address to fill. 104 * @param cnt Number of words to fill. 105 * @param x Value to fill. 107 106 * 108 107 */ … … 116 115 } 117 116 118 /** Copy string 117 /** Copy string. 119 118 * 120 * Copy string from src address to dst address. 121 * The copying is done char-by-char until the null 122 * character. The source and destination memory areas 123 * cannot overlap. 119 * Copy string from src address to dst address. The copying is done 120 * char-by-char until the null character. The source and destination memory 121 * areas cannot overlap. 124 122 * 125 * @param src Originstring to copy from.126 * @param dst Origin string to copy to.123 * @param src Source string to copy from. 124 * @param dst Destination string to copy to. 127 125 * 126 * @return Address of the destination string. 128 127 */ 129 128 char *strcpy(char *dest, const char *src)
Note:
See TracChangeset
for help on using the changeset viewer.