1#include <linux/types.h> 2 3void * memset(void * s, int c, size_t count) 4{ 5 void *xs = s; 6 size_t temp; 7 8 if (!count) 9 return xs; 10 c &= 0xff; 11 c |= c << 8; 12 c |= c << 16; 13 if ((long) s & 1) 14 { 15 char *cs = s; 16 *cs++ = c; 17 s = cs; 18 count--; 19 } 20 if (count > 2 && (long) s & 2) 21 { 22 short *ss = s; 23 *ss++ = c; 24 s = ss; 25 count -= 2; 26 } 27 temp = count >> 2; 28 if (temp) 29 { 30 long *ls = s; 31 for (; temp; temp--) 32 *ls++ = c; 33 s = ls; 34 } 35 if (count & 2) 36 { 37 short *ss = s; 38 *ss++ = c; 39 s = ss; 40 } 41 if (count & 1) 42 { 43 char *cs = s; 44 *cs = c; 45 } 46 return xs; 47} 48