- read, write , close, lseek now check if fd >= 0
This commit is contained in:
parent
5af1ae0386
commit
898311edd6
2 changed files with 11 additions and 6 deletions
|
@ -143,8 +143,9 @@ int syscall_handler(uint32_t sys_nr, ...)
|
|||
int fd = va_arg(vl, int);
|
||||
const char* buf = va_arg(vl, const char*);
|
||||
size_t len = va_arg(vl, size_t);
|
||||
ret = write_fs(&(per_core(current_task)->fildes_table[fd]),
|
||||
(uint8_t*)buf, len);
|
||||
if (fd >= 0)
|
||||
ret = write_fs(&(per_core(current_task)->fildes_table[fd]),
|
||||
(uint8_t*)buf, len);
|
||||
break;
|
||||
}
|
||||
case __NR_open: {
|
||||
|
@ -156,22 +157,25 @@ int syscall_handler(uint32_t sys_nr, ...)
|
|||
}
|
||||
case __NR_close: {
|
||||
int fd = va_arg(vl, int);
|
||||
ret = sys_close(fd);
|
||||
if (fd >= 0)
|
||||
ret = sys_close(fd);
|
||||
break;
|
||||
}
|
||||
case __NR_read: {
|
||||
int fd = va_arg(vl, int);
|
||||
const char* buf = va_arg(vl, const char*);
|
||||
size_t len = va_arg(vl, size_t);
|
||||
ret = read_fs(&(per_core(current_task)->fildes_table[fd]),
|
||||
(uint8_t*)buf, len);
|
||||
if (fd >= 0)
|
||||
ret = read_fs(&(per_core(current_task)->fildes_table[fd]),
|
||||
(uint8_t*)buf, len);
|
||||
break;
|
||||
}
|
||||
case __NR_lseek: {
|
||||
int fd = va_arg(vl, int);
|
||||
off_t pos = va_arg(vl, off_t);
|
||||
int origin = va_arg(vl, int);
|
||||
ret = sys_lseek(fd, pos, origin);
|
||||
if (fd >= 0)
|
||||
ret = sys_lseek(fd, pos, origin);
|
||||
break;
|
||||
}
|
||||
case __NR_sbrk: {
|
||||
|
|
|
@ -47,6 +47,7 @@ int main(int argc, char** argv)
|
|||
write(testfile, "test", 4);
|
||||
lseek(testfile, 0, SEEK_SET);
|
||||
read(testfile, teststr, 100);
|
||||
close(testfile);
|
||||
printf("Gelesen aus neuer Datei: %s", teststr);
|
||||
|
||||
return errno;
|
||||
|
|
Loading…
Add table
Reference in a new issue