mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 19:52: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
	
	 Gunnar Beutner
						Gunnar Beutner