[FS, USER] Debug filesystem, fs syscalls
This commit is contained in:
@@ -4,18 +4,48 @@
|
||||
#include <unistd.h>
|
||||
#include <sys/uio.h>
|
||||
|
||||
SYSCALL_DEF(ioctl)
|
||||
{
|
||||
SYSCALL_INIT(int, fd, unsigned long, request);
|
||||
|
||||
if(fd == 1 && request == TIOCGWINSZ)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
kernel_debug("==> IOCTL - unsupported request:%lx\n", request);
|
||||
return -1;
|
||||
SYSCALL_DEF(open)
|
||||
{
|
||||
SYSCALL_INIT(char *, path, int, flags, int, mode);
|
||||
return kernel_syscall(SYS_OPEN, path, flags, mode);
|
||||
}
|
||||
SYSCALL_DEF(close)
|
||||
{
|
||||
SYSCALL_INIT(int, fd);
|
||||
return kernel_syscall(SYS_CLOSE, fd);
|
||||
}
|
||||
SYSCALL_DEF(read)
|
||||
{
|
||||
SYSCALL_INIT(int, fd, void *, buffer, size_t, nbyte);
|
||||
|
||||
return kernel_syscall(SYS_READ, fd, buffer, nbyte);
|
||||
}
|
||||
SYSCALL_DEF(write)
|
||||
{
|
||||
SYSCALL_INIT(int, fd, void *, buffer, size_t, nbyte);
|
||||
|
||||
return kernel_syscall(SYS_WRITE, fd, buffer, nbyte);
|
||||
}
|
||||
SYSCALL_DEF(lseek)
|
||||
{
|
||||
SYSCALL_INIT(int, fd, long, offset, int, whence);
|
||||
return kernel_syscall(SYS_SEEK, fd, offset, whence);
|
||||
}
|
||||
|
||||
SYSCALL_DEF(readv)
|
||||
{
|
||||
SYSCALL_INIT(int, fd, const struct iovec *, iov, int, iovcnt);
|
||||
|
||||
size_t len = 0;
|
||||
|
||||
for(int i=0; i < iovcnt; i++)
|
||||
{
|
||||
len += read(fd, iov[i].iov_base, iov[i].iov_len);
|
||||
}
|
||||
|
||||
return (long)len;
|
||||
}
|
||||
SYSCALL_DEF(writev)
|
||||
{
|
||||
SYSCALL_INIT(int, fd, const struct iovec *, iov, int, iovcnt);
|
||||
@@ -29,10 +59,13 @@ SYSCALL_DEF(writev)
|
||||
|
||||
return (long)len;
|
||||
}
|
||||
|
||||
SYSCALL_DEF(write)
|
||||
SYSCALL_DEF(ioctl)
|
||||
{
|
||||
SYSCALL_INIT(int, fd, void *, buffer, size_t, nbyte);
|
||||
SYSCALL_INIT(int, fd, unsigned long, request);
|
||||
|
||||
return kernel_syscall(SYS_WRITE, fd, buffer, nbyte);
|
||||
if(request == TIOCGWINSZ)
|
||||
return !kernel_syscall(SYS_ISATTY, fd);
|
||||
|
||||
kernel_debug("==> IOCTL - unsupported request:%lx\n", request);
|
||||
return -1;
|
||||
}
|
||||
|
||||
@@ -1,8 +1,16 @@
|
||||
#pragma once
|
||||
|
||||
#define SYS_WRITE 0x001
|
||||
#define SYS_BRK 0x002
|
||||
#define SYS_FORK 0x003
|
||||
#define SYS_EXIT 0x004
|
||||
#define SYS_WAIT 0x005
|
||||
#define SYS_DEBUG 0x3FF
|
||||
#define SYS_DEBUG 0x3FF
|
||||
|
||||
#define SYS_OPEN 0x001
|
||||
#define SYS_CLOSE 0x002
|
||||
#define SYS_READ 0x003
|
||||
#define SYS_WRITE 0x004
|
||||
#define SYS_ISATTY 0x005
|
||||
#define SYS_SEEK 0x006
|
||||
|
||||
#define SYS_BRK 0x007
|
||||
|
||||
#define SYS_FORK 0x008
|
||||
#define SYS_EXIT 0x009
|
||||
#define SYS_WAIT 0x00A
|
||||
|
||||
Reference in New Issue
Block a user