mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 16:07:47 +00:00
Kernel/USB: Tidy up USB::Transfer construction
This commit is contained in:
parent
f4a9a0d561
commit
79fbad6df9
3 changed files with 5 additions and 9 deletions
|
@ -61,11 +61,7 @@ KResultOr<size_t> Pipe::control_transfer(u8 request_type, u8 request, u16 value,
|
||||||
usb_request.index = index;
|
usb_request.index = index;
|
||||||
usb_request.length = length;
|
usb_request.length = length;
|
||||||
|
|
||||||
auto transfer = Transfer::try_create(*this, length);
|
auto transfer = TRY(Transfer::try_create(*this, length));
|
||||||
|
|
||||||
if (!transfer)
|
|
||||||
return ENOMEM;
|
|
||||||
|
|
||||||
transfer->set_setup_packet(usb_request);
|
transfer->set_setup_packet(usb_request);
|
||||||
|
|
||||||
dbgln_if(USB_DEBUG, "Pipe: Transfer allocated @ {}", transfer->buffer_physical());
|
dbgln_if(USB_DEBUG, "Pipe: Transfer allocated @ {}", transfer->buffer_physical());
|
||||||
|
|
|
@ -9,15 +9,15 @@
|
||||||
|
|
||||||
namespace Kernel::USB {
|
namespace Kernel::USB {
|
||||||
|
|
||||||
RefPtr<Transfer> Transfer::try_create(Pipe& pipe, u16 len)
|
KResultOr<NonnullRefPtr<Transfer>> Transfer::try_create(Pipe& pipe, u16 len)
|
||||||
{
|
{
|
||||||
// Initialize data buffer for transfer
|
// Initialize data buffer for transfer
|
||||||
// This will definitely need to be refactored in the future, I doubt this will scale well...
|
// This will definitely need to be refactored in the future, I doubt this will scale well...
|
||||||
auto data_buffer = MM.allocate_kernel_region(PAGE_SIZE, "USB Transfer Buffer", Memory::Region::Access::ReadWrite);
|
auto data_buffer = MM.allocate_kernel_region(PAGE_SIZE, "USB Transfer Buffer", Memory::Region::Access::ReadWrite);
|
||||||
if (!data_buffer)
|
if (!data_buffer)
|
||||||
return {};
|
return ENOMEM;
|
||||||
|
|
||||||
return try_make_ref_counted<Transfer>(pipe, len, data_buffer.release_nonnull());
|
return adopt_nonnull_ref_or_enomem(new (nothrow) Transfer(pipe, len, data_buffer.release_nonnull()));
|
||||||
}
|
}
|
||||||
|
|
||||||
Transfer::Transfer(Pipe& pipe, u16 len, NonnullOwnPtr<Memory::Region> data_buffer)
|
Transfer::Transfer(Pipe& pipe, u16 len, NonnullOwnPtr<Memory::Region> data_buffer)
|
||||||
|
|
|
@ -19,7 +19,7 @@ namespace Kernel::USB {
|
||||||
|
|
||||||
class Transfer : public RefCounted<Transfer> {
|
class Transfer : public RefCounted<Transfer> {
|
||||||
public:
|
public:
|
||||||
static RefPtr<Transfer> try_create(Pipe& pipe, u16 len);
|
static KResultOr<NonnullRefPtr<Transfer>> try_create(Pipe&, u16 length);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
Transfer() = delete;
|
Transfer() = delete;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue