mirror of
https://github.com/Mathewnd/Astral.git
synced 2026-11-01 06:58:22 +00:00
syscalls: read: seek on read
This commit is contained in:
@@ -42,18 +42,21 @@ syscallret syscall_read(int ifd, void* buff, size_t count){
|
|||||||
|
|
||||||
int err;
|
int err;
|
||||||
size_t readc = vfs_read(&err, fd->node, kbuff, count, fd->offset);
|
size_t readc = vfs_read(&err, fd->node, kbuff, count, fd->offset);
|
||||||
|
|
||||||
spinlock_release(&fd->lock);
|
|
||||||
|
|
||||||
|
|
||||||
if(err){
|
|
||||||
|
if(err){
|
||||||
|
spinlock_release(&fd->lock);
|
||||||
free(kbuff);
|
free(kbuff);
|
||||||
retv.errno = err;
|
retv.errno = err;
|
||||||
return retv;
|
return retv;
|
||||||
}
|
}
|
||||||
|
|
||||||
memcpy(buff, kbuff, count); // XXX user version for safety
|
fd->offset += readc;
|
||||||
|
|
||||||
|
spinlock_release(&fd->lock);
|
||||||
|
|
||||||
|
memcpy(buff, kbuff, count); // XXX user version for safety
|
||||||
|
|
||||||
retv.errno = 0;
|
retv.errno = 0;
|
||||||
retv.ret = readc;
|
retv.ret = readc;
|
||||||
|
|||||||
Reference in New Issue
Block a user