15 #include <linux/types.h>
16 #include <linux/string.h>
17 #include <linux/module.h>
23 const char *last_byte_ptr;
28 if (__builtin_expect(n == 0, 0)) {
38 goal = 0x01010101 * (
uint8_t) c;
46 before_mask = (1 << (s_int << 3)) - 1;
47 v = (*p | before_mask) ^ (goal & before_mask);
50 last_byte_ptr = (
const char *)s + n - 1;
55 while ((bits = __insn_seqb(v, goal)) == 0) {
56 if (__builtin_expect(p == last_word_ptr, 0)) {
68 ret = ((
char *)p) + (__insn_ctz(bits) >> 3);
69 return (ret <= last_byte_ptr) ? ret :
NULL;