.. group-tab:: C++
- .. doxygenfunction:: simgrid::s4u::Disk::io_init(sg_size_t size, s4u::Io::OpType type)
- .. doxygenfunction:: simgrid::s4u::Disk::read(sg_size_t size)
- .. doxygenfunction:: simgrid::s4u::Disk::read_async(sg_size_t size)
- .. doxygenfunction:: simgrid::s4u::Disk::write(sg_size_t size)
- .. doxygenfunction:: simgrid::s4u::Disk::write_async(sg_size_t size)
+ .. doxygenfunction:: simgrid::s4u::Disk::io_init(sg_size_t size, s4u::Io::OpType type) const
+ .. doxygenfunction:: simgrid::s4u::Disk::read(sg_size_t size) const
+ .. doxygenfunction:: simgrid::s4u::Disk::read_async(sg_size_t size) const
+ .. doxygenfunction:: simgrid::s4u::Disk::write(sg_size_t size) const
+ .. doxygenfunction:: simgrid::s4u::Disk::write_async(sg_size_t size) const
Signals
-------
static void test(sg_size_t size)
{
- simgrid::s4u::Disk* disk = simgrid::s4u::Host::current()->get_disks().front();
+ const simgrid::s4u::Disk* disk = simgrid::s4u::Host::current()->get_disks().front();
XBT_INFO("Hello! read %llu bytes from %s", size, disk->get_cname());
simgrid::s4u::IoPtr activity = disk->io_init(size, simgrid::s4u::Io::OpType::READ);
static void test_waitfor(sg_size_t size)
{
- simgrid::s4u::Disk* disk = simgrid::s4u::Host::current()->get_disks().front();
+ const simgrid::s4u::Disk* disk = simgrid::s4u::Host::current()->get_disks().front();
XBT_INFO("Hello! write %llu bytes from %s", size, disk->get_cname());
simgrid::s4u::IoPtr activity = disk->write_async(size);
static void test_cancel(sg_size_t size)
{
- simgrid::s4u::Disk* disk = simgrid::s4u::Host::current()->get_disks().front();
+ const simgrid::s4u::Disk* disk = simgrid::s4u::Host::current()->get_disks().front();
simgrid::s4u::this_actor::sleep_for(0.5);
XBT_INFO("Hello! write %llu bytes from %s", size, disk->get_cname());
static void test_monitor(sg_size_t size)
{
- simgrid::s4u::Disk* disk = simgrid::s4u::Host::current()->get_disks().front();
+ const simgrid::s4u::Disk* disk = simgrid::s4u::Host::current()->get_disks().front();
simgrid::s4u::this_actor::sleep_for(1);
simgrid::s4u::IoPtr activity = disk->write_async(size);
XBT_INFO("Read %llu bytes on '%s'", read, disk->get_cname());
/* - Write 800,000 bytes on Disk3 */
- simgrid::s4u::Disk* disk3 = disk_list.back();
- sg_size_t write_on_disk3 = disk3->write(800000);
+ const simgrid::s4u::Disk* disk3 = disk_list.back();
+ sg_size_t write_on_disk3 = disk3->write(800000);
XBT_INFO("Wrote %llu bytes on '%s'", write_on_disk3, disk3->get_cname());
/* - Attach some user data to disk1 */
XBT_PUBLIC sg_host_t sg_disk_get_host(const_sg_disk_t disk);
XBT_PUBLIC double sg_disk_read_bandwidth(const_sg_disk_t disk);
XBT_PUBLIC double sg_disk_write_bandwidth(const_sg_disk_t disk);
-XBT_PUBLIC sg_size_t sg_disk_write(sg_disk_t disk, sg_size_t size);
-XBT_PUBLIC sg_size_t sg_disk_read(sg_disk_t disk, sg_size_t size);
+XBT_PUBLIC sg_size_t sg_disk_write(const_sg_disk_t disk, sg_size_t size);
+XBT_PUBLIC sg_size_t sg_disk_read(const_sg_disk_t disk, sg_size_t size);
XBT_PUBLIC void* sg_disk_get_data(const_sg_disk_t disk);
XBT_PUBLIC void sg_disk_set_data(sg_disk_t disk, void* data);
SG_END_DECL
std::string fullpath_;
sg_size_t current_position_ = SEEK_SET;
int desc_id = 0;
- Disk* local_disk_ = nullptr;
+ const Disk* local_disk_ = nullptr;
std::string mount_point_;
- Disk* find_local_disk_on(const Host* host);
+ const Disk* find_local_disk_on(const Host* host);
public:
File(const std::string& fullpath, void* userdata);
Disk* set_host(Host* host);
Host* get_host() const;
- IoPtr io_init(sg_size_t size, s4u::Io::OpType type);
+ IoPtr io_init(sg_size_t size, s4u::Io::OpType type) const;
- IoPtr read_async(sg_size_t size);
- sg_size_t read(sg_size_t size);
+ IoPtr read_async(sg_size_t size) const;
+ sg_size_t read(sg_size_t size) const;
- IoPtr write_async(sg_size_t size);
- sg_size_t write(sg_size_t size);
+ IoPtr write_async(sg_size_t size) const;
+ sg_size_t write(sg_size_t size) const;
void seal();
#ifndef DOXYGEN
simgrid::xbt::Extension<Disk, FileSystemDiskExt> FileSystemDiskExt::EXTENSION_ID;
simgrid::xbt::Extension<Host, FileDescriptorHostExt> FileDescriptorHostExt::EXTENSION_ID;
-Disk* File::find_local_disk_on(const Host* host)
+const Disk* File::find_local_disk_on(const Host* host)
{
- Disk* d = nullptr;
+ const Disk* d = nullptr;
size_t longest_prefix_length = 0;
for (auto const& disk : host->get_disks()) {
std::string current_mount;
kernel::actor::simcall([this, &key, &value] { this->pimpl_->set_property(key, value); });
}
-IoPtr Disk::io_init(sg_size_t size, Io::OpType type)
+IoPtr Disk::io_init(sg_size_t size, Io::OpType type) const
{
return Io::init()->set_disk(this)->set_size(size)->set_op_type(type);
}
-IoPtr Disk::read_async(sg_size_t size)
+IoPtr Disk::read_async(sg_size_t size) const
{
return IoPtr(io_init(size, Io::OpType::READ))->vetoable_start();
}
-sg_size_t Disk::read(sg_size_t size)
+sg_size_t Disk::read(sg_size_t size) const
{
return IoPtr(io_init(size, Io::OpType::READ))->vetoable_start()->wait()->get_performed_ioops();
}
-IoPtr Disk::write_async(sg_size_t size)
+IoPtr Disk::write_async(sg_size_t size) const
{
return IoPtr(io_init(size, Io::OpType::WRITE)->vetoable_start());
}
-sg_size_t Disk::write(sg_size_t size)
+sg_size_t Disk::write(sg_size_t size) const
{
return IoPtr(io_init(size, Io::OpType::WRITE))->vetoable_start()->wait()->get_performed_ioops();
}
return disk->get_write_bandwidth();
}
-sg_size_t sg_disk_read(sg_disk_t disk, sg_size_t size)
+sg_size_t sg_disk_read(const_sg_disk_t disk, sg_size_t size)
{
return disk->read(size);
}
-sg_size_t sg_disk_write(sg_disk_t disk, sg_size_t size)
+sg_size_t sg_disk_write(const_sg_disk_t disk, sg_size_t size)
{
return disk->write(size);
}
static void host()
{
- simgrid::s4u::Disk* disk = simgrid::s4u::this_actor::get_host()->get_disks().front(); // Disk1
- aid_t id = simgrid::s4u::this_actor::get_pid();
+ const simgrid::s4u::Disk* disk = simgrid::s4u::this_actor::get_host()->get_disks().front(); // Disk1
+ aid_t id = simgrid::s4u::this_actor::get_pid();
XBT_INFO("process %ld is writing!", id);
disk->write(4000000);
XBT_INFO("process %ld goes to sleep for %ld seconds", id, id);