);
SYSCALL3(Syscall_Write, "iid", int, int, const void *,
if( Sizes[2] < a1 ) {
- Log_Warning("Syscalls", "Write - %i < %i", Sizes[2], a1);
+ Log_Warning("Syscalls", "Write - %x < %x", (int)Sizes[2], (int)a1);
*Errno = EINVAL;
return -1;
}
);
const tSyscallHandler caSyscalls[] = {
- Syscall_Null,
- Syscall_Exit,
- Syscall_Open,
- Syscall_Close,
- Syscall_Read,
- Syscall_Write,
- Syscall_Seek,
- Syscall_Tell,
- Syscall_IOCtl,
- Syscall_FInfo,
- Syscall_ReadDir,
- Syscall_OpenChild,
- Syscall_GetACL,
- Syscall_Mount,
- NULL, // SYS_REOPEN
- Syscall_Chdir,
+ [SYS_NULL] = Syscall_Null,
+ [SYS_EXIT] = Syscall_Exit,
+ [SYS_OPEN] = Syscall_Open,
+ [SYS_CLOSE] = Syscall_Close,
+ [SYS_COPYFD] = NULL,
+ [SYS_FDFLAGS] = NULL,
+ [SYS_READ] = Syscall_Read,
+ [SYS_WRITE] = Syscall_Write,
+ [SYS_SEEK] = Syscall_Seek,
+ [SYS_TELL] = Syscall_Tell,
+ [SYS_IOCTL] = Syscall_IOCtl,
+ [SYS_FINFO] = Syscall_FInfo,
+ [SYS_READDIR] = Syscall_ReadDir,
+ [SYS_OPENCHILD] = Syscall_OpenChild,
+ [SYS_GETACL] = Syscall_GetACL,
+ [SYS_MOUNT] = Syscall_Mount,
+ [SYS_REOPEN] = NULL, // SYS_REOPEN
+ [SYS_CHDIR] = Syscall_Chdir,
- Syscall_WaitTID,
- Syscall_SetUID,
- Syscall_SetGID,
+ [SYS_WAITTID] = Syscall_WaitTID,
+ [SYS_SETUID] = Syscall_SetUID,
+ [SYS_SETGID] = Syscall_SetGID,
Syscall_GetTID,
Syscall_GetPID,
/**
* \brief Recieve a syscall structure from the server code
*/
-tRequestHeader *SyscallRecieve(tRequestHeader *Request, int *ReturnLength)
+tRequestHeader *SyscallRecieve(tRequestHeader *Request, size_t *ReturnLength)
{
char formatString[Request->NParams+1];
char *inData = (char*)&Request->Params[Request->NParams];
int argListLen = 0;
- int i, retVal;
+ int retVal;
tRequestHeader *ret;
int retValueCount;
int retDataLen;
retDataLen = sizeof(Uint64) + sizeof(Uint32);
// Get size of argument list
- for( i = 0; i < Request->NParams; i ++ )
+ for( int i = 0; i < Request->NParams; i ++ )
{
argSizes[i] = Request->Params[i].Length;
switch(Request->Params[i].Type)
return NULL; // ERROR!
}
}
- formatString[i] = '\0';
+ formatString[Request->NParams] = '\0';
LOG("Request %i(%s) '%s'", Request->CallID, casSYSCALL_NAMES[Request->CallID], formatString);
char argListData[argListLen];
argListLen = 0;
// Build argument list
- for( i = 0; i < Request->NParams; i ++ )
+ for( int i = 0; i < Request->NParams; i ++ )
{
returnData[i] = NULL;
switch(Request->Params[i].Type)
//Log_Debug("Syscalls", "Return 0x%llx", retVal);
retValueCount = 2;
- for( i = 0; i < Request->NParams; i ++ )
+ for( int i = 0; i < Request->NParams; i ++ )
{
if( Request->Params[i].Type != ARG_TYPE_DATA ) continue;
if( !(Request->Params[i].Flags & ARG_FLAG_RETURN) ) continue;