#include #include #include "hal.h" void *hal_memset(void *p, int c, size_t n) { char *cp = p; for (size_t i = 0; i < n; i++) cp[i] = c; return p; } void *hal_memcpy(void *dst, const void *src, size_t n) { char *a = dst; const char *b = src; for (size_t i = 0; i < n; i++) a[i] = b[i]; return dst; } size_t hal_strlen(char *s) { char *s2; for (s2 = s; *s2; ++s2); return (s2 - s); } // https://aticleworld.com/memcmp-in-c/ int hal_memcmp(const void *s1, const void *s2, int len) { unsigned char *p = s1; unsigned char *q = s2; int charCompareStatus = 0; //If both pointer pointing same memory block if (s1 == s2) { return charCompareStatus; } while (len > 0) { if (*p != *q) { //compare the mismatching character charCompareStatus = (*p >*q)?1:-1; break; } len--; p++; q++; } return charCompareStatus; }