I was using the EXACT code from the memcpy, memset, memsetw, and strlen functions. Here's the exact error messages I get from my build.sh script (assembles, compiles, links, and merges with GRUB all in one fell swoop):
Code:
kernel.c: At top level:
kernel.c:88: error: expected declaration specifiers or ‘...’ before ‘size_t’
kernel.c:89: warning: conflicting types for built-in function ‘memcpy’
kernel.c: In function ‘memcpy’:
kernel.c:92: error: ‘count’ undeclared (first use in this function)
kernel.c:92: error: (Each undeclared identifier is reported only once
kernel.c:92: error: for each function it appears in.)
kernel.c: At top level:
kernel.c:96: error: expected declaration specifiers or ‘...’ before ‘size_t’
kernel.c:97: warning: conflicting types for built-in function ‘memset’
kernel.c: In function ‘memset’:
kernel.c:99: error: ‘count’ undeclared (first use in this function)
kernel.c: At top level:
kernel.c:103: error: expected declaration specifiers or ‘...’ before ‘size_t’
kernel.c: In function ‘memsetw’:
kernel.c:106: error: ‘count’ undeclared (first use in this function)
kernel.c: At top level:
kernel.c:110: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘strlen’
Now, for a starter, that's a bit overwhelming... Please explain what is going on here. I'd really appreciate it.
EDIT: I can handle warnings. I just need to get past the errors.EDIT 2: For the nitpicky, here is the code in question:Code:
void *memcpy(void *dest, const void *src, size_t count)
{
const char *sp = (const char *)src;
char *dp = (char *)dest;
for(; count != 0; count--) *dp++ = *sp++;
return dest;
}
void *memset(void *dest, char val, size_t count)
{
char *temp = (char *)dest;
for( ; count != 0; count--) *temp++ = val;
return dest;
}
unsigned short *memsetw(unsigned short *dest, unsigned short val, size_t count)
{
unsigned short *temp = (unsigned short *)dest;
for( ; count != 0; count--) *temp++ = val;
return dest;
}
size_t strlen(const char *str)
{
size_t retval;
for(retval = 0; *str != '\0'; str++) retval++;
return retval;
}
EDIT 3: And I'm in protected mode. No interrupts, remember?