Пишу драйвер устройства в Linux для небольшого устройства. Устройство имеет определенные ограничения памяти, которые заставляют меня вырезать часть памяти, и в моем драйвере мне нужно знать адрес (и размер) зарезервированной памяти.
/ {
reserved-memory {
my_reserve: my_reserve@a0000000 {
compatible = "shared-dma-pool";
reg = <0 0xa0000000 0 0x20000>;
no-map;
};
};
my_device {
compatible = "my_device";
memory-region = <&my_reserve>;
};
};
Как мне прочитать физический адрес зарезервированной памяти (т.е. как мне прочитать значение 0xa000'0000
) в моем драйвере устройства? Кажется, есть API для зарезервированной памяти, но я не вижу ничего, что возвращало бы struct reserved_mem *