ΠΡΠΈΡΡΠΎΡ Π₯Π΅Π»Π²ΠΈΠ³ (Christoph Hellwig) ΡΡΡΠ» Ρ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ ΠΌΡΠΉΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌ dma-mapping ΠΈ configfs. Π£Ρ ΠΎΠ΄ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΠ»ΡΡ ΠΎΡΠΏΡΠ°Π²ΠΊΠΎΠΉ Π·Π°ΡΠ²ΠΊΠΈ Π½Π° ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΈΠ· ΡΠΏΠΈΡΠΊΠ° ΠΌΡΠΉΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ² ΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ΅ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΎΡΡΠ°Π²ΡΠΈΠΌΡΡ ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π°ΡΡΠΈΠΌ. Π ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΠ΅ dma-mapping ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ ΠΠ°ΡΠ΅ΠΊ Π¨ΠΈΠΏΡΠΎΠ²ΡΠΊΠΈ (Marek Szyprowski) ΠΈΠ· Samsung, Π° Π² configfs β ΠΠΆΠΎΡΠ» ΠΠ΅ΠΊΠΊΠ΅Ρ (Joel Becker) ΠΈΠ· Oracle.
ΠΡΠΈΡΡΠΎΡ Π₯Π΅Π»Π²ΠΈΠ³ ΠΏΠΎΠΊΠ° ΠΎΡΡΠ°ΡΡΡΡ Π² ΡΠΈΡΠ»Π΅ ΠΌΡΠΉΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ² ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌ NVM Express, vmalloc ΠΈ FreeVXFS. Π ΠΏΡΠΎΡΠ»ΠΎΠΌ ΠΡΠΈΡΡΠΎΡ Π²Ρ ΠΎΠ΄ΠΈΠ» Π² ΡΠΏΡΠ°Π²Π»ΡΡΡΠΈΠΉ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΊΠΎΠΌΠΈΡΠ΅Ρ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ Linux Foundation ΠΈ ΡΡΠ°ΡΡΠ²ΠΎΠ²Π°Π» Π² ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ ΡΠ°ΠΊΠΈΡ ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌ, ΠΊΠ°ΠΊ XFS, KVM, Trace events, SCSI ΠΈ Slab Allocator, Π° ΡΠ°ΠΊΠΆΠ΅ Π·Π°Π½ΠΈΠΌΠ°Π»ΡΡ ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ΠΌ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ PowerPC Π² ΡΠ΄ΡΠ΅ Linux. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ ΠΡΠΈΡΡΠΎΡ Π²ΡΡΡΡΠΏΠ°Π» ΠΈΡΡΡΠΎΠΌ Π² ΡΡΠ΄Π΅Π±Π½ΠΎΠΌ ΡΠ°Π·Π±ΠΈΡΠ°ΡΠ΅Π»ΡΡΡΠ²Π΅ Ρ VMware, ΡΠ²ΡΠ·Π°Π½Π½ΠΎΠΌ Ρ Π½Π°ΡΡΡΠ΅Π½ΠΈΠ΅ΠΌ Π»ΠΈΡΠ΅Π½Π·ΠΈΠΈ GPL.
ΠΡΠ΅ΠΊΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π΅Π½ΠΈΡ ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌ dma-mapping ΠΈ configfs ΠΎΠ±ΡΡΠ»ΠΎΠ²Π»Π΅Π½ΠΎ Π·Π°ΡΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΠΈΠ½ΡΡΠ° Π’ΠΎΡΠ²Π°Π»ΡΠ΄ΡΠ° ΠΎ Π½Π°ΠΌΠ΅ΡΠ΅Π½ΠΈΠΈ Π²ΠΊΠ»ΡΡΠ°ΡΡ Π² ΡΠ΄ΡΠΎ ΠΎΠ±Π²ΡΠ·ΠΊΠΈ Π½Π° ΡΠ·ΡΠΊΠ΅ Rust Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΡΠΎΠ³Π»Π°ΡΠΈΡ ΠΌΡΠΉΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ² ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌ, Π΄Π»Ρ ΠΊΠΎΡΠΎΡΡΡ ΡΠΎΠ·Π΄Π°Π½Ρ Π΄Π°Π½Π½ΡΠ΅ ΠΎΠ±Π²ΡΠ·ΠΊΠΈ. Π ΡΠ½Π²Π°ΡΠ΅ ΠΡΠΈΡΡΠΎΡ ΠΏΡΠΈΠ½ΡΠΈΠΏΠΈΠ°Π»ΡΠ½ΠΎ ΠΎΡΠΊΠ°Π·Π°Π»ΡΡ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ Π² ΡΠ΄ΡΠΎ Rust-ΠΎΠ±Π²ΡΠ·ΠΊΡ Π½Π°Π΄ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ DMA, ΡΡΠΎ ΠΏΡΠΈΠ²Π΅Π»ΠΎ ΠΊ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΡ, Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠ΄ΡΠΎ ΠΏΠΎΠΊΠΈΠ½ΡΠ»ΠΈ ΠΌΡΠΉΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌ Nouveau ΠΈ ARM/Apple. 24 ΡΠ΅Π²ΡΠ°Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ° Rust for Linux ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠΈΠ»ΠΈ ΠΏΠ°ΡΡ ΡΠΎ ΡΠ»ΠΎΠ΅ΠΌ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΈ Π΄Π»Ρ Π€Π‘ configfs, ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ΠΌ ΠΊΠΎΡΠΎΡΠΎΠΉ Π·Π°Π½ΠΈΠΌΠ°Π»ΡΡ ΠΡΠΈΡΡΠΎΡ Π₯Π΅Π»Π²ΠΈΠ³. ΠΡΠΈΡΡΠΎΡ Π½Π΅ ΠΏΡΠΈΠ½ΡΠ» ΡΡΠ°ΡΡΠΈΠ΅ Π² ΠΎΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΠΈ Π½ΠΎΠ²ΠΎΠΉ Rust-ΠΎΠ±Π²ΡΠ·ΠΊΠΈ ΠΊ ΡΠ²ΠΎΠ΅ΠΉ ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΠ΅, Π° ΡΠ΅ΡΠ΅Π· Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π΄Π½Π΅ΠΉ ΡΠ΄Π°Π»ΠΈΠ» ΡΠ΅Π±Ρ ΠΈΠ· ΡΠΏΠΈΡΠΊΠ° ΠΌΡΠΉΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ² dma-mapping ΠΈ configfs.
ΠΡΠΈΡΡΠΎΡ Π₯Π΅Π»Π²ΠΈΠ³ ΡΡΠΈΡΠ°Π΅Ρ Π½Π΅Π΄ΠΎΠΏΡΡΡΠΈΠΌΡΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΠ·ΡΠΊΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π² ΡΠ°ΠΊΠΈΡ ΡΠ»ΠΎΠΆΠ½ΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ ΠΊΠ°ΠΊ ΡΠ΄ΡΠΎ Linux. ΠΠΎ ΠΌΠ½Π΅Π½ΠΈΡ ΠΡΠΈΡΡΠΎΡΠ°, ΡΠΌΠ΅ΡΠ°Π½Π½ΡΠ΅ ΠΊΠΎΠ΄ΠΎΠ²ΡΠ΅ Π±Π°Π·Ρ ΡΡΠ»ΠΎΠΆΠ½ΡΡΡ ΡΠ°Π±ΠΎΡΡ ΠΌΡΠΉΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ², ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΡΠ°Π²ΡΡ ΠΌΡΠΉΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ² Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ ΠΎΡ ΠΊΠΎΠ΄Π° Π½Π° Π΄ΡΡΠ³ΠΎΠΌ ΡΠ·ΡΠΊΠ΅. Π ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, ΠΏΡΠΈ Π½Π°Π»ΠΈΡΠΈΠΈ ΠΎΠ±Π²ΡΠ·ΠΎΠΊ Π½Π° Rust ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌ, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΡ Π½Π° Π‘ΠΈ, Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΡΠΈΡΡΠ²Π°ΡΡ Π²Π»ΠΈΡΠ½ΠΈΠ΅ ΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π½Π° ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°Π±ΠΎΡΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΠΈ ΠΎΠ±Π²ΡΠ·ΠΎΠΊ. ΠΡΠ±ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΡΡΡΠΊΡΡΡ Π΄Π°Π½Π½ΡΡ ΠΈΠ»ΠΈ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ Π½Π° Π‘ΠΈ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π° ΠΎΠ±Π²ΡΠ·ΠΎΠΊ, ΠΏΠΎΡΡΠΎΠΌΡ Π²Π»ΠΈΡΡΡΠΈΠ΅ Π½Π° ΠΎΠ±Π²ΡΠ·ΠΊΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² Π‘ΠΈ ΠΊΠΎΠ΄Π΅ Π½ΡΠΆΠ½ΠΎ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°ΡΡ ΠΈ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Ρ ΠΊΠΎΠ΄ΠΎΠΌ Π½Π° Rust.
Π ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠ΄ΡΠ° ΡΠΆΠ΅ Π±ΡΠ»ΠΈ ΡΠ°ΠΊΡΡ ΠΎΡΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΡ pull-Π·Π°ΠΏΡΠΎΡΠ° Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΠΌΠΈ Π² ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΠ΅ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΡΡ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π΄Π°Π½Π½ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΠ»ΠΎ ΠΊ ΡΠ±ΠΎΡ ΠΏΡΠΈ ΠΏΠΎΠΏΡΡΠΊΠ΅ ΡΠ±ΠΎΡΠΊΠΈ ΡΠ΄ΡΠ° Ρ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ Rust. Π‘Π±ΠΎΠΉ Π²ΠΎΠ·Π½ΠΈΠΊ ΠΈΠ·-Π·Π° ΡΠ°ΡΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ Ρ ΠΊΠΎΠ΄ΠΎΠΌ Π΄Π»Ρ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ Rust-ΠΎΠ±Π²ΡΠ·ΠΎΠΊ (bindgen) ΠΈ ΠΏΡΠΈΠ²ΡΠ» ΠΊ ΡΠΎΠΌΡ, ΡΡΠΎ ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π°ΡΡΠΈΠ΅ ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΡΡ ΠΏΡΠΈ ΠΏΡΠΎΠ΄Π²ΠΈΠΆΠ΅Π½ΠΈΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΠ³ΠΎ Ρ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ΄Π° Π½Π° Π‘ΠΈ ΠΈ ΡΠ΄ΡΠ° Π² ΡΠ΅Π»ΠΎΠΌ, ΠΎΠΊΠ°Π·Π°Π»ΠΈΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΡ ΠΎΡ ΠΎΠΏΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΡΠΎΡΠΎΠ½Π½Π΅Π³ΠΎ ΠΊΠΎΠ΄Π° Π² ΡΠ΄ΡΠ΅, Π·Π° ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΡΠ²Π΅ΡΠ°ΡΡ Π΄ΡΡΠ³ΠΈΠ΅ Π»ΡΠ΄ΠΈ.
ΠΠΈΠ½ΡΡ Π’ΠΎΡΠ²Π°Π»ΡΠ΄Ρ ΡΡΠΈΡΠ°Π΅Ρ, ΡΡΠΎ ΠΡΠΈΡΡΠΎΡ Π₯Π΅Π»Π²ΠΈΠ³ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ ΠΏΠΎΠ»Π½ΠΎΠΌΠΎΡΠΈΠΉ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΈΡΠΌ Π² ΡΠ΄ΡΠΎ Rust-ΠΎΠ±Π²ΡΠ·ΠΎΠΊ Π΄Π»Ρ ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΡ DMA, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ Π΄Π°Π½Π½ΡΡ
ΠΎΠ±Π²ΡΠ·ΠΎΠΊ Π½Π΅ Π·Π°ΡΡΠ°Π³ΠΈΠ²Π°Π΅Ρ ΠΊΠΎΠ΄ ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΡ DMA Mapping ΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΌ ΠΏΠΎΠ΄ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅, ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ΠΌ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π·Π°Π½ΠΈΠΌΠ°Π΅ΡΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΠΌΡΠΉΠ½ΡΠ΅ΠΉΠ½Π΅Ρ. ΠΠΈΠ½ΡΡ ΡΡΠ°Π²Π½ΠΈΠ» Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΡΠΈΡΡΠΎΡΠ° Ρ ΠΏΠΎΠΏΡΡΠΊΠΎΠΉ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΠΎΠ±Π»Π°ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΡ DMA, ΠΏΡΠΈ ΡΠΎΠΌ, ΡΡΠΎ ΠΌΡΠΉΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ ΠΎΡΠ²Π΅ΡΠ°ΡΡ Π»ΠΈΡΡ Π·Π° ΠΊΠΎΠ΄ ΡΠ²ΠΎΠ΅ΠΉ ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΡ, Π½ΠΎ Π½Π΅ Π·Π° ΡΠΎ, ΠΊΠ°ΠΊ ΠΈ ΠΊΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΡΠ°Π±ΠΎΡΡ ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π² ΠΊΠΎΠ΄Π΅ Π±Π°Π·ΠΎΠ²ΡΡ
ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°ΠΌ Ρ ΡΠ°Π±ΠΎΡΠΎΠΉ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-ΡΠΎ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ°, Π½ΠΎ ΡΡΠΎ Π½Π΅ ΠΏΠΎΠ²ΠΎΠ΄ Π²ΠΌΠ΅ΡΠΈΠ²Π°ΡΡΡΡ Π² ΠΏΡΠΈΡΠΌ Π½ΠΎΠ²ΡΡ
Π΄ΡΠ°ΠΉΠ²Π΅ΡΠΎΠ².
ΠΡΡΠΎΡΠ½ΠΈΠΊ: opennet.ru