drm: Import memchr_inv() from NetBSD
authorFrançois Tigeot <ftigeot@wolfpond.org>
Sat, 14 Nov 2015 14:19:47 +0000 (15:19 +0100)
committerFrançois Tigeot <ftigeot@wolfpond.org>
Sat, 14 Nov 2015 14:19:50 +0000 (15:19 +0100)
sys/dev/drm/include/linux/string.h

index 99a455a..2cdde6e 100644 (file)
 
 #define strnicmp strncasecmp
 
+#define __UNCONST(a)   ((void *)(unsigned long)(const void *)(a))
+
+static inline void *
+memchr_inv(const void *buffer, int c, size_t len)
+{
+       const uint8_t byte = c; /* XXX lose */
+       const char *p;
+
+       for (p = buffer; len-- > 0; p++)
+               if (*p != byte)
+                       return __UNCONST(p);
+
+       return NULL;
+}
 
 static inline void *
 kmemdup(const void *src, size_t len, gfp_t gfp)