Re: [PATCH v3 10/16] rust: block: add block related constants

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



"Daniel Almeida" <daniel.almeida@xxxxxxxxxxxxx> writes:

>> On 11 Jul 2025, at 08:43, Andreas Hindborg <a.hindborg@xxxxxxxxxx> wrote:
>>
>> Add a few block subsystem constants to the rust `kernel::block` name space.
>> This makes it easier to access the constants from rust code.
>>
>> Signed-off-by: Andreas Hindborg <a.hindborg@xxxxxxxxxx>
>> ---
>> rust/kernel/block.rs | 12 ++++++++++++
>> 1 file changed, 12 insertions(+)
>>
>> diff --git a/rust/kernel/block.rs b/rust/kernel/block.rs
>> index 150f710efe5b..7461adf4d7e0 100644
>> --- a/rust/kernel/block.rs
>> +++ b/rust/kernel/block.rs
>> @@ -3,3 +3,15 @@
>> //! Types for working with the block layer.
>>
>> pub mod mq;
>> +
>> +/// Bit mask for masking out [`SECTOR_SIZE`]
>
> Missing period.

Thanks.

>
>> +pub const SECTOR_MASK: u32 = bindings::SECTOR_MASK;
>> +
>> +/// Sectors are size `1 << SECTOR_SHIFT`.
>> +pub const SECTOR_SHIFT: u32 = bindings::SECTOR_SHIFT;
>> +
>> +/// Size of a sector.
>> +pub const SECTOR_SIZE: u32 = bindings::SECTOR_SIZE;
>> +
>> +/// Power of two difference in size of a page and size of a sector.
>
> A bit hard to parse this.
>
> Maybe “The difference between the size of a page and the size of a sector,
> expressed as a power of two” ?

OK.

>
>> +pub const PAGE_SECTORS_SHIFT: u32 = bindings::PAGE_SECTORS_SHIFT;
>>
>> --
>> 2.47.2
>>
>>
>>
>
>
>  let sector: usize = something;
>  let page_offset = (sector & block::SECTOR_MASK as usize) << block::SECTOR_SHIFT;
>
>
> Wait, the parenthesis evaluate to usize, and the shift is a u32. How does this compile?

That is all good. `Shl` has a ton of impls for integers [1].

Shifting more than 64 spaces on 64 bit system makes no sense anyway.

Best regards,
Andreas Hindborg


[1] https://doc.rust-lang.org/std/ops/trait.Shl.html






[Index of Archives]     [Linux RAID]     [Linux SCSI]     [Linux ATA RAID]     [IDE]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Device Mapper]

  Powered by Linux