From 50a6ca39ad4ed01922aa4f755f0ca579788226cf Mon Sep 17 00:00:00 2001 From: Thomas Martitz Date: Thu, 6 May 2010 21:04:40 +0000 Subject: Move c/h files implementing/defining standard library stuff into a new libc directory, also standard'ify some parts of the code base (almost entirely #include fixes). This is to a) to cleanup firmware/common and firmware/include a bit, but also b) for Rockbox as an application which should use the host system's c library and headers, separating makes it easy to exclude our files from the build. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@25850 a1c6a512-1295-4272-9138-f99709370657 --- firmware/common/memchr.c | 116 ----------------------------------------------- 1 file changed, 116 deletions(-) delete mode 100644 firmware/common/memchr.c (limited to 'firmware/common/memchr.c') diff --git a/firmware/common/memchr.c b/firmware/common/memchr.c deleted file mode 100644 index 26bdb9eea3..0000000000 --- a/firmware/common/memchr.c +++ /dev/null @@ -1,116 +0,0 @@ -/* -FUNCTION - <>---search for character in memory - -INDEX - memchr - -ANSI_SYNOPSIS - #include - void * memchr(const void *<[s1]>, int <[c]>, size_t <[n]>); - -TRAD_SYNOPSIS - #include - void * memchr(<[s1]>, <[c]>, <[n]>); - void *<[string]>; - int *<[c]>; - size_t *<[n]>; - -DESCRIPTION - This function scans the first <[n]> bytes of the memory pointed - to by <[s1]> for the character <[c]> (converted to a char). - -RETURNS - Returns a pointer to the matching byte, or a null pointer if - <[c]> does not occur in <[s1]>. - -PORTABILITY -<> is ANSI C. - -<> requires no supporting OS subroutines. - -QUICKREF - memchr ansi pure -*/ - -#include -#include - -/* Nonzero if X is not aligned on a "long" boundary. */ -#define UNALIGNED(X) ((long)X & (sizeof (long) - 1)) - -/* How many bytes are loaded each iteration of the word copy loop. */ -#define LBLOCKSIZE (sizeof (long)) - -#if LONG_MAX == 2147483647L -#define DETECTNULL(X) (((X) - 0x01010101) & ~(X) & 0x80808080) -#else -#if LONG_MAX == 9223372036854775807L -/* Nonzero if X (a long int) contains a NULL byte. */ -#define DETECTNULL(X) (((X) - 0x0101010101010101) & ~(X) & 0x8080808080808080) -#else -#error long int is not a 32bit or 64bit type. -#endif -#endif - -/* DETECTCHAR returns nonzero if (long)X contains the byte used - to fill (long)MASK. */ -#define DETECTCHAR(X,MASK) (DETECTNULL(X ^ MASK)) - -void * -_DEFUN (memchr, (s1, i, n), - _CONST void *s1 _AND - int i _AND size_t n) -{ - _CONST unsigned char *s = (_CONST unsigned char *)s1; -#if defined(PREFER_SIZE_OVER_SPEED) || defined(__OPTIMIZE_SIZE__) - unsigned char c = (unsigned char)i; - - while (n-- > 0) - { - if (*s == c) - { - return (void *)s; - } - s++; - } - - return NULL; -#else - unsigned char c = (unsigned char)i; - unsigned long mask,j; - unsigned long *aligned_addr; - - if (!UNALIGNED (s)) - { - mask = 0; - for (j = 0; j < LBLOCKSIZE; j++) - mask = (mask << 8) | c; - - aligned_addr = (unsigned long*)s; - while ((!DETECTCHAR (*aligned_addr, mask)) && (n>LBLOCKSIZE)) - { - aligned_addr++; - n -= LBLOCKSIZE; - } - - /* The block of bytes currently pointed to by aligned_addr - may contain the target character or there may be less than - LBLOCKSIZE bytes left to search. We check the last few - bytes using the bytewise search. */ - - s = (unsigned char*)aligned_addr; - } - - while (n-- > 0) - { - if (*s == c) - { - return (void *)s; - } - s++; - } - - return NULL; -#endif /* not PREFER_SIZE_OVER_SPEED */ -} -- cgit v1.2.3