Syscalls : print & flush
This commit is contained in:
parent
f1231af040
commit
a013855e73
|
@ -60,36 +60,24 @@ static error_t syscallStub(void *rdi, void *rsi, void *rdx, void *rcx, ISRFrame_
|
||||||
return ENOSYS;
|
return ENOSYS;
|
||||||
}
|
}
|
||||||
|
|
||||||
static error_t syscallRead(void *descriptor, void *address, void *flags, void *rcx, ISRFrame_t *regs)
|
static error_t syscallPrint(void *id, void *string, void *rdx, void *rcx, ISRFrame_t *regs)
|
||||||
{
|
{
|
||||||
return ENOSYS;
|
Buffer_t *buf = NULL;
|
||||||
|
if (*(ulong*)id == 0) {
|
||||||
|
buf = BStdOut;
|
||||||
|
}
|
||||||
|
|
||||||
|
return BPrintOnBuf(buf, (char*)string);
|
||||||
}
|
}
|
||||||
|
|
||||||
static error_t syscallWrite(void *descriptor, void *address, void *flags, void *rcx, ISRFrame_t *regs)
|
static error_t syscallFlush(void *id, void *rdi, void *rdx, void *rcx, ISRFrame_t *regs)
|
||||||
{
|
{
|
||||||
return ENOSYS;
|
Buffer_t *buf = NULL;
|
||||||
}
|
if (*(ulong*)id == 0) {
|
||||||
|
buf = BStdOut;
|
||||||
static error_t syscallOpen(void *descriptor, void *address, void *size, void *rcx, ISRFrame_t *regs)
|
}
|
||||||
{
|
|
||||||
/* TODO
|
return BFlushBuf(buf);
|
||||||
- lock the zone
|
|
||||||
- check if permitted
|
|
||||||
- modify descriptor according to what has been done
|
|
||||||
- return */
|
|
||||||
|
|
||||||
return ENOSYS;
|
|
||||||
}
|
|
||||||
|
|
||||||
static error_t syscallClose(void *descriptor, void *address, void *flags, void *rcx, ISRFrame_t *regs)
|
|
||||||
{
|
|
||||||
/* TODO
|
|
||||||
- lock the zone
|
|
||||||
- check if permitted using descriptor
|
|
||||||
- use flags to know what to do
|
|
||||||
- return */
|
|
||||||
|
|
||||||
return ENOSYS;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static error_t syscallKernelShell(void *rdi, void *rsi, void *rdx, void *rcx, ISRFrame_t *regs)
|
static error_t syscallKernelShell(void *rdi, void *rsi, void *rdx, void *rcx, ISRFrame_t *regs)
|
||||||
|
@ -105,10 +93,10 @@ static error_t syscallKernelShell(void *rdi, void *rsi, void *rdx, void *rcx, IS
|
||||||
//
|
//
|
||||||
void KeEnableSyscalls()
|
void KeEnableSyscalls()
|
||||||
{
|
{
|
||||||
syscallTable[0] = syscallRead;
|
syscallTable[0] = syscallPrint;
|
||||||
syscallTable[1] = syscallWrite;
|
syscallTable[1] = syscallFlush;
|
||||||
syscallTable[2] = syscallOpen;
|
syscallTable[2] = syscallStub;
|
||||||
syscallTable[3] = syscallClose;
|
syscallTable[3] = syscallStub;
|
||||||
syscallTable[4] = syscallKernelShell;
|
syscallTable[4] = syscallKernelShell;
|
||||||
syscallTable[5] = syscallStub;
|
syscallTable[5] = syscallStub;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue