- read, write , close, lseek now check if fd >= 0

This commit is contained in:
Marian Ohligs 2011-08-03 11:57:21 +02:00
parent 5af1ae0386
commit 898311edd6
2 changed files with 11 additions and 6 deletions

View file

@ -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: {

View file

@ -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;