1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 04:17:35 +00:00

Kernel: Use KResultOr<size_t> for the DoubleBuffer class

This commit is contained in:
Gunnar Beutner 2021-06-16 15:33:14 +02:00 committed by Andreas Kling
parent 1c3346e3ce
commit ca3cae81eb
4 changed files with 31 additions and 31 deletions

View file

@ -40,7 +40,7 @@ void DoubleBuffer::flip()
compute_lockfree_metadata();
}
ssize_t DoubleBuffer::write(const UserOrKernelBuffer& data, size_t size)
KResultOr<size_t> DoubleBuffer::write(const UserOrKernelBuffer& data, size_t size)
{
if (!size || m_storage.is_null())
return 0;
@ -48,15 +48,15 @@ ssize_t DoubleBuffer::write(const UserOrKernelBuffer& data, size_t size)
size_t bytes_to_write = min(size, m_space_for_writing);
u8* write_ptr = m_write_buffer->data + m_write_buffer->size;
if (!data.read(write_ptr, bytes_to_write))
return -EFAULT;
return EFAULT;
m_write_buffer->size += bytes_to_write;
compute_lockfree_metadata();
if (m_unblock_callback && !m_empty)
m_unblock_callback();
return (ssize_t)bytes_to_write;
return bytes_to_write;
}
ssize_t DoubleBuffer::read(UserOrKernelBuffer& data, size_t size)
KResultOr<size_t> DoubleBuffer::read(UserOrKernelBuffer& data, size_t size)
{
if (!size || m_storage.is_null())
return 0;
@ -67,15 +67,15 @@ ssize_t DoubleBuffer::read(UserOrKernelBuffer& data, size_t size)
return 0;
size_t nread = min(m_read_buffer->size - m_read_buffer_index, size);
if (!data.write(m_read_buffer->data + m_read_buffer_index, nread))
return -EFAULT;
return EFAULT;
m_read_buffer_index += nread;
compute_lockfree_metadata();
if (m_unblock_callback && m_space_for_writing > 0)
m_unblock_callback();
return (ssize_t)nread;
return nread;
}
ssize_t DoubleBuffer::peek(UserOrKernelBuffer& data, size_t size)
KResultOr<size_t> DoubleBuffer::peek(UserOrKernelBuffer& data, size_t size)
{
if (!size || m_storage.is_null())
return 0;
@ -87,11 +87,11 @@ ssize_t DoubleBuffer::peek(UserOrKernelBuffer& data, size_t size)
return 0;
size_t nread = min(m_read_buffer->size - m_read_buffer_index, size);
if (!data.write(m_read_buffer->data + m_read_buffer_index, nread))
return -EFAULT;
return EFAULT;
compute_lockfree_metadata();
if (m_unblock_callback && m_space_for_writing > 0)
m_unblock_callback();
return (ssize_t)nread;
return nread;
}
}