Skip to main content

Module sizes

Module sizes 

Source
Expand description

Commonly used sizes.

C headers: include/linux/sizes.h.

The top-level SZ_* constants are usize-typed, for use in kernel page arithmetic and similar CPU-side work.

The SizeConstants trait provides the same constants as associated constants on u32, u64, and usize, for use in device address spaces where the address width depends on the hardware. Device drivers frequently need these constants as u64 (or u32) rather than usize, because device address spaces are sized independently of the CPU pointer width.

The trait is also implemented for Alignment, providing each size as a compile-time validated alignment.

§Examples

use kernel::{
    page::PAGE_SIZE,
    sizes::{
        SizeConstants,
        SZ_1M, //
    }, //
};

// Module-level constants continue to work without a type qualifier.
let num_pages_in_1m = SZ_1M / PAGE_SIZE;

// Trait associated constants require a type qualifier.
let heap_size = 14 * u64::SZ_1M;
let small = u32::SZ_4K;

Constants§

SZ_1
0x0000_0001.
SZ_2
0x0000_0002.
SZ_4
0x0000_0004.
SZ_8
0x0000_0008.
SZ_1G
0x4000_0000.
SZ_1K
0x0000_0400.
SZ_1M
0x0010_0000.
SZ_2G
0x8000_0000.
SZ_2K
0x0000_0800.
SZ_2M
0x0020_0000.
SZ_4K
0x0000_1000.
SZ_4M
0x0040_0000.
SZ_8K
0x0000_2000.
SZ_8M
0x0080_0000.
SZ_16
0x0000_0010.
SZ_32
0x0000_0020.
SZ_64
0x0000_0040.
SZ_16K
0x0000_4000.
SZ_16M
0x0100_0000.
SZ_32K
0x0000_8000.
SZ_32M
0x0200_0000.
SZ_64K
0x0001_0000.
SZ_64M
0x0400_0000.
SZ_128
0x0000_0080.
SZ_256
0x0000_0100.
SZ_512
0x0000_0200.
SZ_128K
0x0002_0000.
SZ_128M
0x0800_0000.
SZ_256K
0x0004_0000.
SZ_256M
0x1000_0000.
SZ_512K
0x0008_0000.
SZ_512M
0x2000_0000.

Traits§

SizeConstants
Size constants for device address spaces.