72 lines
1.3 KiB
C
72 lines
1.3 KiB
C
/**************************************************************
|
|
*
|
|
* userprog/ksyscall.h
|
|
*
|
|
* Kernel interface for systemcalls
|
|
*
|
|
* by Marcus Voelp (c) Universitaet Karlsruhe
|
|
*
|
|
**************************************************************/
|
|
|
|
#ifndef __USERPROG_KSYSCALL_H__
|
|
#define __USERPROG_KSYSCALL_H__
|
|
|
|
#include "kernel.h"
|
|
|
|
#include "synchconsole.h"
|
|
|
|
typedef int OpenFileId;
|
|
|
|
void SysHalt()
|
|
{
|
|
kernel->interrupt->Halt();
|
|
}
|
|
|
|
int SysAdd(int op1, int op2)
|
|
{
|
|
return op1 + op2;
|
|
}
|
|
|
|
int SysCreate(char* filename)
|
|
{
|
|
// return value
|
|
// 1: success
|
|
// 0: failed
|
|
return kernel->interrupt->CreateFile(filename);
|
|
}
|
|
|
|
void SysPrintInt(int value)
|
|
{
|
|
kernel->interrupt->PrintInt(value);
|
|
}
|
|
|
|
// -1: open fail
|
|
// fd
|
|
OpenFileId SysOpen(char* filename)
|
|
{
|
|
return kernel->interrupt->OpenFile(filename);
|
|
}
|
|
|
|
// -1: write fail
|
|
// size
|
|
int SysWrite(char* buffer, int size, OpenFileId fd)
|
|
{
|
|
return kernel->interrupt->WriteFile(buffer, size, fd);
|
|
}
|
|
|
|
// 1: close success
|
|
// 0: close fail
|
|
int SysClose(OpenFileId fd)
|
|
{
|
|
return kernel->interrupt->CloseFile(fd);
|
|
}
|
|
|
|
// -1: read fail
|
|
// size
|
|
int SysRead(char* buffer, int size, OpenFileId fd)
|
|
{
|
|
return kernel->interrupt->ReadFile(buffer, size, fd);
|
|
}
|
|
|
|
#endif /* ! __USERPROG_KSYSCALL_H__ */
|