Thib tsib tsab ntawm thaj ua rau thaj rau Linux ntsiav nrog kev txhawb nqa rau cov lus Rust

Miguel Ojeda, tus sau ntawm Rust-for-Linux project, tau thov ib qho thib tsib ntawm cov khoom siv rau kev tsim cov cuab yeej tsav tsheb hauv cov lus Rust rau kev txiav txim siab los ntawm Linux kernel developers. Kev txhawb nqa xeb yog suav tias yog kev sim, tab sis twb tau suav nrog hauv linux-tom ntej ceg thiab tau tsim txaus los pib ua haujlwm ntawm kev tsim cov txheej txheem abstraction hla kernel subsystems, nrog rau kev sau ntawv tsav tsheb thiab cov qauv. Txoj kev loj hlob yog nyiaj txiag los ntawm Google thiab ISRG (Internet Security Research Group), uas yog tus tsim ntawm Let's Encrypt project thiab txhawb HTTPS thiab kev tsim cov thev naus laus zis los txhim kho kev ruaj ntseg ntawm Is Taws Nem.

Nco qab tias cov kev hloov pauv tau ua rau nws tuaj yeem siv Rust ua hom lus thib ob rau kev tsim cov tsav tsheb thiab cov kernel modules. Kev txhawb nqa xeb yog nthuav tawm raws li qhov kev xaiv uas tsis tau qhib los ntawm lub neej ntawd thiab tsis ua rau Rust suav nrog raws li qhov yuav tsum tau muaj kev vam khom rau cov kernel. Siv Rust rau kev txhim kho tus neeg tsav tsheb yuav tso cai rau koj los tsim kom muaj kev nyab xeeb thiab zoo dua tsav tsheb nrog kev siv zog tsawg, tsis muaj teeb meem xws li kev nkag mus rau lub cim xeeb tom qab tso tawm, tsis muaj qhov taw qhia tsis zoo, thiab tsis muaj kev cuam tshuam.

Kev tuav pov hwm kev nco yog muab rau hauv Rust ntawm lub sijhawm los ntawm kev siv tshuaj xyuas, ua raws li cov tswv cuab ntawm cov khoom thiab lub neej ntawm cov khoom (scope), nrog rau kev ntsuas qhov tseeb ntawm kev nkag mus rau lub cim xeeb thaum lub sijhawm ua tiav cov lej. Rust kuj tseem muab kev tiv thaiv tus naj npawb overflows, yuav tsum tau pib pib ntawm qhov sib txawv ntawm qhov tseem ceeb ua ntej siv, tuav cov kev ua yuam kev zoo dua hauv cov tsev qiv ntawv tus qauv, siv lub tswv yim ntawm cov ntaub ntawv tsis hloov pauv thiab cov kev hloov pauv los ntawm lub neej ntawd, muaj kev ntaus ntawv zoo li qub kom txo qis cov kev ua yuam kev.

Tus tshiab version ntawm thaj ua rau thaj txuas ntxiv tshem tawm cov lus tau ua thaum lub sijhawm sib tham ntawm thawj, thib ob, thib peb thiab thib plaub ntawm thaj ua rau thaj. Hauv qhov tshiab version:

  • Kev ntsuam xyuas cov khoom siv rau kev txhawb nqa Rust tau ntxiv rau kev sib koom ua ke txuas ntxiv raws li Intel-txhawb nqa 0DAY / LKP bot thiab kev tshaj tawm cov ntawv tshaj tawm tau pib. Peb tab tom npaj los muab kev txhawb nqa Rust rau hauv KernelCI automated test system. Kev ntsuam xyuas raws li GitHub CI tau pauv mus rau kev siv cov thawv.
  • Rust kernel modules raug tso tawm los ntawm qhov xav tau los txhais cov cwj pwm crate "#![no_std]" thiab "#![feature(…)]".
  • Ntxiv kev txhawb nqa rau ib lub hom phiaj sib dhos (.o, .s, .ll thiab .i).
  • Cov txheej txheem kev cai lij choj txhais cov cai rau kev sib cais cov lus (β€œ//”) thiab cov ntaub ntawv code (β€œ///”).
  • Cov ntawv is_rust_module.sh tau rov ua haujlwm dua.
  • Ntxiv kev txhawb nqa rau static (lub ntiaj teb sib koom sib txawv) synchronization primitives raws li "CONFIG_CONSTRUCTORS" kev siv.
  • Kev tswj hwm lub xauv yog yooj yim: Tus Saib Xyuas thiab GuardMut tau sib xyaw ua ke thiab ib hom parameterized.
  • Nws muaj peev xwm los txhais cov kev txwv ntxiv thaum sau npe cov khoom siv.
  • Ntxiv qhov "RwSemaphore" abstraction, uas ua raws li lub wrapper hla rw_semaphore C qauv.
  • Txhawm rau siv mmap, mm module tshiab thiab VMA abstraction tau raug ntxiv (ib daim ntawv qhwv hla tus qauv vm_area_struct).
  • Tus tsav tsheb GPIO PL061 tau hloov mus siv "dev_*!" macro.
  • Kev ntxuav tag nrho ntawm cov cai tau ua tiav.

Tau qhov twg los: opennet.ru

Ntxiv ib saib