mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 18:57:45 +00:00
Kernel: Remove various other uses of ssize_t
This commit is contained in:
parent
ca3cae81eb
commit
bc3076f894
33 changed files with 123 additions and 129 deletions
|
@ -81,7 +81,7 @@ DevFSInode::DevFSInode(DevFS& fs)
|
|||
{
|
||||
}
|
||||
|
||||
KResultOr<ssize_t> DevFSInode::read_bytes(off_t, ssize_t, UserOrKernelBuffer&, FileDescription*) const
|
||||
KResultOr<size_t> DevFSInode::read_bytes(off_t, size_t, UserOrKernelBuffer&, FileDescription*) const
|
||||
{
|
||||
VERIFY_NOT_REACHED();
|
||||
}
|
||||
|
@ -100,7 +100,7 @@ void DevFSInode::flush_metadata()
|
|||
{
|
||||
}
|
||||
|
||||
KResultOr<ssize_t> DevFSInode::write_bytes(off_t, ssize_t, const UserOrKernelBuffer&, FileDescription*)
|
||||
KResultOr<size_t> DevFSInode::write_bytes(off_t, size_t, const UserOrKernelBuffer&, FileDescription*)
|
||||
{
|
||||
VERIFY_NOT_REACHED();
|
||||
}
|
||||
|
@ -152,7 +152,7 @@ DevFSLinkInode::DevFSLinkInode(DevFS& fs, String name)
|
|||
, m_name(name)
|
||||
{
|
||||
}
|
||||
KResultOr<ssize_t> DevFSLinkInode::read_bytes(off_t offset, ssize_t, UserOrKernelBuffer& buffer, FileDescription*) const
|
||||
KResultOr<size_t> DevFSLinkInode::read_bytes(off_t offset, size_t, UserOrKernelBuffer& buffer, FileDescription*) const
|
||||
{
|
||||
Locker locker(m_lock);
|
||||
VERIFY(offset == 0);
|
||||
|
@ -173,7 +173,7 @@ InodeMetadata DevFSLinkInode::metadata() const
|
|||
metadata.mtime = mepoch;
|
||||
return metadata;
|
||||
}
|
||||
KResultOr<ssize_t> DevFSLinkInode::write_bytes(off_t offset, ssize_t count, const UserOrKernelBuffer& buffer, FileDescription*)
|
||||
KResultOr<size_t> DevFSLinkInode::write_bytes(off_t offset, size_t count, const UserOrKernelBuffer& buffer, FileDescription*)
|
||||
{
|
||||
Locker locker(m_lock);
|
||||
VERIFY(offset == 0);
|
||||
|
@ -350,7 +350,7 @@ String DevFSDeviceInode::name() const
|
|||
return m_cached_name;
|
||||
}
|
||||
|
||||
KResultOr<ssize_t> DevFSDeviceInode::read_bytes(off_t offset, ssize_t count, UserOrKernelBuffer& buffer, FileDescription* description) const
|
||||
KResultOr<size_t> DevFSDeviceInode::read_bytes(off_t offset, size_t count, UserOrKernelBuffer& buffer, FileDescription* description) const
|
||||
{
|
||||
Locker locker(m_lock);
|
||||
VERIFY(!!description);
|
||||
|
@ -376,7 +376,7 @@ InodeMetadata DevFSDeviceInode::metadata() const
|
|||
metadata.minor_device = m_attached_device->minor();
|
||||
return metadata;
|
||||
}
|
||||
KResultOr<ssize_t> DevFSDeviceInode::write_bytes(off_t offset, ssize_t count, const UserOrKernelBuffer& buffer, FileDescription* description)
|
||||
KResultOr<size_t> DevFSDeviceInode::write_bytes(off_t offset, size_t count, const UserOrKernelBuffer& buffer, FileDescription* description)
|
||||
{
|
||||
Locker locker(m_lock);
|
||||
VERIFY(!!description);
|
||||
|
|
|
@ -57,11 +57,11 @@ public:
|
|||
|
||||
protected:
|
||||
DevFSInode(DevFS&);
|
||||
virtual KResultOr<ssize_t> read_bytes(off_t, ssize_t, UserOrKernelBuffer& buffer, FileDescription*) const override;
|
||||
virtual KResultOr<size_t> read_bytes(off_t, size_t, UserOrKernelBuffer& buffer, FileDescription*) const override;
|
||||
virtual KResult traverse_as_directory(Function<bool(const FS::DirectoryEntryView&)>) const override;
|
||||
virtual RefPtr<Inode> lookup(StringView name) override;
|
||||
virtual void flush_metadata() override;
|
||||
virtual KResultOr<ssize_t> write_bytes(off_t, ssize_t, const UserOrKernelBuffer& buffer, FileDescription*) override;
|
||||
virtual KResultOr<size_t> write_bytes(off_t, size_t, const UserOrKernelBuffer& buffer, FileDescription*) override;
|
||||
virtual KResultOr<NonnullRefPtr<Inode>> create_child(const String& name, mode_t, dev_t, uid_t, gid_t) override;
|
||||
virtual KResult add_child(Inode&, const StringView& name, mode_t) override;
|
||||
virtual KResult remove_child(const StringView& name) override;
|
||||
|
@ -83,9 +83,9 @@ private:
|
|||
String determine_name() const;
|
||||
DevFSDeviceInode(DevFS&, const Device&);
|
||||
// ^Inode
|
||||
virtual KResultOr<ssize_t> read_bytes(off_t, ssize_t, UserOrKernelBuffer& buffer, FileDescription*) const override;
|
||||
virtual KResultOr<size_t> read_bytes(off_t, size_t, UserOrKernelBuffer& buffer, FileDescription*) const override;
|
||||
virtual InodeMetadata metadata() const override;
|
||||
virtual KResultOr<ssize_t> write_bytes(off_t, ssize_t, const UserOrKernelBuffer& buffer, FileDescription*) override;
|
||||
virtual KResultOr<size_t> write_bytes(off_t, size_t, const UserOrKernelBuffer& buffer, FileDescription*) override;
|
||||
virtual KResult chown(uid_t, gid_t) override;
|
||||
|
||||
NonnullRefPtr<Device> m_attached_device;
|
||||
|
@ -106,9 +106,9 @@ public:
|
|||
protected:
|
||||
DevFSLinkInode(DevFS&, String);
|
||||
// ^Inode
|
||||
virtual KResultOr<ssize_t> read_bytes(off_t, ssize_t, UserOrKernelBuffer& buffer, FileDescription*) const override;
|
||||
virtual KResultOr<size_t> read_bytes(off_t, size_t, UserOrKernelBuffer& buffer, FileDescription*) const override;
|
||||
virtual InodeMetadata metadata() const override;
|
||||
virtual KResultOr<ssize_t> write_bytes(off_t, ssize_t, const UserOrKernelBuffer& buffer, FileDescription*) override;
|
||||
virtual KResultOr<size_t> write_bytes(off_t, size_t, const UserOrKernelBuffer& buffer, FileDescription*) override;
|
||||
|
||||
const String m_name;
|
||||
String m_link;
|
||||
|
|
|
@ -100,12 +100,12 @@ DevPtsFSInode::~DevPtsFSInode()
|
|||
{
|
||||
}
|
||||
|
||||
KResultOr<ssize_t> DevPtsFSInode::read_bytes(off_t, ssize_t, UserOrKernelBuffer&, FileDescription*) const
|
||||
KResultOr<size_t> DevPtsFSInode::read_bytes(off_t, size_t, UserOrKernelBuffer&, FileDescription*) const
|
||||
{
|
||||
VERIFY_NOT_REACHED();
|
||||
}
|
||||
|
||||
KResultOr<ssize_t> DevPtsFSInode::write_bytes(off_t, ssize_t, const UserOrKernelBuffer&, FileDescription*)
|
||||
KResultOr<size_t> DevPtsFSInode::write_bytes(off_t, size_t, const UserOrKernelBuffer&, FileDescription*)
|
||||
{
|
||||
VERIFY_NOT_REACHED();
|
||||
}
|
||||
|
|
|
@ -47,12 +47,12 @@ private:
|
|||
DevPtsFSInode(DevPtsFS&, InodeIndex, SlavePTY*);
|
||||
|
||||
// ^Inode
|
||||
virtual KResultOr<ssize_t> read_bytes(off_t, ssize_t, UserOrKernelBuffer& buffer, FileDescription*) const override;
|
||||
virtual KResultOr<size_t> read_bytes(off_t, size_t, UserOrKernelBuffer& buffer, FileDescription*) const override;
|
||||
virtual InodeMetadata metadata() const override;
|
||||
virtual KResult traverse_as_directory(Function<bool(const FS::DirectoryEntryView&)>) const override;
|
||||
virtual RefPtr<Inode> lookup(StringView name) override;
|
||||
virtual void flush_metadata() override;
|
||||
virtual KResultOr<ssize_t> write_bytes(off_t, ssize_t, const UserOrKernelBuffer& buffer, FileDescription*) override;
|
||||
virtual KResultOr<size_t> write_bytes(off_t, size_t, const UserOrKernelBuffer& buffer, FileDescription*) override;
|
||||
virtual KResultOr<NonnullRefPtr<Inode>> create_child(const String& name, mode_t, dev_t, uid_t, gid_t) override;
|
||||
virtual KResult add_child(Inode&, const StringView& name, mode_t) override;
|
||||
virtual KResult remove_child(const StringView& name) override;
|
||||
|
|
|
@ -21,7 +21,7 @@
|
|||
namespace Kernel {
|
||||
|
||||
static constexpr size_t max_block_size = 4096;
|
||||
static constexpr ssize_t max_inline_symlink_length = 60;
|
||||
static constexpr size_t max_inline_symlink_length = 60;
|
||||
|
||||
struct Ext2FSDirectoryEntry {
|
||||
String name;
|
||||
|
@ -823,7 +823,7 @@ RefPtr<Inode> Ext2FS::get_inode(InodeIdentifier inode) const
|
|||
return new_inode;
|
||||
}
|
||||
|
||||
KResultOr<ssize_t> Ext2FSInode::read_bytes(off_t offset, ssize_t count, UserOrKernelBuffer& buffer, FileDescription* description) const
|
||||
KResultOr<size_t> Ext2FSInode::read_bytes(off_t offset, size_t count, UserOrKernelBuffer& buffer, FileDescription* description) const
|
||||
{
|
||||
Locker inode_locker(m_lock);
|
||||
VERIFY(offset >= 0);
|
||||
|
@ -837,7 +837,7 @@ KResultOr<ssize_t> Ext2FSInode::read_bytes(off_t offset, ssize_t count, UserOrKe
|
|||
// This avoids wasting an entire block on short links. (Most links are short.)
|
||||
if (is_symlink() && size() < max_inline_symlink_length) {
|
||||
VERIFY(offset == 0);
|
||||
ssize_t nread = min((off_t)size() - offset, static_cast<off_t>(count));
|
||||
size_t nread = min((off_t)size() - offset, static_cast<off_t>(count));
|
||||
if (!buffer.write(((const u8*)m_raw_inode.i_block) + offset, (size_t)nread))
|
||||
return EFAULT;
|
||||
return nread;
|
||||
|
@ -862,7 +862,7 @@ KResultOr<ssize_t> Ext2FSInode::read_bytes(off_t offset, ssize_t count, UserOrKe
|
|||
|
||||
int offset_into_first_block = offset % block_size;
|
||||
|
||||
ssize_t nread = 0;
|
||||
size_t nread = 0;
|
||||
auto remaining_count = min((off_t)count, (off_t)size() - offset);
|
||||
|
||||
dbgln_if(EXT2_VERY_DEBUG, "Ext2FSInode[{}]::read_bytes(): Reading up to {} bytes, {} bytes into inode to {}", identifier(), count, offset, buffer.user_or_kernel_ptr());
|
||||
|
@ -968,10 +968,9 @@ KResult Ext2FSInode::resize(u64 new_size)
|
|||
return KSuccess;
|
||||
}
|
||||
|
||||
KResultOr<ssize_t> Ext2FSInode::write_bytes(off_t offset, ssize_t count, const UserOrKernelBuffer& data, FileDescription* description)
|
||||
KResultOr<size_t> Ext2FSInode::write_bytes(off_t offset, size_t count, const UserOrKernelBuffer& data, FileDescription* description)
|
||||
{
|
||||
VERIFY(offset >= 0);
|
||||
VERIFY(count >= 0);
|
||||
|
||||
if (count == 0)
|
||||
return 0;
|
||||
|
@ -1017,7 +1016,7 @@ KResultOr<ssize_t> Ext2FSInode::write_bytes(off_t offset, ssize_t count, const U
|
|||
|
||||
size_t offset_into_first_block = offset % block_size;
|
||||
|
||||
ssize_t nwritten = 0;
|
||||
size_t nwritten = 0;
|
||||
auto remaining_count = min((off_t)count, (off_t)new_size - offset);
|
||||
|
||||
dbgln_if(EXT2_VERY_DEBUG, "Ext2FSInode[{}]::write_bytes(): Writing {} bytes, {} bytes into inode from {}", identifier(), count, offset, data.user_or_kernel_ptr());
|
||||
|
|
|
@ -38,12 +38,12 @@ public:
|
|||
|
||||
private:
|
||||
// ^Inode
|
||||
virtual KResultOr<ssize_t> read_bytes(off_t, ssize_t, UserOrKernelBuffer& buffer, FileDescription*) const override;
|
||||
virtual KResultOr<size_t> read_bytes(off_t, size_t, UserOrKernelBuffer& buffer, FileDescription*) const override;
|
||||
virtual InodeMetadata metadata() const override;
|
||||
virtual KResult traverse_as_directory(Function<bool(const FS::DirectoryEntryView&)>) const override;
|
||||
virtual RefPtr<Inode> lookup(StringView name) override;
|
||||
virtual void flush_metadata() override;
|
||||
virtual KResultOr<ssize_t> write_bytes(off_t, ssize_t, const UserOrKernelBuffer& data, FileDescription*) override;
|
||||
virtual KResultOr<size_t> write_bytes(off_t, size_t, const UserOrKernelBuffer& data, FileDescription*) override;
|
||||
virtual KResultOr<NonnullRefPtr<Inode>> create_child(const String& name, mode_t, dev_t, uid_t, gid_t) override;
|
||||
virtual KResult add_child(Inode& child, const StringView& name, mode_t) override;
|
||||
virtual KResult remove_child(const StringView& name) override;
|
||||
|
|
|
@ -203,7 +203,7 @@ KResultOr<NonnullOwnPtr<KBuffer>> FileDescription::read_entire_file()
|
|||
return m_inode->read_entire(this);
|
||||
}
|
||||
|
||||
KResultOr<ssize_t> FileDescription::get_dir_entries(UserOrKernelBuffer& output_buffer, ssize_t size)
|
||||
KResultOr<size_t> FileDescription::get_dir_entries(UserOrKernelBuffer& output_buffer, size_t size)
|
||||
{
|
||||
Locker locker(m_lock, Lock::Mode::Shared);
|
||||
if (!is_directory())
|
||||
|
@ -213,9 +213,6 @@ KResultOr<ssize_t> FileDescription::get_dir_entries(UserOrKernelBuffer& output_b
|
|||
if (!metadata.is_valid())
|
||||
return EIO;
|
||||
|
||||
if (size < 0)
|
||||
return EINVAL;
|
||||
|
||||
size_t remaining = size;
|
||||
KResult error = KSuccess;
|
||||
u8 stack_buffer[PAGE_SIZE];
|
||||
|
|
|
@ -56,7 +56,7 @@ public:
|
|||
bool can_read() const;
|
||||
bool can_write() const;
|
||||
|
||||
KResultOr<ssize_t> get_dir_entries(UserOrKernelBuffer& buffer, ssize_t);
|
||||
KResultOr<size_t> get_dir_entries(UserOrKernelBuffer& buffer, size_t);
|
||||
|
||||
KResultOr<NonnullOwnPtr<KBuffer>> read_entire_file();
|
||||
|
||||
|
|
|
@ -51,7 +51,7 @@ KResultOr<NonnullOwnPtr<KBuffer>> Inode::read_entire(FileDescription* descriptio
|
|||
{
|
||||
KBufferBuilder builder;
|
||||
|
||||
ssize_t nread;
|
||||
size_t nread;
|
||||
u8 buffer[4096];
|
||||
off_t offset = 0;
|
||||
for (;;) {
|
||||
|
@ -60,18 +60,14 @@ KResultOr<NonnullOwnPtr<KBuffer>> Inode::read_entire(FileDescription* descriptio
|
|||
if (result.is_error())
|
||||
return result.error();
|
||||
nread = result.value();
|
||||
VERIFY(nread <= (ssize_t)sizeof(buffer));
|
||||
VERIFY(nread <= sizeof(buffer));
|
||||
if (nread <= 0)
|
||||
break;
|
||||
builder.append((const char*)buffer, nread);
|
||||
offset += nread;
|
||||
if (nread < (ssize_t)sizeof(buffer))
|
||||
if (nread < sizeof(buffer))
|
||||
break;
|
||||
}
|
||||
if (nread < 0) {
|
||||
dmesgln("Inode::read_entire: Error: {}", nread);
|
||||
return KResult((ErrnoCode)-nread);
|
||||
}
|
||||
|
||||
auto entire_file = builder.build();
|
||||
if (!entire_file)
|
||||
|
|
|
@ -52,10 +52,10 @@ public:
|
|||
virtual KResult attach(FileDescription&) { return KSuccess; }
|
||||
virtual void detach(FileDescription&) { }
|
||||
virtual void did_seek(FileDescription&, off_t) { }
|
||||
virtual KResultOr<ssize_t> read_bytes(off_t, ssize_t, UserOrKernelBuffer& buffer, FileDescription*) const = 0;
|
||||
virtual KResultOr<size_t> read_bytes(off_t, size_t, UserOrKernelBuffer& buffer, FileDescription*) const = 0;
|
||||
virtual KResult traverse_as_directory(Function<bool(const FS::DirectoryEntryView&)>) const = 0;
|
||||
virtual RefPtr<Inode> lookup(StringView name) = 0;
|
||||
virtual KResultOr<ssize_t> write_bytes(off_t, ssize_t, const UserOrKernelBuffer& data, FileDescription*) = 0;
|
||||
virtual KResultOr<size_t> write_bytes(off_t, size_t, const UserOrKernelBuffer& data, FileDescription*) = 0;
|
||||
virtual KResultOr<NonnullRefPtr<Inode>> create_child(const String& name, mode_t, dev_t, uid_t, gid_t) = 0;
|
||||
virtual KResult add_child(Inode&, const StringView& name, mode_t) = 0;
|
||||
virtual KResult remove_child(const StringView& name) = 0;
|
||||
|
|
|
@ -171,7 +171,7 @@ public:
|
|||
|
||||
const KBuffer& build();
|
||||
|
||||
static constexpr ssize_t max_header_size = 24;
|
||||
static constexpr size_t max_header_size = 24;
|
||||
|
||||
private:
|
||||
template<typename N>
|
||||
|
@ -634,9 +634,9 @@ KResult Plan9FS::post_message_and_wait_for_a_reply(Message& message)
|
|||
}
|
||||
}
|
||||
|
||||
ssize_t Plan9FS::adjust_buffer_size(ssize_t size) const
|
||||
size_t Plan9FS::adjust_buffer_size(size_t size) const
|
||||
{
|
||||
ssize_t max_size = m_max_message_size - Message::max_header_size;
|
||||
size_t max_size = m_max_message_size - Message::max_header_size;
|
||||
return min(size, max_size);
|
||||
}
|
||||
|
||||
|
@ -728,7 +728,7 @@ KResult Plan9FSInode::ensure_open_for_mode(int mode)
|
|||
}
|
||||
}
|
||||
|
||||
KResultOr<ssize_t> Plan9FSInode::read_bytes(off_t offset, ssize_t size, UserOrKernelBuffer& buffer, FileDescription*) const
|
||||
KResultOr<size_t> Plan9FSInode::read_bytes(off_t offset, size_t size, UserOrKernelBuffer& buffer, FileDescription*) const
|
||||
{
|
||||
auto result = const_cast<Plan9FSInode&>(*this).ensure_open_for_mode(O_RDONLY);
|
||||
if (result.is_error())
|
||||
|
@ -767,7 +767,7 @@ KResultOr<ssize_t> Plan9FSInode::read_bytes(off_t offset, ssize_t size, UserOrKe
|
|||
return nread;
|
||||
}
|
||||
|
||||
KResultOr<ssize_t> Plan9FSInode::write_bytes(off_t offset, ssize_t size, const UserOrKernelBuffer& data, FileDescription*)
|
||||
KResultOr<size_t> Plan9FSInode::write_bytes(off_t offset, size_t size, const UserOrKernelBuffer& data, FileDescription*)
|
||||
{
|
||||
auto result = ensure_open_for_mode(O_WRONLY);
|
||||
if (result.is_error())
|
||||
|
|
|
@ -123,7 +123,7 @@ private:
|
|||
KResult post_message_and_explicitly_ignore_reply(Message&);
|
||||
|
||||
ProtocolVersion parse_protocol_version(const StringView&) const;
|
||||
ssize_t adjust_buffer_size(ssize_t size) const;
|
||||
size_t adjust_buffer_size(size_t size) const;
|
||||
|
||||
void thread_main();
|
||||
void ensure_thread();
|
||||
|
@ -156,8 +156,8 @@ public:
|
|||
// ^Inode
|
||||
virtual InodeMetadata metadata() const override;
|
||||
virtual void flush_metadata() override;
|
||||
virtual KResultOr<ssize_t> read_bytes(off_t, ssize_t, UserOrKernelBuffer& buffer, FileDescription*) const override;
|
||||
virtual KResultOr<ssize_t> write_bytes(off_t, ssize_t, const UserOrKernelBuffer& data, FileDescription*) override;
|
||||
virtual KResultOr<size_t> read_bytes(off_t, size_t, UserOrKernelBuffer& buffer, FileDescription*) const override;
|
||||
virtual KResultOr<size_t> write_bytes(off_t, size_t, const UserOrKernelBuffer& data, FileDescription*) override;
|
||||
virtual KResult traverse_as_directory(Function<bool(const FS::DirectoryEntryView&)>) const override;
|
||||
virtual RefPtr<Inode> lookup(StringView name) override;
|
||||
virtual KResultOr<NonnullRefPtr<Inode>> create_child(const String& name, mode_t, dev_t, uid_t, gid_t) override;
|
||||
|
|
|
@ -895,7 +895,7 @@ static bool read_sys_bool(InodeIdentifier inode_id, KBufferBuilder& builder)
|
|||
return true;
|
||||
}
|
||||
|
||||
static ssize_t write_sys_bool(InodeIdentifier inode_id, const UserOrKernelBuffer& buffer, size_t size)
|
||||
static KResultOr<size_t> write_sys_bool(InodeIdentifier inode_id, const UserOrKernelBuffer& buffer, size_t size)
|
||||
{
|
||||
auto& variable = SysVariable::for_inode(inode_id);
|
||||
VERIFY(variable.type == SysVariable::Type::Boolean);
|
||||
|
@ -913,7 +913,7 @@ static ssize_t write_sys_bool(InodeIdentifier inode_id, const UserOrKernelBuffer
|
|||
return result.error();
|
||||
VERIFY(result.value() == 0 || (result.value() == 1 && did_read));
|
||||
if (result.value() == 0 || !(value == '0' || value == '1'))
|
||||
return (ssize_t)size;
|
||||
return size;
|
||||
|
||||
auto* lockable_bool = reinterpret_cast<Lockable<bool>*>(variable.address);
|
||||
{
|
||||
|
@ -921,7 +921,7 @@ static ssize_t write_sys_bool(InodeIdentifier inode_id, const UserOrKernelBuffer
|
|||
lockable_bool->resource() = value == '1';
|
||||
}
|
||||
variable.notify();
|
||||
return (ssize_t)size;
|
||||
return size;
|
||||
}
|
||||
|
||||
static bool read_sys_string(InodeIdentifier inode_id, KBufferBuilder& builder)
|
||||
|
@ -935,14 +935,14 @@ static bool read_sys_string(InodeIdentifier inode_id, KBufferBuilder& builder)
|
|||
return true;
|
||||
}
|
||||
|
||||
static ssize_t write_sys_string(InodeIdentifier inode_id, const UserOrKernelBuffer& buffer, size_t size)
|
||||
static KResultOr<size_t> write_sys_string(InodeIdentifier inode_id, const UserOrKernelBuffer& buffer, size_t size)
|
||||
{
|
||||
auto& variable = SysVariable::for_inode(inode_id);
|
||||
VERIFY(variable.type == SysVariable::Type::String);
|
||||
|
||||
auto string_copy = buffer.copy_into_string(size);
|
||||
if (string_copy.is_null())
|
||||
return -EFAULT;
|
||||
return EFAULT;
|
||||
|
||||
{
|
||||
auto* lockable_string = reinterpret_cast<Lockable<String>*>(variable.address);
|
||||
|
@ -950,7 +950,7 @@ static ssize_t write_sys_string(InodeIdentifier inode_id, const UserOrKernelBuff
|
|||
lockable_string->resource() = move(string_copy);
|
||||
}
|
||||
variable.notify();
|
||||
return (ssize_t)size;
|
||||
return size;
|
||||
}
|
||||
|
||||
void ProcFS::add_sys_bool(String&& name, Lockable<bool>& var, Function<void()>&& notify_callback)
|
||||
|
@ -1223,7 +1223,7 @@ InodeMetadata ProcFSInode::metadata() const
|
|||
return metadata;
|
||||
}
|
||||
|
||||
KResultOr<ssize_t> ProcFSInode::read_bytes(off_t offset, ssize_t count, UserOrKernelBuffer& buffer, FileDescription* description) const
|
||||
KResultOr<size_t> ProcFSInode::read_bytes(off_t offset, size_t count, UserOrKernelBuffer& buffer, FileDescription* description) const
|
||||
{
|
||||
dbgln_if(PROCFS_DEBUG, "ProcFS: read_bytes offset: {} count: {}", offset, count);
|
||||
VERIFY(offset >= 0);
|
||||
|
@ -1242,7 +1242,7 @@ KResultOr<ssize_t> ProcFSInode::read_bytes(off_t offset, ssize_t count, UserOrKe
|
|||
if (!data_buffer || (size_t)offset >= data_buffer->size())
|
||||
return 0;
|
||||
|
||||
ssize_t nread = min(static_cast<off_t>(data_buffer->size() - offset), static_cast<off_t>(count));
|
||||
size_t nread = min(static_cast<off_t>(data_buffer->size() - offset), static_cast<off_t>(count));
|
||||
if (!buffer.write(data_buffer->data() + offset, nread))
|
||||
return EFAULT;
|
||||
|
||||
|
@ -1454,7 +1454,7 @@ void ProcFSInode::flush_metadata()
|
|||
{
|
||||
}
|
||||
|
||||
KResultOr<ssize_t> ProcFSInode::write_bytes(off_t offset, ssize_t size, const UserOrKernelBuffer& buffer, FileDescription*)
|
||||
KResultOr<size_t> ProcFSInode::write_bytes(off_t offset, size_t size, const UserOrKernelBuffer& buffer, FileDescription*)
|
||||
{
|
||||
// For process-specific inodes, hold the process's ptrace lock across the write
|
||||
// and refuse to write at all data if the process is not dumpable.
|
||||
|
@ -1478,7 +1478,7 @@ KResultOr<ssize_t> ProcFSInode::write_bytes(off_t offset, ssize_t size, const Us
|
|||
|
||||
auto* directory_entry = fs().get_directory_entry(identifier());
|
||||
|
||||
ssize_t (*write_callback)(InodeIdentifier, const UserOrKernelBuffer&, size_t) = nullptr;
|
||||
KResultOr<size_t> (*write_callback)(InodeIdentifier, const UserOrKernelBuffer&, size_t) = nullptr;
|
||||
|
||||
if (directory_entry == nullptr) {
|
||||
if (to_proc_parent_directory(identifier()) == PDI_Root_sys) {
|
||||
|
@ -1503,10 +1503,10 @@ KResultOr<ssize_t> ProcFSInode::write_bytes(off_t offset, ssize_t size, const Us
|
|||
VERIFY(is_persistent_inode(identifier()));
|
||||
// FIXME: Being able to write into ProcFS at a non-zero offset seems like something we should maybe support..
|
||||
VERIFY(offset == 0);
|
||||
ssize_t nwritten = write_callback(identifier(), buffer, (size_t)size);
|
||||
if (nwritten < 0)
|
||||
dbgln("ProcFS: Writing {} bytes failed: {}", size, nwritten);
|
||||
return nwritten;
|
||||
auto nwritten_or_error = write_callback(identifier(), buffer, (size_t)size);
|
||||
if (nwritten_or_error.is_error())
|
||||
dbgln("ProcFS: Writing {} bytes failed: {}", size, nwritten_or_error.error());
|
||||
return nwritten_or_error;
|
||||
}
|
||||
|
||||
KResultOr<NonnullRefPtr<Custody>> ProcFSInode::resolve_as_link(Custody& base, RefPtr<Custody>* out_parent, int options, int symlink_recursion_level) const
|
||||
|
|
|
@ -38,7 +38,7 @@ private:
|
|||
|
||||
struct ProcFSDirectoryEntry {
|
||||
ProcFSDirectoryEntry() = default;
|
||||
ProcFSDirectoryEntry(const char* a_name, unsigned a_proc_file_type, bool a_supervisor_only, bool (*read_callback)(InodeIdentifier, KBufferBuilder&) = nullptr, ssize_t (*write_callback)(InodeIdentifier, const UserOrKernelBuffer&, size_t) = nullptr, RefPtr<ProcFSInode>&& a_inode = nullptr)
|
||||
ProcFSDirectoryEntry(const char* a_name, unsigned a_proc_file_type, bool a_supervisor_only, bool (*read_callback)(InodeIdentifier, KBufferBuilder&) = nullptr, KResultOr<size_t> (*write_callback)(InodeIdentifier, const UserOrKernelBuffer&, size_t) = nullptr, RefPtr<ProcFSInode>&& a_inode = nullptr)
|
||||
: name(a_name)
|
||||
, proc_file_type(a_proc_file_type)
|
||||
, supervisor_only(a_supervisor_only)
|
||||
|
@ -52,7 +52,7 @@ private:
|
|||
unsigned proc_file_type { 0 };
|
||||
bool supervisor_only { false };
|
||||
bool (*read_callback)(InodeIdentifier, KBufferBuilder&);
|
||||
ssize_t (*write_callback)(InodeIdentifier, const UserOrKernelBuffer&, size_t);
|
||||
KResultOr<size_t> (*write_callback)(InodeIdentifier, const UserOrKernelBuffer&, size_t);
|
||||
RefPtr<ProcFSInode> inode;
|
||||
InodeIdentifier identifier(unsigned fsid) const;
|
||||
};
|
||||
|
@ -77,12 +77,12 @@ private:
|
|||
// ^Inode
|
||||
virtual KResult attach(FileDescription&) override;
|
||||
virtual void did_seek(FileDescription&, off_t) override;
|
||||
virtual KResultOr<ssize_t> read_bytes(off_t, ssize_t, UserOrKernelBuffer& buffer, FileDescription*) const override;
|
||||
virtual KResultOr<size_t> read_bytes(off_t, size_t, UserOrKernelBuffer& buffer, FileDescription*) const override;
|
||||
virtual InodeMetadata metadata() const override;
|
||||
virtual KResult traverse_as_directory(Function<bool(const FS::DirectoryEntryView&)>) const override;
|
||||
virtual RefPtr<Inode> lookup(StringView name) override;
|
||||
virtual void flush_metadata() override;
|
||||
virtual KResultOr<ssize_t> write_bytes(off_t, ssize_t, const UserOrKernelBuffer& buffer, FileDescription*) override;
|
||||
virtual KResultOr<size_t> write_bytes(off_t, size_t, const UserOrKernelBuffer& buffer, FileDescription*) override;
|
||||
virtual KResultOr<NonnullRefPtr<Inode>> create_child(const String& name, mode_t, dev_t, uid_t, gid_t) override;
|
||||
virtual KResult add_child(Inode&, const StringView& name, mode_t) override;
|
||||
virtual KResult remove_child(const StringView& name) override;
|
||||
|
@ -111,12 +111,12 @@ private:
|
|||
// ^Inode
|
||||
virtual KResult attach(FileDescription&) override;
|
||||
virtual void did_seek(FileDescription&, off_t) override;
|
||||
virtual KResultOr<ssize_t> read_bytes(off_t, ssize_t, UserOrKernelBuffer&, FileDescription*) const override { VERIFY_NOT_REACHED(); }
|
||||
virtual KResultOr<size_t> read_bytes(off_t, size_t, UserOrKernelBuffer&, FileDescription*) const override { VERIFY_NOT_REACHED(); }
|
||||
virtual InodeMetadata metadata() const override;
|
||||
virtual KResult traverse_as_directory(Function<bool(const FS::DirectoryEntryView&)>) const override { VERIFY_NOT_REACHED(); }
|
||||
virtual RefPtr<Inode> lookup(StringView name) override;
|
||||
virtual void flush_metadata() override {};
|
||||
virtual KResultOr<ssize_t> write_bytes(off_t, ssize_t, const UserOrKernelBuffer&, FileDescription*) override { VERIFY_NOT_REACHED(); }
|
||||
virtual KResultOr<size_t> write_bytes(off_t, size_t, const UserOrKernelBuffer&, FileDescription*) override { VERIFY_NOT_REACHED(); }
|
||||
virtual KResultOr<NonnullRefPtr<Inode>> create_child(const String& name, mode_t, dev_t, uid_t, gid_t) override;
|
||||
virtual KResult add_child(Inode&, const StringView& name, mode_t) override;
|
||||
virtual KResult remove_child(const StringView& name) override;
|
||||
|
|
|
@ -127,11 +127,10 @@ KResult TmpFSInode::traverse_as_directory(Function<bool(const FS::DirectoryEntry
|
|||
return KSuccess;
|
||||
}
|
||||
|
||||
KResultOr<ssize_t> TmpFSInode::read_bytes(off_t offset, ssize_t size, UserOrKernelBuffer& buffer, FileDescription*) const
|
||||
KResultOr<size_t> TmpFSInode::read_bytes(off_t offset, size_t size, UserOrKernelBuffer& buffer, FileDescription*) const
|
||||
{
|
||||
Locker locker(m_lock, Lock::Mode::Shared);
|
||||
VERIFY(!is_directory());
|
||||
VERIFY(size >= 0);
|
||||
VERIFY(offset >= 0);
|
||||
|
||||
if (!m_content)
|
||||
|
@ -148,7 +147,7 @@ KResultOr<ssize_t> TmpFSInode::read_bytes(off_t offset, ssize_t size, UserOrKern
|
|||
return size;
|
||||
}
|
||||
|
||||
KResultOr<ssize_t> TmpFSInode::write_bytes(off_t offset, ssize_t size, const UserOrKernelBuffer& buffer, FileDescription*)
|
||||
KResultOr<size_t> TmpFSInode::write_bytes(off_t offset, size_t size, const UserOrKernelBuffer& buffer, FileDescription*)
|
||||
{
|
||||
Locker locker(m_lock);
|
||||
VERIFY(!is_directory());
|
||||
|
|
|
@ -54,12 +54,12 @@ public:
|
|||
const TmpFS& fs() const { return static_cast<const TmpFS&>(Inode::fs()); }
|
||||
|
||||
// ^Inode
|
||||
virtual KResultOr<ssize_t> read_bytes(off_t, ssize_t, UserOrKernelBuffer& buffer, FileDescription*) const override;
|
||||
virtual KResultOr<size_t> read_bytes(off_t, size_t, UserOrKernelBuffer& buffer, FileDescription*) const override;
|
||||
virtual InodeMetadata metadata() const override;
|
||||
virtual KResult traverse_as_directory(Function<bool(const FS::DirectoryEntryView&)>) const override;
|
||||
virtual RefPtr<Inode> lookup(StringView name) override;
|
||||
virtual void flush_metadata() override;
|
||||
virtual KResultOr<ssize_t> write_bytes(off_t, ssize_t, const UserOrKernelBuffer& buffer, FileDescription*) override;
|
||||
virtual KResultOr<size_t> write_bytes(off_t, size_t, const UserOrKernelBuffer& buffer, FileDescription*) override;
|
||||
virtual KResultOr<NonnullRefPtr<Inode>> create_child(const String& name, mode_t, dev_t, uid_t, gid_t) override;
|
||||
virtual KResult add_child(Inode&, const StringView& name, mode_t) override;
|
||||
virtual KResult remove_child(const StringView& name) override;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue