diff --git a/dde_linux/src/lib/usb/storage/storage.cc b/dde_linux/src/lib/usb/storage/storage.cc index 0239a9098..67e50a85c 100644 --- a/dde_linux/src/lib/usb/storage/storage.cc +++ b/dde_linux/src/lib/usb/storage/storage.cc @@ -43,7 +43,7 @@ class Storage_device : public Genode::List::Element, Block::Packet_descriptor *packet = static_cast(cmnd->packet); if (verbose) - PDBG("ACK packet for block: %zu status: %d", packet->block_number(), cmnd->result); + PDBG("ACK packet for block: %llu status: %d", packet->block_number(), cmnd->result); session->complete_packet(*packet); Genode::destroy(Genode::env()->heap(), packet); @@ -86,7 +86,7 @@ class Storage_device : public Genode::List::Element, _scsi_free_command(cmnd); } - void _io(Genode::size_t block_nr, Genode::size_t block_count, + void _io(Block::sector_t block_nr, Genode::size_t block_count, Block::Packet_descriptor packet, Genode::addr_t virt, Genode::addr_t phys, bool read) { @@ -94,7 +94,7 @@ class Storage_device : public Genode::List::Element, throw Io_error(); if (verbose) - PDBG("PACKET: phys: %lx block: %zu count: %u %s", + PDBG("PACKET: phys: %lx block: %llu count: %u %s", phys, block_nr, block_count, read ? "read" : "write"); struct scsi_cmnd *cmnd = _scsi_alloc_command(); @@ -142,8 +142,8 @@ class Storage_device : public Genode::List::Element, _capacity(); } - Genode::size_t block_size() { return _block_size; } - Genode::size_t block_count() { return _block_count; } + Genode::size_t block_size() { return _block_size; } + Block::sector_t block_count() { return _block_count; } Block::Session::Operations ops() { @@ -153,7 +153,7 @@ class Storage_device : public Genode::List::Element, return o; } - void read_dma(Genode::size_t block_number, + void read_dma(Block::sector_t block_number, Genode::size_t block_count, Genode::addr_t phys, Block::Packet_descriptor &packet) @@ -163,7 +163,7 @@ class Storage_device : public Genode::List::Element, phys, true); } - void write_dma(Genode::size_t block_number, + void write_dma(Block::sector_t block_number, Genode::size_t block_count, Genode::addr_t phys, Block::Packet_descriptor &packet) diff --git a/gems/src/server/http_blk/main.cc b/gems/src/server/http_blk/main.cc index baf280b41..03d9da187 100644 --- a/gems/src/server/http_blk/main.cc +++ b/gems/src/server/http_blk/main.cc @@ -39,8 +39,8 @@ class Driver : public Block::Driver ** Block::Driver interface ** *******************************/ - Genode::size_t block_size() { return _block_size; } - Genode::size_t block_count() { return _http.file_size() / _block_size; } + Genode::size_t block_size() { return _block_size; } + Block::sector_t block_count() { return _http.file_size() / _block_size; } Block::Session::Operations ops() { @@ -49,7 +49,7 @@ class Driver : public Block::Driver return o; } - void read(Genode::size_t block_nr, + void read(Block::sector_t block_nr, Genode::size_t block_count, char *buffer, Block::Packet_descriptor &packet) diff --git a/libports/src/lib/ffat/diskio_block.cc b/libports/src/lib/ffat/diskio_block.cc index 0d27d31ba..daacf2718 100644 --- a/libports/src/lib/ffat/diskio_block.cc +++ b/libports/src/lib/ffat/diskio_block.cc @@ -28,7 +28,7 @@ static bool const verbose = false; static Genode::Allocator_avl _block_alloc(Genode::env()->heap()); static Block::Connection *_block_connection; static size_t _blk_size = 0; -static size_t _blk_cnt = 0; +static Block::sector_t _blk_cnt = 0; static Block::Session::Tx::Source *_source; @@ -72,7 +72,7 @@ extern "C" DSTATUS disk_initialize (BYTE drv) } if (verbose) - PDBG("We have %zu blocks with a size of %zu bytes", + PDBG("We have %llu blocks with a size of %zu bytes", _blk_cnt, _blk_size); initialized = true; diff --git a/libports/src/lib/libc_block/plugin.cc b/libports/src/lib/libc_block/plugin.cc index e6d68750b..f171e86f5 100644 --- a/libports/src/lib/libc_block/plugin.cc +++ b/libports/src/lib/libc_block/plugin.cc @@ -58,7 +58,7 @@ namespace { Block::Connection *_block; size_t _block_size; - size_t _block_count; + Block::sector_t _block_count; Block::Session::Operations _block_ops; Block::Session::Tx::Source *_tx_source; @@ -94,7 +94,7 @@ namespace { _block_buffer = reinterpret_cast(malloc(BUFFER_BLOCK_NUMBER * _block_size)); if (verbose) { - PDBG("number of blocks: %zu with block size: %zu (bytes)" + PDBG("number of blocks: %llu with block size: %zu (bytes)" " , readable: %d writeable: %d", _block_count, _block_size, _readable, _writeable); } diff --git a/os/include/block/component.h b/os/include/block/component.h index 541760b65..e3e1c9c40 100644 --- a/os/include/block/component.h +++ b/os/include/block/component.h @@ -142,7 +142,18 @@ class Block::Session_component : public Block::Session_rpc_object _driver_factory.destroy(&_driver); } - void info(size_t *blk_count, size_t *blk_size, + /** + * Destructor + */ + ~Session_component() { + _driver_factory.destroy(&_driver); } + + + /******************************* + ** Block session interface ** + *******************************/ + + void info(sector_t *blk_count, size_t *blk_size, Operations *ops) { *blk_count = _driver.block_count(); diff --git a/os/include/block/driver.h b/os/include/block/driver.h index cacf04f55..ecb05671d 100644 --- a/os/include/block/driver.h +++ b/os/include/block/driver.h @@ -50,7 +50,7 @@ struct Block::Driver /** * Request capacity of medium in blocks */ - virtual Genode::size_t block_count() = 0; + virtual Block::sector_t block_count() = 0; /** * Request operations supported by the device @@ -64,7 +64,7 @@ struct Block::Driver * \param block_count number of blocks to read * \param buffer output buffer for read request */ - virtual void read(Genode::size_t block_number, + virtual void read(sector_t block_number, Genode::size_t block_count, char * buffer, Packet_descriptor &packet) { @@ -77,7 +77,7 @@ struct Block::Driver * \param block_count number of blocks to write * \param buffer buffer for write request */ - virtual void write(Genode::size_t block_number, + virtual void write(sector_t block_number, Genode::size_t block_count, const char * buffer, Packet_descriptor &packet) { @@ -90,7 +90,7 @@ struct Block::Driver * \param block_count number of blocks to read * \param phys phyiscal address of read buffer */ - virtual void read_dma(Genode::size_t block_number, + virtual void read_dma(sector_t block_number, Genode::size_t block_count, Genode::addr_t phys, Packet_descriptor &packet) { @@ -103,7 +103,7 @@ struct Block::Driver * \param block_count number of blocks to write * \param phys physical address of write buffer */ - virtual void write_dma(Genode::size_t block_number, + virtual void write_dma(sector_t block_number, Genode::size_t block_count, Genode::addr_t phys, Packet_descriptor &packet) { diff --git a/os/include/block_session/block_session.h b/os/include/block_session/block_session.h index 9f4c7a161..b9ea17e1b 100644 --- a/os/include/block_session/block_session.h +++ b/os/include/block_session/block_session.h @@ -51,7 +51,7 @@ namespace Block { private: Opcode _op; /* requested operation */ - Genode::size_t _block_number; /* requested block number */ + sector_t _block_number; /* requested block number */ Genode::size_t _block_count; /* number of blocks to transfer */ unsigned _success :1; /* indicates success of operation */ @@ -68,13 +68,13 @@ namespace Block { * Constructor */ Packet_descriptor(Packet_descriptor p, Opcode op, - Genode::size_t blk_nr, Genode::size_t blk_count = 1) + sector_t blk_nr, Genode::size_t blk_count = 1) : ::Packet_descriptor(p.offset(), p.size()), _op(op), _block_number(blk_nr), _block_count(blk_count), _success(false) { } Opcode operation() const { return _op; } - Genode::size_t block_number() const { return _block_number; } + sector_t block_number() const { return _block_number; } Genode::size_t block_count() const { return _block_count; } bool succeeded() const { return _success; } @@ -125,7 +125,7 @@ namespace Block { * \param blk_size will contain total size in bytes * \param ops supported operations */ - virtual void info(Genode::size_t *blk_count, + virtual void info(sector_t *blk_count, Genode::size_t *blk_size, Operations *ops) = 0; @@ -149,7 +149,8 @@ namespace Block { ** RPC interface ** *******************/ - GENODE_RPC(Rpc_info, void, info, Genode::size_t *, Genode::size_t *, Operations *); + GENODE_RPC(Rpc_info, void, info, Block::sector_t *, + Genode::size_t *, Operations *); GENODE_RPC(Rpc_tx_cap, Genode::Capability, _tx_cap); GENODE_RPC(Rpc_sync, void, sync); GENODE_RPC_INTERFACE(Rpc_info, Rpc_tx_cap, Rpc_sync); diff --git a/os/include/block_session/client.h b/os/include/block_session/client.h index adeb1c142..a6062d3c5 100644 --- a/os/include/block_session/client.h +++ b/os/include/block_session/client.h @@ -47,7 +47,7 @@ namespace Block { ** Block session interface ** *****************************/ - void info(Genode::size_t *blk_count, Genode::size_t *blk_size, + void info(sector_t *blk_count, Genode::size_t *blk_size, Operations *ops) { call(blk_count, blk_size, ops); diff --git a/os/src/drivers/ahci/exynos5/ahci_driver.cc b/os/src/drivers/ahci/exynos5/ahci_driver.cc index 5f7620895..480f083bc 100644 --- a/os/src/drivers/ahci/exynos5/ahci_driver.cc +++ b/os/src/drivers/ahci/exynos5/ahci_driver.cc @@ -1947,5 +1947,5 @@ int Ahci_driver::_ncq_command(uint64_t lba, unsigned cnt, addr_t phys, bool w) return ret; } -size_t Ahci_driver::block_count() { return sata_ahci()->block_cnt; } -size_t Ahci_driver::block_size() { return Sata_ahci::BLOCK_SIZE; } +Block::sector_t Ahci_driver::block_count() { return sata_ahci()->block_cnt; } +size_t Ahci_driver::block_size() { return Sata_ahci::BLOCK_SIZE; } diff --git a/os/src/drivers/ahci/exynos5/ahci_driver.h b/os/src/drivers/ahci/exynos5/ahci_driver.h index 7f60b1c9b..9b1367458 100644 --- a/os/src/drivers/ahci/exynos5/ahci_driver.h +++ b/os/src/drivers/ahci/exynos5/ahci_driver.h @@ -52,11 +52,11 @@ class Ahci_driver : public Block::Driver return o; } - size_t block_size(); - size_t block_count(); + size_t block_size(); + Block::sector_t block_count(); bool dma_enabled() { return true; } - void read_dma(size_t block_nr, size_t block_cnt, addr_t phys, + void read_dma(Block::sector_t block_nr, size_t block_cnt, addr_t phys, Block::Packet_descriptor &packet) { if (_ncq_command(block_nr, block_cnt, phys, 0)) @@ -64,7 +64,7 @@ class Ahci_driver : public Block::Driver session->complete_packet(packet); } - void write_dma(size_t block_nr, size_t block_cnt, addr_t phys, + void write_dma(Block::sector_t block_nr, size_t block_cnt, addr_t phys, Block::Packet_descriptor &packet) { if (_ncq_command(block_nr, block_cnt, phys, 1)) diff --git a/os/src/drivers/ahci/include/ahci_device_base.h b/os/src/drivers/ahci/include/ahci_device_base.h index 3b49f542b..15071dfe6 100644 --- a/os/src/drivers/ahci/include/ahci_device_base.h +++ b/os/src/drivers/ahci/include/ahci_device_base.h @@ -316,7 +316,7 @@ struct Command_table /** * Setup FIS and PRD */ - void setup_command(uint8_t cmd, uint32_t lba48, uint16_t blk_cnt, addr_t phys_addr) + void setup_command(uint8_t cmd, uint64_t lba48, uint16_t blk_cnt, addr_t phys_addr) { enum { MAX_BYTES = 1 << 22 }; /* 4MB = one PRD */ uint8_t *fis = (uint8_t *)this; @@ -332,8 +332,8 @@ struct Command_table fis[6] = (lba48 >> 16) & 0xff; /* LBA 16 - 23 */ fis[7] = 0x40; /* LBA mode flag */ fis[8] = (lba48 >> 24) & 0xff; /* LBA 24 - 31 */ - fis[9] = 0x0; /* LBA 32 - 39 */ - fis[10] = 0x0; /* LBA 40 - 47 */ + fis[9] = (lba48 >> 32) & 0xff; /* LBA 32 - 39 */ + fis[10] = (lba48 >> 40) & 0xff; /* LBA 40 - 47 */ fis[12] = blk_cnt & 0xff; /* sector count 0 - 7 */ fis[13] = (blk_cnt >> 8) & 0xff; /* sector count 8 - 15 */ @@ -537,24 +537,28 @@ class Ahci_device_base /** * Issue ATA 'READ_DMA_EXT' command */ - void read(size_t block_number, size_t block_count, addr_t phys) + void read(Block::sector_t block_number, size_t block_count, + addr_t phys) { _cmd_list->w = 0; enum { READ_DMA_EXT = 0x25 }; - _cmd_table->setup_command(READ_DMA_EXT, block_number, block_count, phys); + _cmd_table->setup_command(READ_DMA_EXT, block_number, + block_count, phys); _execute_command(); } /** * Issue ATA 'WRITE_DMA_EXT' command */ - void write(size_t block_number, size_t block_count, addr_t phys) + void write(Block::sector_t block_number, size_t block_count, + addr_t phys) { _cmd_list->w = 1; enum { WRITE_DMA_EXT = 0x35 }; - _cmd_table->setup_command(WRITE_DMA_EXT, block_number, block_count, phys); + _cmd_table->setup_command(WRITE_DMA_EXT, block_number, + block_count, phys); _execute_command(); } diff --git a/os/src/drivers/ahci/include/ahci_driver_base.h b/os/src/drivers/ahci/include/ahci_driver_base.h index 519dbcc99..4f5364d2d 100644 --- a/os/src/drivers/ahci/include/ahci_driver_base.h +++ b/os/src/drivers/ahci/include/ahci_driver_base.h @@ -46,7 +46,8 @@ class Ahci_driver_base : public Block::Driver } size_t block_size() { return Ahci_device::block_size(); } - size_t block_count() { return _device ? _device->block_count() : 0; } + Block::sector_t block_count() { + return _device ? _device->block_count() : 0; } Block::Session::Operations ops() { @@ -58,9 +59,9 @@ class Ahci_driver_base : public Block::Driver bool dma_enabled() { return true; } - void read_dma(size_t block_number, - size_t block_count, - addr_t phys, + void read_dma(Block::sector_t block_number, + size_t block_count, + addr_t phys, Block::Packet_descriptor &packet) { _sanity_check(block_number, block_count); @@ -68,9 +69,9 @@ class Ahci_driver_base : public Block::Driver if (session) session->complete_packet(packet); } - void write_dma(size_t block_number, - size_t block_count, - addr_t phys, + void write_dma(Block::sector_t block_number, + size_t block_count, + addr_t phys, Block::Packet_descriptor &packet) { _sanity_check(block_number, block_count); diff --git a/os/src/drivers/atapi/ata_device.cc b/os/src/drivers/atapi/ata_device.cc index 0f164a41b..99830e6d3 100644 --- a/os/src/drivers/atapi/ata_device.cc +++ b/os/src/drivers/atapi/ata_device.cc @@ -148,7 +148,7 @@ void Ata::Device::read_capacity() } -void Ata::Device::_read(Genode::size_t block_nr, +void Ata::Device::_read(Block::sector_t block_nr, Genode::size_t count, char *buffer, bool dma) @@ -161,7 +161,7 @@ void Ata::Device::_read(Genode::size_t block_nr, if (dma) { if (verbose) - PDBG("DMA read: block %zu, c %zu, buffer: %p", + PDBG("DMA read: block %llu, c %zu, buffer: %p", block_nr, c, (void*)(buffer + offset)); if (!_lba48) @@ -196,7 +196,7 @@ void Ata::Device::_read(Genode::size_t block_nr, } -void Ata::Device::_write(Genode::size_t block_nr, +void Ata::Device::_write(Block::sector_t block_nr, Genode::size_t count, char const *buffer, bool dma) @@ -209,7 +209,7 @@ void Ata::Device::_write(Genode::size_t block_nr, if (dma) { if (verbose) - PDBG("DMA read: block %zu, c %zu, buffer: %p", + PDBG("DMA read: block %llu, c %zu, buffer: %p", block_nr, c, (void*)(buffer + offset)); if (!_lba48) diff --git a/os/src/drivers/atapi/ata_device.h b/os/src/drivers/atapi/ata_device.h index dfd96316b..2d6894483 100644 --- a/os/src/drivers/atapi/ata_device.h +++ b/os/src/drivers/atapi/ata_device.h @@ -61,11 +61,11 @@ namespace Ata { Genode::Irq_connection *irq() { return _irq; } Genode::Io_port_session *io() { return _pio; } - virtual void _read(Genode::size_t block_number, + virtual void _read(Block::sector_t block_number, Genode::size_t block_count, char *out_buffer, bool dma); - virtual void _write(Genode::size_t block_number, + virtual void _write(Block::sector_t block_number, Genode::size_t block_count, char const *buffer, bool dma); @@ -112,13 +112,13 @@ namespace Ata { ** Block::Driver interface ** *******************************/ - Genode::size_t block_count() { + Block::sector_t block_count() { return _block_end - _block_start + 1; } Genode::size_t block_size() { return _block_size; } virtual Block::Session::Operations ops(); - void read(Genode::size_t block_number, + void read(Block::sector_t block_number, Genode::size_t block_count, char *buffer, Block::Packet_descriptor &packet) @@ -127,7 +127,7 @@ namespace Ata { session->complete_packet(packet); } - void write(Genode::size_t block_number, + void write(Block::sector_t block_number, Genode::size_t block_count, char const *buffer, Block::Packet_descriptor &packet) @@ -136,16 +136,16 @@ namespace Ata { session->complete_packet(packet); } - void read_dma(Genode::size_t block_number, - Genode::size_t block_count, - Genode::addr_t phys, + void read_dma(Block::sector_t block_number, + Genode::size_t block_count, + Genode::addr_t phys, Block::Packet_descriptor &packet) { _read(block_number, block_count, (char*)phys, true); session->complete_packet(packet); } - void write_dma(Genode::size_t block_number, + void write_dma(Block::sector_t block_number, Genode::size_t block_count, Genode::addr_t phys, Block::Packet_descriptor &packet) @@ -165,11 +165,11 @@ namespace Ata { int read_sense(unsigned char *sense, int length); void read_capacity(); - void _read(Genode::size_t block_number, + void _read(Block::sector_t block_number, Genode::size_t block_count, char *out_buffer, bool dma); - void _write(Genode::size_t block_number, + void _write(Block::sector_t block_number, Genode::size_t block_count, char const *buffer, bool dma); diff --git a/os/src/drivers/atapi/atapi_device.cc b/os/src/drivers/atapi/atapi_device.cc index a4ceadb1a..223555678 100644 --- a/os/src/drivers/atapi/atapi_device.cc +++ b/os/src/drivers/atapi/atapi_device.cc @@ -42,7 +42,7 @@ Atapi_device::Atapi_device(unsigned base_cmd, unsigned base_ctrl) int Atapi_device::read_sense(unsigned char *sense, int length) { unsigned char cmd_sense[12]; - + memset(cmd_sense, 0, 12); memset(sense, 0, length); @@ -83,7 +83,7 @@ void Atapi_device::read_capacity() memset(buffer, 0, 8); cmd[0] = CMD_READ_CAPACITY; - + if (!test_unit_ready()) throw Io_error(); @@ -100,7 +100,7 @@ void Atapi_device::read_capacity() } -void Atapi_device::_read(Genode::size_t block_nr, +void Atapi_device::_read(Block::sector_t block_nr, Genode::size_t count, char *buffer, bool dma) @@ -127,7 +127,7 @@ void Atapi_device::_read(Genode::size_t block_nr, if (dma) { if (verbose) - PDBG("DMA read: block %zu, count %zu, buffer: %p", + PDBG("DMA read: block %llu, count %zu, buffer: %p", block_nr, count, (void*)buffer); if (dma_pci_packet(dev_num(), 12, cmd, 0, count * _block_size, @@ -141,7 +141,7 @@ void Atapi_device::_read(Genode::size_t block_nr, } -void Atapi_device::_write(Genode::size_t block_number, +void Atapi_device::_write(Block::sector_t block_number, Genode::size_t block_count, char const *buffer, bool dma) { throw Io_error(); } diff --git a/os/src/drivers/sd_card/exynos5/driver.h b/os/src/drivers/sd_card/exynos5/driver.h index 9dabab4b4..8cb2d6dbd 100644 --- a/os/src/drivers/sd_card/exynos5/driver.h +++ b/os/src/drivers/sd_card/exynos5/driver.h @@ -84,7 +84,7 @@ class Block::Exynos5_driver : public Block::Driver Genode::size_t block_size() { return 512; } - virtual Genode::size_t block_count() + virtual Block::sector_t block_count() { return _controller.card_info().capacity_mb() * 1024 * 2; } @@ -97,27 +97,7 @@ class Block::Exynos5_driver : public Block::Driver return o; } - void read(Genode::size_t block_number, - Genode::size_t block_count, - char *out_buffer, - Packet_descriptor &packet) - { - if (!_controller.read_blocks(block_number, block_count, out_buffer)) - throw Io_error(); - session->complete_packet(packet); - } - - void write(Genode::size_t block_number, - Genode::size_t block_count, - char const *buffer, - Packet_descriptor &packet) - { - if (!_controller.write_blocks(block_number, block_count, buffer)) - throw Io_error(); - session->complete_packet(packet); - } - - void read_dma(Genode::size_t block_number, + void read_dma(Block::sector_t block_number, Genode::size_t block_count, Genode::addr_t phys, Packet_descriptor &packet) @@ -127,7 +107,7 @@ class Block::Exynos5_driver : public Block::Driver session->complete_packet(packet); } - void write_dma(Genode::size_t block_number, + void write_dma(Block::sector_t block_number, Genode::size_t block_count, Genode::addr_t phys, Packet_descriptor &packet) diff --git a/os/src/drivers/sd_card/exynos5/dwmmc.h b/os/src/drivers/sd_card/exynos5/dwmmc.h index cf94df5f7..f46189df5 100644 --- a/os/src/drivers/sd_card/exynos5/dwmmc.h +++ b/os/src/drivers/sd_card/exynos5/dwmmc.h @@ -325,7 +325,7 @@ struct Exynos5_msh_controller : private Dwmmc, Sd_card::Host_controller using namespace Sd_card; powerup(); - + if (!reset(_delayer)) throw Detection_failed(); @@ -628,7 +628,7 @@ struct Exynos5_msh_controller : private Dwmmc, Sd_card::Host_controller /* return sector count */ uint64_t capacity = csd.read() * BLOCK_SIZE; - + /* to MB */ return capacity / (1024 * 1024); } @@ -638,19 +638,7 @@ struct Exynos5_msh_controller : private Dwmmc, Sd_card::Host_controller return _card_info; } - bool read_blocks(size_t block_number, size_t block_count, char *out_buffer) - { - PWRN("'read_blocks' not implemented"); - return true; - } - - bool write_blocks(size_t block_number, size_t block_count, char const *buffer) - { - PWRN("'write_blocks' not implemented"); - return true; - } - - bool read_blocks_dma(size_t block_number, size_t block_count, + bool read_blocks_dma(Block::sector_t block_number, size_t block_count, Genode::addr_t buffer_phys) { if (!_setup_idmac_descriptor_table(block_count, buffer_phys)) @@ -671,7 +659,7 @@ struct Exynos5_msh_controller : private Dwmmc, Sd_card::Host_controller return complete; } - bool write_blocks_dma(size_t block_number, size_t block_count, + bool write_blocks_dma(Block::sector_t block_number, size_t block_count, Genode::addr_t buffer_phys) { if (!_setup_idmac_descriptor_table(block_count, buffer_phys)) diff --git a/os/src/drivers/sd_card/omap4/driver.h b/os/src/drivers/sd_card/omap4/driver.h index 8d5b140ed..d6d78fa97 100644 --- a/os/src/drivers/sd_card/omap4/driver.h +++ b/os/src/drivers/sd_card/omap4/driver.h @@ -77,7 +77,7 @@ class Block::Omap4_driver : public Block::Driver Genode::size_t block_size() { return 512; } - virtual Genode::size_t block_count() + virtual Block::sector_t block_count() { return _controller.card_info().capacity_mb() * 1024 * 2; } @@ -90,7 +90,7 @@ class Block::Omap4_driver : public Block::Driver return o; } - void read(Genode::size_t block_number, + void read(Block::sector_t block_number, Genode::size_t block_count, char *out_buffer, Packet_descriptor &packet) @@ -100,7 +100,7 @@ class Block::Omap4_driver : public Block::Driver session->complete_packet(packet); } - void write(Genode::size_t block_number, + void write(Block::sector_t block_number, Genode::size_t block_count, char const *buffer, Packet_descriptor &packet) @@ -110,7 +110,7 @@ class Block::Omap4_driver : public Block::Driver session->complete_packet(packet); } - void read_dma(Genode::size_t block_number, + void read_dma(Block::sector_t block_number, Genode::size_t block_count, Genode::addr_t phys, Packet_descriptor &packet) @@ -120,7 +120,7 @@ class Block::Omap4_driver : public Block::Driver session->complete_packet(packet); } - void write_dma(Genode::size_t block_number, + void write_dma(Block::sector_t block_number, Genode::size_t block_count, Genode::addr_t phys, Packet_descriptor &packet) diff --git a/os/src/drivers/sd_card/pl180/sd_card.h b/os/src/drivers/sd_card/pl180/sd_card.h index 0d8cfb56f..76f1eb363 100644 --- a/os/src/drivers/sd_card/pl180/sd_card.h +++ b/os/src/drivers/sd_card/pl180/sd_card.h @@ -78,7 +78,7 @@ class Sd_card : public Block::Driver /* * TODO report (and support) real capacity not just 512M */ - Genode::size_t block_count() { return 0x20000000 / BLOCK_SIZE; } + Block::sector_t block_count() { return 0x20000000 / BLOCK_SIZE; } Block::Session::Operations ops() { @@ -88,7 +88,7 @@ class Sd_card : public Block::Driver return o; } - void read(Genode::size_t block_number, + void read(Block::sector_t block_number, Genode::size_t block_count, char *out_buffer, Block::Packet_descriptor &packet) @@ -110,7 +110,7 @@ class Sd_card : public Block::Driver session->complete_packet(packet); } - void write(Genode::size_t block_number, + void write(Block::sector_t block_number, Genode::size_t block_count, char const *buffer, Block::Packet_descriptor &packet) diff --git a/os/src/server/iso9660/iso9660.cc b/os/src/server/iso9660/iso9660.cc index 1693d7a10..797a291bc 100644 --- a/os/src/server/iso9660/iso9660.cc +++ b/os/src/server/iso9660/iso9660.cc @@ -489,7 +489,7 @@ namespace Iso { Sector::_blk = &_blk; Sector::_source = _blk.tx(); - size_t blk_cnt = 0; + Block::sector_t blk_cnt = 0; Block::Session::Operations ops; _blk.info(&blk_cnt, &Sector::_blk_size, &ops); } diff --git a/os/src/server/part_blk/back_end.cc b/os/src/server/part_blk/back_end.cc index c5d2b22ae..a9f7bbda7 100644 --- a/os/src/server/part_blk/back_end.cc +++ b/os/src/server/part_blk/back_end.cc @@ -105,7 +105,7 @@ namespace Partition { _alloc_sem.up(); if (!_p.succeeded()) { - PERR("Could not access block %zu", _p.block_number()); + PERR("Could not access block %llu", _p.block_number()); throw Io_error(); } } diff --git a/os/src/server/rom_blk/main.cc b/os/src/server/rom_blk/main.cc index ca8211193..52ea1afe9 100644 --- a/os/src/server/rom_blk/main.cc +++ b/os/src/server/rom_blk/main.cc @@ -47,8 +47,8 @@ class Rom_blk : public Block::Driver ** Block-driver interface ** ****************************/ - Genode::size_t block_size() { return _blk_sz; } - Genode::size_t block_count() { return _blk_cnt; } + Genode::size_t block_size() { return _blk_sz; } + Block::sector_t block_count() { return _blk_cnt; } Block::Session::Operations ops() { @@ -57,7 +57,7 @@ class Rom_blk : public Block::Driver return o; } - void read(Genode::size_t block_number, + void read(Block::sector_t block_number, Genode::size_t block_count, char* buffer, Block::Packet_descriptor &packet) @@ -65,12 +65,12 @@ class Rom_blk : public Block::Driver /* sanity check block number */ if ((block_number + block_count > _file_sz / _blk_sz) || block_number < 0) { - PWRN("requested blocks %zd-%zd out of range!", + PWRN("requested blocks %lld-%lld out of range!", block_number, block_number + block_count); return; } - size_t offset = block_number * _blk_sz; + size_t offset = (size_t) block_number * _blk_sz; size_t size = block_count * _blk_sz; /* copy file content to packet payload */ diff --git a/os/src/test/block_bench/main.cc b/os/src/test/block_bench/main.cc index 3f8344781..eb0738b65 100644 --- a/os/src/test/block_bench/main.cc +++ b/os/src/test/block_bench/main.cc @@ -158,7 +158,7 @@ int main(int argc, char **argv) /* check block-connection info */ Genode::size_t _blk_size = 0; - size_t blk_cnt = 0; + Block::sector_t blk_cnt = 0; Block::Session::Operations ops; _blk_con.info(&blk_cnt, &_blk_size, &ops); if (!ops.supported(Block::Packet_descriptor::READ)) { diff --git a/os/src/test/fb_block_adapter/main.cc b/os/src/test/fb_block_adapter/main.cc index 49637e846..b374d516d 100644 --- a/os/src/test/fb_block_adapter/main.cc +++ b/os/src/test/fb_block_adapter/main.cc @@ -47,8 +47,8 @@ class Driver : public Block::Driver ** Block::Driver interface ** *******************************/ - Genode::size_t block_size() { return BLOCK_SIZE; } - Genode::size_t block_count() { return _fb_size / BLOCK_SIZE; } + Genode::size_t block_size() { return BLOCK_SIZE; } + Block::sector_t block_count() { return _fb_size / BLOCK_SIZE; } Block::Session::Operations ops() { @@ -58,14 +58,14 @@ class Driver : public Block::Driver return ops; } - void read(Genode::size_t block_number, + void read(Block::sector_t block_number, Genode::size_t block_count, char *buffer, Block::Packet_descriptor &packet) { /* sanity check block number */ if (block_number + block_count > _fb_size / BLOCK_SIZE) { - PWRN("Out of range: requested %zd blocks from block %zd", + PWRN("Out of range: requested %zd blocks from block %llu", block_count, block_number); return; } @@ -77,14 +77,14 @@ class Driver : public Block::Driver session->complete_packet(packet); } - void write(Genode::size_t block_number, + void write(Block::sector_t block_number, Genode::size_t block_count, char const *buffer, Block::Packet_descriptor &packet) { /* sanity check block number */ if (block_number + block_count > _fb_size / BLOCK_SIZE) { - PWRN("Out of range: requested %zd blocks from block %zd", + PWRN("Out of range: requested %zd blocks from block %llu", block_count, block_number); return; } diff --git a/os/src/test/part_blk/main.cc b/os/src/test/part_blk/main.cc index 3aa038a65..d7484e1e2 100644 --- a/os/src/test/part_blk/main.cc +++ b/os/src/test/part_blk/main.cc @@ -56,7 +56,7 @@ class Sector _p = _blk.tx()->get_acked_packet(); if (!_p.succeeded()) - PERR("Could not access block %zu", _p.block_number()); + PERR("Could not access block %llu", _p.block_number()); } }; diff --git a/os/src/test/rom_blk/main.cc b/os/src/test/rom_blk/main.cc index 69031b766..35b8fecb2 100644 --- a/os/src/test/rom_blk/main.cc +++ b/os/src/test/rom_blk/main.cc @@ -51,7 +51,7 @@ class Comparer : public Genode::Thread<8192> Block::Session::Tx::Source *source = _blk_con.tx(); size_t blk_size = 0; - size_t blk_cnt = 0; + Block::sector_t blk_cnt = 0; Genode::addr_t end = _addr + Dataspace_client(_rom.dataspace()).size(); Block::Session::Operations ops; @@ -61,7 +61,7 @@ class Comparer : public Genode::Thread<8192> PERR("Block device not readable!"); } - PINF("We have %zx blocks with a size of %zx bytes", blk_cnt, blk_size); + PINF("We have %llu blocks with a size of 0x%zx bytes", blk_cnt, blk_size); for (size_t i = 0; i < blk_cnt; i += BLOCK_REQ_PARALLEL) { try { diff --git a/ports-foc/src/lib/l4lx/genode_block.cc b/ports-foc/src/lib/l4lx/genode_block.cc index 752bfa2e5..0351f57e2 100644 --- a/ports-foc/src/lib/l4lx/genode_block.cc +++ b/ports-foc/src/lib/l4lx/genode_block.cc @@ -91,7 +91,7 @@ namespace { Genode::Allocator_avl _alloc; Block::Connection _session; Genode::size_t _blk_size; - Genode::size_t _blk_cnt; + Block::sector_t _blk_cnt; Block::Session::Operations _blk_ops; Genode::Native_capability _irq_cap; Genode::Signal_context _tx; diff --git a/ports/src/vancouver/disk.h b/ports/src/vancouver/disk.h index f3fe1fd98..2cea71274 100644 --- a/ports/src/vancouver/disk.h +++ b/ports/src/vancouver/disk.h @@ -91,7 +91,7 @@ class Vancouver_disk : public Genode::Thread<8192>, public StaticReceiver