Implement file reading syscall and fix fd validation w/ S.

This commit is contained in:
EDiasAlberto
2024-11-08 16:25:49 +00:00
parent 2a1cc3c361
commit 18694d7b62

View File

@@ -211,7 +211,7 @@ syscall_read (int fd, void *buffer, unsigned size)
{ {
/* Only console (fd = 0) or other files, not including STDOUT, (fd > 1) are /* Only console (fd = 0) or other files, not including STDOUT, (fd > 1) are
allowed. */ allowed. */
if (fd < 0 && fd != STDOUT_FILENO) if (fd < 0 || fd == STDOUT_FILENO)
return -1; return -1;
validate_user_pointer (buffer, size); validate_user_pointer (buffer, size);
@@ -228,7 +228,14 @@ syscall_read (int fd, void *buffer, unsigned size)
else else
{ {
/* Reading from a file. */ /* Reading from a file. */
return 0; // TODO: Implement Write to Files struct open_file *file_info = fd_get_file (fd);
if (file_info == NULL)
return -1;
lock_acquire (&filesys_lock);
int bytes_written = file_read (file_info->file, buffer, size);
lock_release (&filesys_lock);
return bytes_written;
} }
} }