tg-me.com/rust_code/878
Last Update:
ΠΡΠΈΡΡΠΎΡ Π₯Π΅Π»Π²ΠΈΠ³ (Christoph Hellwig), ΠΌΡΠΉΠ½ΡΠ΅ΠΉΠ½Π΅Ρ ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌ DMA, KVM, Slab Allocator ΠΈ Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΡ PowerPC Π² ΡΠ΄ΡΠ΅ Linux, Π² ΡΠ²ΠΎΡ Π²ΡΠ΅ΠΌΡ Π²Ρ
ΠΎΠ΄ΠΈΠ²ΡΠΈΠΉ Π² ΡΠΏΡΠ°Π²Π»ΡΡΡΠΈΠΉ ΡΠ΅Ρ
Π½ΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΊΠΎΠΌΠΈΡΠ΅Ρ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ Linux Foundation ΠΈ Π²ΡΡΡΡΠΏΠ°Π²ΡΠΈΠΉ ΠΈΡΡΡΠΎΠΌ Π² ΡΠ²ΡΠ·Π°Π½Π½ΠΎΠΌ Ρ GPL ΡΡΠ΄Π΅Π±Π½ΠΎΠΌ ΡΠ°Π·Π±ΠΈΡΠ°ΡΠ΅Π»ΡΡΡΠ²Π΅ Ρ VMware, ΠΎΡΠΊΠ°Π·Π°Π»ΡΡ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π°ΡΡ ΠΏΠ°ΡΡΠΈ, ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΎΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠΎΠ² Π½Π° ΡΠ·ΡΠΊΠ΅ Rust. ΠΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½Π½ΡΠ΅ ΠΏΠ°ΡΡΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΠ»ΠΈ ΠΎΠ±Π²ΡΠ·ΠΊΠΈ Π½Π°Π΄ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΡ DMA, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ DMA Π² Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ°Ρ
Π½Π° ΡΠ·ΡΠΊΠ΅ Rust.
Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΡΠΈΡΠΈΠ½Ρ ΠΎΡΠΊΠ°Π·Π° ΡΠΏΠΎΠΌΡΠ½ΡΡΠΎ ΡΡΠ»ΠΎΠΆΠ½Π΅Π½ΠΈΠ΅ ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π° ΠΏΡΠΈ Π½Π°Π»ΠΈΡΠΈΠΈ ΠΎΠ±Π²ΡΠ·ΠΎΠΊ Π½Π° Π΄ΡΡΠ³ΠΈΡ
ΡΠ·ΡΠΊΠ°Ρ
ΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ ΡΠΎΡ
ΡΠ°Π½ΠΈΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ ΠΊ DMA Π² ΡΠΈΡΠ°Π΅ΠΌΠΎΠΌ Π²ΠΈΠ΄Π΅ Π½Π° ΡΠ·ΡΠΊΠ΅ Π‘ΠΈ, Π±Π΅Π· ΡΠ°Π·ΠΌΠ°Π·ΡΠ²Π°Π½ΠΈΡ ΠΏΠΎ Π½Π΅ΠΏΠΎΠ½ΡΡΠ½ΡΠΌ ΠΎΠ±Π²ΡΠ·ΠΊΠ°ΠΌ. ΠΡΠΈΡΡΠΎΡ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠΈΠ» Π½Π°ΠΏΡΡΠΌΡΡ ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡΡ ΠΊ ΠΈΡΡ
ΠΎΠ΄Π½ΠΎΠΌΡ Π‘ΠΈ API DMA Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ΅ Π½Π° ΡΠ·ΡΠΊΠ΅ Rust, ΡΡΠΎΠ±Ρ Π½Π΅ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ
Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΉ, ΠΎΡ ΠΊΠΎΡΠΎΡΡΡ
Π²ΡΠ½ΡΠΆΠ΄Π΅Π½Ρ Π±ΡΠ΄ΡΡ Π·Π°Π²ΠΈΡΠ΅ΡΡ ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π°ΡΡΠΈΠ΅ ΡΠ΄ΡΠ°.
Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΏΠ°ΡΡΠ΅ΠΉ ΡΠΊΠ°Π·Π°Π»ΠΈ, ΡΡΠΎ ΠΎΠ½ΠΈ Π²ΠΎΠ·ΡΠΌΡΡ Π½Π° ΡΠ΅Π±Ρ Π²ΡΡ ΡΠ°Π±ΠΎΡΡ ΠΏΠΎ ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π° Π½Π° Rust, Π³ΠΎΡΠΎΠ²Ρ ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π°ΡΡ ΡΡΠΈ ΠΏΠ°ΡΡΠΈ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ ΠΈ Π²ΡΠ½Π΅ΡΠ»ΠΈ ΠΎΠ±Π²ΡΠ·ΠΊΠΈ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΠΏΠΎΠ΄ΠΊΠ°ΡΠ°Π»ΠΎΠ³ (rust/kernel/dma.rs).
Π ΠΎΡΠ²Π΅Ρ ΠΡΠΈΡΡΠΎΡ Π½Π°Π»ΠΎΠΆΠΈΠ» Π²Π΅ΡΠΎ ("Nacked-by") Π½Π° ΠΏΡΠΈΡΠΌ ΡΠ²ΡΠ·Π°Π½Π½ΡΡ
Ρ Rust ΠΏΠ°ΡΡΠ΅ΠΉ ΠΈ ΡΠΊΠ°Π·Π°Π», ΡΡΠΎ Π΅ΠΌΡ Π½Π΅ Π½ΡΠΆΠ΅Π½ Π΅ΡΡ ΠΎΠ΄ΠΈΠ½ ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π°ΡΡΠΈΠΉ. ΠΡΠΈΡΡΠΎΡ Π·Π°ΡΠ²ΠΈΠ», ΡΡΠΎ Π΅ΡΠ»ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΎΠ±Π²ΡΠ·ΠΎΠΊ Ρ
ΠΎΡΡΡ Π΄ΠΎΠ±ΠΈΡΡΡΡ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π΅Π½ΠΈΡ Linux ΠΈΠ·-Π·Π° ΡΠΌΠ΅ΡΠΈΠ²Π°Π½ΠΈΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ
ΡΠ·ΡΠΊΠΎΠ² Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ Π±Π°Π·Π΅, ΠΈΠΌ ΡΠ»Π΅Π΄ΡΠ΅Ρ Π΄Π΅Π»Π°ΡΡ ΡΡΠΎ Π² ΡΠ²ΠΎΡΠΌ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ΅, Π° Π½Π΅ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΡΡ ΡΡΡ ΡΠ°ΠΊΠΎΠ²ΡΡ ΠΎΠΏΡΡ
ΠΎΠ»Ρ Π½Π° ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΡ ΡΠ΄ΡΠ°.
ΠΡΠΈ ΡΡΠΎΠΌ ΠΡΠΈΡΡΠΎΡ ΡΡΠΎΡΠ½ΠΈΠ», ΡΡΠΎ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ Π½ΠΈΡΠ΅Π³ΠΎ ΠΏΡΠΎΡΠΈΠ² ΡΠ·ΡΠΊΠ° Rust ΠΈ ΡΡΠΈΡΠ°Π΅Ρ Π΅Π³ΠΎ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· Π»ΡΡΡΠΈΡ
Π½ΠΎΠ²ΡΡ
ΡΠ·ΡΠΊΠΎΠ², Π½ΠΎ ΠΎΠ½ ΠΏΡΠΎΡΠΈΠ² ΡΠΌΠ΅ΡΠΈΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ΄Π° Π½Π° ΡΠ°Π·Π½ΡΡ
ΡΠ·ΡΠΊΠ°Ρ
. ΠΠΎ ΡΠ»ΠΎΠ²Π°ΠΌ ΠΡΠΈΡΡΠΎΡΠ° ΠΎΠ½ Π·Π° ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½ΠΎΠ²ΡΡ
ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² Π½Π° Rust, Π½ΠΎ ΠΏΡΠΎΡΠΈΠ² ΠΏΡΠΈΠΌΠ΅ΡΠΈΠ²Π°Π½ΠΈΡ Rust ΠΊ Π±ΠΎΠ»ΡΡΠΈΠΌ ΠΊΠΎΠ΄ΠΎΠ²ΡΠΌ Π±Π°Π·Π°ΠΌ Π½Π° Π‘ΠΈ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΠ°ΠΊΠΎΠ΅ ΡΠΌΠ΅ΡΠΈΠ²Π°Π½ΠΈΠ΅ ΡΠΈΠ»ΡΠ½ΠΎ ΡΠ½ΠΈΠΆΠ°Π΅Ρ ΡΠ΄ΠΎΠ±ΡΡΠ²ΠΎ ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π΅Π½ΠΈΡ ΡΠ΄ΡΠ°, ΠΊΠ°ΠΊ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°.
Π‘ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Ρ ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ΠΌ Π² ΡΠΎΠΌ, ΡΡΠΎ Rust-ΠΎΠ±Π²ΡΠ·ΠΊΠΈ ΡΡΠ°Π²ΡΡ ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π°ΡΡΠΈΡ
Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ ΠΎΡ ΠΊΠΎΠ΄Π° Π½Π° ΡΠ·ΡΠΊΠ΅ Rust. ΠΠ° ΠΏΠ΅ΡΠ²ΡΠΉ Π²Π·Π³Π»ΡΠ΄ ΠΊΠ°ΠΆΠ΅ΡΡΡ, ΡΡΠΎ ΠΎΠ±Π²ΡΠ·ΠΊΠΈ Π»ΠΈΡΡ Π½Π°Π΄ΡΡΡΠΎΠΉΠΊΠΈ Π½Π°Π΄ Π‘ΠΈ-ΡΡΡΡΠΊΡΡΡΠ°ΠΌΠΈ ΠΈ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ Π²Π»ΠΈΡΡΡ Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΡ ΠΈ ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° Π½Π° Π‘ΠΈ. ΠΠΎ ΡΡΠΎ Π½Π΅ ΡΠ°ΠΊ.
ΠΡΠΈ Π½Π°Π»ΠΈΡΠΈΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ
ΠΎΠ±Π²ΡΠ·ΠΎΠΊ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌ, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΡ
Π½Π° Π‘ΠΈ, Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΡΠΈΡΡΠ²Π°ΡΡ Π²Π»ΠΈΡΠ½ΠΈΠ΅ ΠΈΡ
ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π½Π° ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°Π±ΠΎΡΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΠΈ ΠΎΠ±Π²ΡΠ·ΠΎΠΊ. ΠΡΠ±ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΡΡΡΠΊΡΡΡ Π΄Π°Π½Π½ΡΡ
ΠΈΠ»ΠΈ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΡ
ΡΡΠ½ΠΊΡΠΈΠΉ Π½Π° Π‘ΠΈ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π° ΠΎΠ±Π²ΡΠ·ΠΎΠΊ, ΠΏΠΎΡΡΠΎΠΌΡ Π²Π»ΠΈΡΡΡΠΈΠ΅ Π½Π° ΠΎΠ±Π²ΡΠ·ΠΊΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² Π‘ΠΈ ΠΊΠΎΠ΄Π΅ Π½ΡΠΆΠ½ΠΎ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°ΡΡ ΠΈ ΡΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Ρ ΠΊΠΎΠ΄ΠΎΠΌ Π½Π° Rust. ΠΠ½ΠΎΠ³ΠΈΠ΅ ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π°ΡΡΠΈΠ΅ Π½Π΅ Π³ΠΎΡΠΎΠ²Ρ Π±ΡΠ°ΡΡ Π½Π° ΡΠ΅Π±Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΡ Π·Π° ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌ, Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡΠΈΡ
Π² ΠΊΠΎΠ΄Π΅ Π½Π° Rust, ΠΈ Π½Π΅ Π½Π°ΠΌΠ΅ΡΠ΅Π½Ρ ΡΡΠ°ΡΠΈΡΡ ΡΠ²ΠΎΡ Π²ΡΠ΅ΠΌΡ Π½Π° ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ Rust-ΠΎΠ±Π²ΡΠ·ΠΎΠΊ.
Π‘ΠΈΡΡΠ°ΡΠΈΡ Ρ ΡΡΠ»ΠΎΠΆΠ½Π΅Π½ΠΈΠ΅ΠΌ ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π΅Π½ΠΈΡ Π½Π΅ ΡΠΌΠΎΠ·ΡΠΈΡΠ΅Π»ΡΠ½Π°Ρ. Π Π΄ΠΈΡΠΊΡΡΡΠΈΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΠ»ΡΡ ΠΠΆΠ΅ΠΉΡΠΎΠ½ ΠΠ°Π½ΡΠΎΡΠΏ (Jason Gunthorpe), ΠΌΡΠΉΠ½ΡΠ΅ΠΉΠ½Π΅Ρ TPM, VFIO ΠΈ Infiniband ΠΈΠ· ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ NVIDIA, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΈΠ²ΡΠ» ΠΏΡΠΈΠΌΠ΅Ρ ΠΎΡΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΡ ΠΠΈΠ½ΡΡΠΎΠΌ Π’ΠΎΡΠ²Π°Π»ΡΠ΄ΡΠΎΠΌ pull-Π·Π°ΠΏΡΠΎΡΠ° Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΠΌΠΈ Π² ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΠ΅ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΡΡ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π΄Π°Π½Π½ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΠ»ΠΎ ΠΊ ΡΠ±ΠΎΡ ΠΏΡΠΈ ΠΏΠΎΠΏΡΡΠΊΠ΅ ΡΠ±ΠΎΡΠΊΠΈ ΡΠ΄ΡΠ° Ρ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ Rust. Π‘Π±ΠΎΠΉ Π²ΠΎΠ·Π½ΠΈΠΊ ΠΈΠ·-Π·Π° ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π°ΡΡΠΈΠ΅ ΠΊΠΎΠ΄ Π½Π° Rust Π½Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡ ΠΎΠ±Π²ΡΠ·ΠΎΠΊ (bindgen). Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π°ΡΡΠΈΠ΅ ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΡΡ ΠΏΡΠΈ ΠΏΡΠΎΠ΄Π²ΠΈΠΆΠ΅Π½ΠΈΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΠ³ΠΎ Ρ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ΄Π° Π½Π° Π‘ΠΈ ΠΈ ΡΠ΄ΡΠ° Π² ΡΠ΅Π»ΠΎΠΌ, ΠΎΠΊΠ°Π·Π°Π»ΠΈΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΡ ΠΎΡ ΠΎΠΏΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΡΠΎΡΠΎΠ½Π½Π΅Π³ΠΎ ΠΊΠΎΠ΄Π° Π² ΡΠ΄ΡΠ΅, Π·Π° ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΡΠ²Π΅ΡΠ°ΡΡ Π΄ΡΡΠ³ΠΈΠ΅ Π»ΡΠ΄ΠΈ.
ΠΡΠΊΠ°Π· ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΠΊΠΎΠ΄ ΠΎΠ±Π²ΡΠ·ΠΊΠΈ Π½Π°Π΄ Π²ΡΠ·ΠΎΠ²Π°ΠΌΠΈ DMA ΠΏΠΎΡΡΠ°Π²ΠΈΠ» ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΠΏΡΠΎΠ΅ΠΊΡΠ° Rust for Linux Π² ΡΡΠΏΠΈΠΊ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π±Π΅Π· ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ
ΠΎΠ±Π²ΡΠ·ΠΎΠΊ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΏΠΎΠ»Π½ΠΎΡΠ΅Π½Π½ΡΡ
Π΄ΡΠ°ΠΉΠ²Π΅ΡΠΎΠ² Π½Π° ΡΠ·ΡΠΊΠ΅ Rust Π±ΡΠ΄Π΅Ρ Π·Π°ΡΡΡΠ΄Π½Π΅Π½Π°. ΠΠ΅ΠΊΡΠΎΡ ΠΠ°ΡΡΠΈΠ½ (Hector Martin), ΠΌΡΠΉΠ½ΡΠ΅ΠΉΠ½Π΅Ρ ΠΊΠΎΠ΄Π° Π΄Π»Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈ ARM-ΡΠΈΠΏΠΎΠ² Apple ΠΈ Π»ΠΈΠ΄Π΅Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ° Asahi Linux, Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π²Π°ΡΠΈΠ°Π½ΡΠ° ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠ° ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠΈΠ» Π΄ΠΎΠ±ΠΈΡΡΡΡ ΠΏΡΠΈΠ½ΡΡΠΈΡ ΠΎΠ±Π²ΡΠ·ΠΊΠΈ Π½Π°ΠΏΡΡΠΌΡΡ ΡΠ΅ΡΠ΅Π· ΠΠΈΠ½ΡΡΠ° Π’ΠΎΡΠ²Π°Π»ΡΠ΄ΡΠ°, Π² ΠΎΠ±Ρ
ΠΎΠ΄ ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π°ΡΡΠ΅Π³ΠΎ ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΡ DMA.