History log of /haiku/headers/os/drivers/Drivers.h
Revision Date Author Comments
# 478c8c84 13-Feb-2023 Augustin Cavalier <waddlesplash@gmail.com>

Drivers.h: Rename device_{read|write}_pages back to device_{read|write}v_hook.

They are not about reading and writing pages, but just iovecs.
As the passed iovecs use void*s, it can't possibly be working with
physical pages on 32-bit systems with PAE.

It appears nothing uses or implements these functions anyway,
as there was nothing else in the tree I had to adjust after making
this change...


# 688acf41 15-Sep-2022 Jérôme Duval <jerome.duval@gmail.com>

add physical_block_size field where applicable

only scsi_disk checks the actual value, other drivers take the logical block size.

This change reports the physical block size from the disk rather than the block
size used by IDE/SATA/SCSI commands. On typical modern SATA disks, the SATA
commands will use 512 byte blocks, but the disk will actually read and write
4K blocks internally. This is only of importance for partition alignment for DriveSetup,
and is independant of file systems or partitioning systems. This could also influence
the recommended block size for some file systems.

Change-Id: Id0f2e22659e89fcef64c1f8d04f81cd68995e01f
Reviewed-on: https://review.haiku-os.org/c/haiku/+/5667
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: Adrien Destugues <pulkomandy@pulkomandy.tk>


# bd02d81c 30-Jun-2021 David Sebek <dasebek@gmail.com>

Fix trim-related issues

Fixes:
* Use uint64 instead of off_t when handling offset and size
of the trimmed range in the fs_trim_data structure
* BlockAllocator::Trim: Correct the size of a buffer
* ram_disk, mmc: Do not trim past device capacity

Improvements:
* BlockAllocator::Trim: Because the received offset and size
are ignored by BFS (the functionality is not implemented yet),
return B_UNSUPPORTED if the range does not cover the whole
partition
* ram_disk, mmc: More accurate calculation of the number
of trimmed bytes
* devfs: Add a uint64 version of translate_partition_access()

Change-Id: I24f4c08674f123ad33a5fef6e28996a4ada6ff0d
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4155
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>


# cef80a1f 17-Jan-2021 Adrien Destugues <pulkomandy@pulkomandy.tk>

devfs: translate partition offsets in B_TRIM_DEVICE

Fixes bfs part of #10336. Untested on SATA (don't have a testing drive
to sacrifice) but working fine on SD/MMC.

This requires moving the copy from kernel to userland into the devfs. As
a result the code in the disk drivers becomes a bit simpler.

Also add some documentation for the common ioctls to implement for a
disk device.

Change-Id: Ie84b6a1d293828d33902a64b3c9d4b19aa6eacb1
Reviewed-on: https://review.haiku-os.org/c/haiku/+/3640
Reviewed-by: Jérôme Duval <jerome.duval@gmail.com>


# 99086aa3 14-Aug-2013 Axel Dörfler <axeld@pinc-software.de>

trim: Target SCSI UNMAP command instead of WRITE SAME.

* The UNMAP command is theoretically much faster, as it can get many block
ranges instead of just a single range.
* Furthermore, the ATA TRIM command resembles it much better.
* Therefore, fs_trim_data now gets an array of ranges, and we use SCSI UNMAP
to trim.
* Updated BFS code to collect array ranges to fully support the new
fs_trim_data possibilities.


# 29a84508 04-Aug-2013 Axel Dörfler <axeld@pinc-software.de>

Added B_TRIM_DEVICE ioctl.


# 51d76425 13-Jan-2011 Axel Dörfler <axeld@pinc-software.de>

* Added a new B_GET_DEVICE_NAME ioctl - this should be implemented by all
drivers in the future, such that NetworkStatus and similar software can show
nice names for the devices. The device manager should implement this and
return the B_DEVICE_PRETTY_NAME of the device (and in turn, new style drivers
should actually set this).
* Implemented handling of this ioctl in the scsi_periph to return the vendor/
product strings.
* Implemented this in the ATA bus manager to return the model from the info
block.
* KDiskDevice now fills in the partition_data::name if the B_GET_DEVICE_NAME
succeeds.
* As a side effect, at least BootManager now shows the drive name; maybe
DriveSetup does as well for the raw device.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40231 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 626e25b1 23-Dec-2010 Michael Lotz <mmlr@mlotz.ch>

Remove the apostrophe as pointed out by Urias.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39925 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 3a8bae7c 23-Dec-2010 Michael Lotz <mmlr@mlotz.ch>

Fix a typo.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39924 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 06ba3f0a 17-Aug-2008 Axel Dörfler <axeld@pinc-software.de>

* Added two new ways to retrieve an icon from a device:
- B_GET_ICON_NAME: returns the name of an icon. This will then be read from
a predefined location on disk (not yet implemented). This would also allow
to add specifiers like "-boot", or "-fat|bfs|ntfs|...", and have special
icons for those.
- B_GET_VECTOR_ICON: retrieves the vector icon of a device, if any.
* get_device_icon(BBitmap*, ...) now supports other color spaces than B_CMAP8.
* Added get_device_icon(), BPartition::GetIcon(), and BVolume::GetIcon()
variants that can also retrieve the icon data directly (like
BNodeInfo::GetIcon()).
* Reenabled the previous BPartition::GetIcon(), based on a patch by
Justin O'Dell - this fixes #1391.
* Tracker's MountMenu class now uses B_RGBA32 icons, instead of B_CMAP8.
* Added vector icon to scsi_disk, and scsi_cd. The former doesn't have any
special removable icon, though.
* Header cleanup, added/updated license, whitespace cleanup.
* Marked deprecated/obsolete driver ioctls in Drivers.h.
* Removed OpenBeOS namespace in the headers I touched that still had them.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27001 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 6210a1dd 30-May-2006 François Revol <revol@free.fr>

Add an ioctl B_GET_PATH_FOR_DEVICE,
this should simplify big times implementing ttyname() for ex, and could be handy anyway.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17655 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 8384cc5c 30-Sep-2004 Axel Dörfler <axeld@pinc-software.de>

Moved the select stuff into its own header file for now which is now included
from both, Drivers.h, and fs_interface.h.
The latter no longer includes vfs_types.h for iovecs, but <sys/uio.h> for iovec.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9140 a95241bf-73f2-0310-859d-f6bbb57e9c96


# d9b7e039 30-Sep-2004 François Revol <revol@free.fr>

use another proto for notify_select_event


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9137 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 6f3c0b6c 30-Sep-2004 François Revol <revol@free.fr>

Added missing R5 select stuff. Fixed a typo.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9123 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 9edfb372 04-Sep-2004 Axel Dörfler <axeld@pinc-software.de>

Renamed the readv/writev hook functions to read_pages/write_pages to
make clear that they work differently from before (or soon will).


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8841 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 07e76c95 28-Mar-2004 Axel Dörfler <axeld@pinc-software.de>

NewOS read/write hooks return ssize_t, but on BeOS, they return status_t and
the number of bytes read/written in an argument. Until now, we had a buggy
mix between those two solutions. Courtesy of Jack Burton.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@7100 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 813b3cc5 22-Feb-2004 Axel Dörfler <axeld@pinc-software.de>

Removed the non-Be-compatible devfs partition info stuff.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@6680 a95241bf-73f2-0310-859d-f6bbb57e9c96


# f97b4ac4 23-Jun-2003 Ingo Weinhold <ingo_weinhold@gmx.de>

Made the header C++ friendly.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3632 a95241bf-73f2-0310-859d-f6bbb57e9c96


# d7e489f8 23-Oct-2002 beveloper <beveloper@nowhere.fake>

modified to provider better R5 compatibility


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1615 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 085320ea 22-Sep-2002 Axel Dörfler <axeld@pinc-software.de>

Fixed some header issues (mostly int, status_t).
Replaced <types.h> with <sys/types.h> because that's what those headers
were looking for.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1118 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 5f79d3a8 12-Jul-2002 David Reid <dreid@nowhere.fake>

drivers -> Drivers...


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@167 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 99086aa32333be5792b0f059ccbbe3c90be05ea6 14-Aug-2013 Axel Dörfler <axeld@pinc-software.de>

trim: Target SCSI UNMAP command instead of WRITE SAME.

* The UNMAP command is theoretically much faster, as it can get many block
ranges instead of just a single range.
* Furthermore, the ATA TRIM command resembles it much better.
* Therefore, fs_trim_data now gets an array of ranges, and we use SCSI UNMAP
to trim.
* Updated BFS code to collect array ranges to fully support the new
fs_trim_data possibilities.


# 29a845084326c35014460ab2c3cb23c89d239d38 04-Aug-2013 Axel Dörfler <axeld@pinc-software.de>

Added B_TRIM_DEVICE ioctl.


# 51d76425033b27609fb4e206c7c9610cd4c4a653 13-Jan-2011 Axel Dörfler <axeld@pinc-software.de>

* Added a new B_GET_DEVICE_NAME ioctl - this should be implemented by all
drivers in the future, such that NetworkStatus and similar software can show
nice names for the devices. The device manager should implement this and
return the B_DEVICE_PRETTY_NAME of the device (and in turn, new style drivers
should actually set this).
* Implemented handling of this ioctl in the scsi_periph to return the vendor/
product strings.
* Implemented this in the ATA bus manager to return the model from the info
block.
* KDiskDevice now fills in the partition_data::name if the B_GET_DEVICE_NAME
succeeds.
* As a side effect, at least BootManager now shows the drive name; maybe
DriveSetup does as well for the raw device.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40231 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 626e25b19eca714487d93ae41c32fbb95b0c5538 23-Dec-2010 Michael Lotz <mmlr@mlotz.ch>

Remove the apostrophe as pointed out by Urias.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39925 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 3a8bae7cf22f8c3e4ee8ec24973bd22dcfcf14e5 23-Dec-2010 Michael Lotz <mmlr@mlotz.ch>

Fix a typo.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39924 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 06ba3f0acb06fd0a5818f2609886fe1d35fbfbd3 17-Aug-2008 Axel Dörfler <axeld@pinc-software.de>

* Added two new ways to retrieve an icon from a device:
- B_GET_ICON_NAME: returns the name of an icon. This will then be read from
a predefined location on disk (not yet implemented). This would also allow
to add specifiers like "-boot", or "-fat|bfs|ntfs|...", and have special
icons for those.
- B_GET_VECTOR_ICON: retrieves the vector icon of a device, if any.
* get_device_icon(BBitmap*, ...) now supports other color spaces than B_CMAP8.
* Added get_device_icon(), BPartition::GetIcon(), and BVolume::GetIcon()
variants that can also retrieve the icon data directly (like
BNodeInfo::GetIcon()).
* Reenabled the previous BPartition::GetIcon(), based on a patch by
Justin O'Dell - this fixes #1391.
* Tracker's MountMenu class now uses B_RGBA32 icons, instead of B_CMAP8.
* Added vector icon to scsi_disk, and scsi_cd. The former doesn't have any
special removable icon, though.
* Header cleanup, added/updated license, whitespace cleanup.
* Marked deprecated/obsolete driver ioctls in Drivers.h.
* Removed OpenBeOS namespace in the headers I touched that still had them.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27001 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 6210a1dd4c1cae5c2787baf9de5de6eb9a38918a 30-May-2006 François Revol <revol@free.fr>

Add an ioctl B_GET_PATH_FOR_DEVICE,
this should simplify big times implementing ttyname() for ex, and could be handy anyway.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17655 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 8384cc5c92fabafc1e06d22a1eadeebdb57c2d3f 30-Sep-2004 Axel Dörfler <axeld@pinc-software.de>

Moved the select stuff into its own header file for now which is now included
from both, Drivers.h, and fs_interface.h.
The latter no longer includes vfs_types.h for iovecs, but <sys/uio.h> for iovec.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9140 a95241bf-73f2-0310-859d-f6bbb57e9c96


# d9b7e039efc8e473e77f575ba0fa9c74818f3503 30-Sep-2004 François Revol <revol@free.fr>

use another proto for notify_select_event


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9137 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 6f3c0b6c34efdfae903e886c2158d2df91ff8965 30-Sep-2004 François Revol <revol@free.fr>

Added missing R5 select stuff. Fixed a typo.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9123 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 9edfb372ab4dd1838c110c5c241e65667dbe9f6a 04-Sep-2004 Axel Dörfler <axeld@pinc-software.de>

Renamed the readv/writev hook functions to read_pages/write_pages to
make clear that they work differently from before (or soon will).


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8841 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 07e76c95be49f3b175d87deece8917b174a13843 28-Mar-2004 Axel Dörfler <axeld@pinc-software.de>

NewOS read/write hooks return ssize_t, but on BeOS, they return status_t and
the number of bytes read/written in an argument. Until now, we had a buggy
mix between those two solutions. Courtesy of Jack Burton.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@7100 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 813b3cc53e5f7113480a4977bd9ee9bce71eba08 22-Feb-2004 Axel Dörfler <axeld@pinc-software.de>

Removed the non-Be-compatible devfs partition info stuff.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@6680 a95241bf-73f2-0310-859d-f6bbb57e9c96


# f97b4ac4a26fea9534b58d338737773a91186057 23-Jun-2003 Ingo Weinhold <ingo_weinhold@gmx.de>

Made the header C++ friendly.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3632 a95241bf-73f2-0310-859d-f6bbb57e9c96


# d7e489f80a82a0dc5974df1e780d7a908129bab4 23-Oct-2002 beveloper <beveloper@nowhere.fake>

modified to provider better R5 compatibility


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1615 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 085320eab292455845b0a56ec6d08c0d04e5693d 22-Sep-2002 Axel Dörfler <axeld@pinc-software.de>

Fixed some header issues (mostly int, status_t).
Replaced <types.h> with <sys/types.h> because that's what those headers
were looking for.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1118 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 5f79d3a87b371b46a696923f18d114a59ca9d42e 12-Jul-2002 David Reid <dreid@nowhere.fake>

drivers -> Drivers...


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@167 a95241bf-73f2-0310-859d-f6bbb57e9c96