
Kubatanidzwa kweRust muLinux kwave nedanho repamusoro rekugamuchirwa nenharaunda uye vanogadzira
Nhasi, mupiro weMicrosoft kuLinux Kernel haisi joke, Uye mushure mekuona Linux semuvengi anofa kwemakumi emakore uye iyo yakatamba hondo yakasviba, Microsoft yakava mumwe wevanonyanya kupa.
Uye kunyange vakawanda vangasafarira mafambiro acho yeMicrosoft vachifarira Linux uye yakavhurika sosi, havagone kuramba kuti chikamu chikuru chezvipo zvavo zvave zvichinakidza uye kune imwe nhanho inobatsira kune yakavhurika sosi mapurojekiti.
Zvinofanira kucherechedzwa kuti pa igsezvinoita vamwe vateresi yeLinux, taura Google, Intel, IBM, Oracle, pakati pevamwe, basa reMicrosoft paLinux kunyanya yakanangana nezvigadzirwa zvayo uye sezvandinodzokorora, sezvinoita mamwe mashefu uye hazvina kushata, nekuti pakupedzisira Linux Kernel ndiyo mhedzisiro yezvose izvo uye zvechokwadi kutariswa kwemukuru, Linus Torvalds, nekuti kana iwe usingade chimwe chinhu kana. inotenda kuti haina kufanira, haina kuunzwa muLinux uye ndizvozvo.
Chikonzero chekutaura izvi ndechekuti munguva pfupi yapfuura Wedson Almeida, injiniya weMicrosoftt inobatanidzwa mukugadzirwa kweRust yeLinux, yakazivisa kuunzwa kwezvigamba zvakakosha zvinovandudza zvakanyanya kutanga kweRust modules mukernel.
Isu parizvino tine bhokisi forogo ine shanduko ku `Vec`; dzimwe shanduko dzakabatanidzwa (kuchirongwa cheRust). Iyi nhevedzano inobvisa forking uye inofumura mashandiro ese sekuwedzera maficha. Pamusoro pezvo, inosumawo mureza wekugoverwa maparamendi emabasa ese anogona kukonzera mabasa.
Una Imwe yekuvandudzwa kukuru ndeyekubviswa kweforogo alloc
uye kushandiswa kwechinhu chisina kugadzikana allocator_api
, chii inorerutsa kodhi uye inoderedza kureba kwekugadzirisa mutoro. Pamusoro pezvo, mireza yekugovera, senge GFP_KERNEL neGFP_ATOMIC, yakaunzwa kuti ivandudze manejimendi endangariro uye kukwidziridza mashandiro emodule.
Shanduko muv2:
- Yakagadziridzwa tsananguro ye `alloc` bhokisi.
- Yakachinja mazita evecext uye boxext modules kuita vec_ext uye box_ext.
-Yakawedzera bypass dhairekitori ku "AllocError".
- Yakagadziridzwa chengetedzo yekutaura mu `BoxExt:: itsva`.
- Yakagadziridzwa `VecExt :: push` uye `VecExt :: wedzera_kubva_kubva_chidimbu` kushandisa
`spare_capacity_mut`
- Wedzera rairo yekusaunganidza `destructure` uye `kuvakazve` panguva `yebvunzo` kana
`testlib` inogadziriswa. Zvikasadaro tine yambiro nekuti `push` uye
`wedzera_kubva_pachidimbu` usazvishandise zvakare.
- Yakagadziridzwa indentation mu `Arc:: itsva_unit`
- Yakafambiswa kubviswa kwekukandwa `TryReserveError` kuenda ku `Kanganiso` muchigamba 7, uko
Kushandisa `TryReserveError` kunobviswa chaizvo.
Magadzirirwo aya natsa API yemepu yeRust kernel kodhi uye vanounza pfungwa itsva: kutanga mamodule zvakananga munzvimbo yavanoda ndangariro. Izvi zvinobvisa kudiwa kwekusakosha kwekugoverwa kwendangariro uye inobvumira mamodule kuti akwanise kubata akaomarara data zvimiro semakiyi.
Filho akataura izvozvo iyi budiriro inobvumira kuve nemamodule ane nyika ine zvinhu zvinofanirwa kutangwa panzvimbo uye zvakare kuti inobvumira maregistries (semuenzaniso, maregistries evatyairi) kuti ashandiswe munzvimbo uye aitwe akafanana nevamwe vavo muC, uko pasina mappings matsva anodiwa.
Pakutanga, module yekutanga yaisanganisira kugovera ndangariro yemuenzaniso iyo yaizoendeswa kunzvimbo yayo yakatarwa. Zvisinei, Nezvigamba zvitsva, ma modules anogona kutangwa zvakananga munzvimbo yakanangwa yekurangarira, kubvisa kugoverwa kusingakoshi uye kubvumira kutonga kwakanyatsoita kwezvakaoma data zvimiro, senge makiyi. Izvi zvine mhedzisiro yakakosha pakugadzirisa kushandiswa kwendangariro uye kugona kwese kweRust module muLinux kernel.
Pamusoro pekuvandudza kugona uye manejimendi ekurangarira, danho iri rinowedzera kuenderana neRust-powered modules neC yavo yakaenzana, kudzikisa gaka uye kugadzira nzira yeRust budiriro.
Kana uri kuda kuziva zvakawanda nezvazvo, unogona kutarisa ruzivo mu chinotevera chinongedzo.