Compare commits
23 Commits
176864f623
...
8939edf313
Author | SHA1 | Date | |
---|---|---|---|
8939edf313 | |||
921b5ce360 | |||
4dc8a13058 | |||
b41fe9d45e | |||
6e22d4649f | |||
e864965400 | |||
74d5e7759f | |||
4d949d48c4 | |||
aaf3934d9a | |||
6854daf673 | |||
3742ae23a1 | |||
e0c84a0174 | |||
fc6aa2bb36 | |||
b578680bf5 | |||
20a1d16606 | |||
a558c3b2d0 | |||
e22c9a9659 | |||
6f02dde85e | |||
4aa4cd47e2 | |||
2d28f03304 | |||
c83bf29ef4 | |||
3ca3a138fc | |||
7cdb967730 |
@ -296,6 +296,11 @@ class ATADevice : public Device
|
||||
return false;
|
||||
}
|
||||
|
||||
bool is_block_device() const override
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
usize size() const override
|
||||
{
|
||||
return m_drive->capacity();
|
||||
|
@ -286,7 +286,7 @@ namespace VFS
|
||||
bool is_setuid(SharedPtr<Inode> inode);
|
||||
bool is_setgid(SharedPtr<Inode> inode);
|
||||
|
||||
bool is_seekable(VFS::InodeType type);
|
||||
bool is_seekable(SharedPtr<Inode> inode);
|
||||
|
||||
Inode& root_inode();
|
||||
|
||||
|
@ -33,7 +33,7 @@ Result<u64> sys_read(Registers*, SyscallArgs args)
|
||||
|
||||
usize nread = TRY(descriptor.inode->read(buf, descriptor.offset, size));
|
||||
|
||||
if (VFS::is_seekable(descriptor.inode->type())) descriptor.offset += nread;
|
||||
if (VFS::is_seekable(descriptor.inode)) descriptor.offset += nread;
|
||||
|
||||
return nread;
|
||||
}
|
||||
@ -52,12 +52,11 @@ Result<u64> sys_write(Registers*, SyscallArgs args)
|
||||
|
||||
if (!descriptor.is_writable()) return err(EBADF);
|
||||
|
||||
if (descriptor.should_append() && VFS::is_seekable(descriptor.inode->type()))
|
||||
descriptor.offset = descriptor.inode->size();
|
||||
if (descriptor.should_append() && VFS::is_seekable(descriptor.inode)) descriptor.offset = descriptor.inode->size();
|
||||
|
||||
usize nwritten = TRY(descriptor.inode->write(buf, descriptor.offset, size));
|
||||
|
||||
if (VFS::is_seekable(descriptor.inode->type())) descriptor.offset += nwritten;
|
||||
if (VFS::is_seekable(descriptor.inode)) descriptor.offset += nwritten;
|
||||
|
||||
return nwritten;
|
||||
}
|
||||
@ -74,7 +73,7 @@ Result<u64> sys_lseek(Registers*, SyscallArgs args)
|
||||
|
||||
if (descriptor.inode->type() == VFS::InodeType::FIFO) return err(ESPIPE);
|
||||
|
||||
if (!VFS::is_seekable(descriptor.inode->type())) return descriptor.offset;
|
||||
if (!VFS::is_seekable(descriptor.inode)) return descriptor.offset;
|
||||
|
||||
off_t new_offset;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user