Framework yekunyora madhiraivha akachengeteka eLinux kernel muRust

Josh Triplett, anoshanda kuIntel uye ari mukomiti inoona nezvekuvandudzwa kweCrates.io, achitaura paOpen Source Technology Summit. kuunzwa boka rinoshanda rine chinangwa chekuunza mutauro weRust kuti uenzane nemutauro weC mumunda wezvirongwa zvehurongwa.

Muboka rinoshanda riri mukati mekugadzirwa, Vagadziri veRust, pamwe chete neanjiniya kubva kuIntel, vanogadzirira zvirevo zvinotsanangura mashandiro anofanirwa kuitwa muRust yehurongwa hwehurongwa. System programming inowanzoda yakaderera-level manipulation, sekuita yakasarudzika processor mirairo uye kuwana ruzivo rwakadzama nezve mamiriro e processor. Pazvinhu zvakafanana zvatove kugadzirwa kuRust, tsigiro yezvimiro zvisina kudomwa mazita, mibatanidzwa, mitauro yegungano (iyo "asm!" macro) uye iyo BFLOAT16 inoyangarara point nhamba fomati inocherechedzwa.

Josh anotenda kuti ramangwana rehurongwa hwehurongwa ndereRust, uye mutauro weC muzvinhu zvemazuva ano uri kutora nzvimbo iyo mumakore apfuura yakagarwa neGungano. Ngura
kwete chete kusunungura vagadziri kubva kumatambudziko anowanikwa mumutauro weC anomuka nekuda kwekushanda kwepamusoro-soro nekuyeuka, asi inopawo mukana wekuishandisa mukugadzirisa zvirongwa zvemazuva ano zveparadigms.

Panguva hurukuro zvesimba
Josh akauya nepfungwa yekuwedzera kugona kukudziridza vatyairi muLinux kernel mumutauro weRust, izvo zvaizoita kuti zvikwanise kugadzira vatyairi vakachengeteka uye vari nani nekuedza kushoma, pasina matambudziko akadai sekuwana ndangariro mushure mekusunungura, pasina. pointer dereferences uye buffer overrun.

Greg Kroah-Hartman, uyo ane basa rekuchengetedza bazi rakagadzikana reLinux kernel, akataura kugadzirira kwake kuwedzera hurongwa hwekuvandudza vatyairi muRust mutauro kune kernel kana iine mabhenefiti chaiwo pamusoro peC, semuenzaniso, ichapa yakachengeteka. zvinosungirwa pamusoro peKernel API. Pamusoro pezvo, Greg anotarisa chimiro ichi chete sechisarudzo, chisingashande nekukasira, kuti usasanganise Rust sechinhu chinotsamira pane kernel.

Zvakazoitika kuti zvikwata zvakawanda zvave kutoshanda munzira iyi. Semuenzaniso, vanogadzira kubva kukambani "Fish in a Barrel" yakagadzirirwa chishandiso chekunyora anotakurika mamodule eLinux kernel muRust mutauro, uchishandisa seti yeabstract layers pamusoro pemainterfaces uye kernel zvimiro kuti uwedzere kuchengetedzeka. Matanho anogadzirwa otomatiki zvichibva pane iripo kernel musoro mafaera uchishandisa utility bindgen. Clang inoshandiswa kugadzira zvidimbu. Kuwedzera kune interlayers, iyo yakaunganidzwa modules inoshandisa iyo staticlib package.

Kufanana inovandudza Imwe purojekiti yakanangana nekugadzira madhiraivha eakamisikidzwa masisitimu uye maIoT zvishandiso, ayo anoshandisawo bindgen kugadzira maseru akavakirwa pamafaira emusoro wekernel. Iyo dhizaini inobvumidza iwe kuvandudza kuchengetedza kwemutyairi pasina kuita shanduko kune kernel - pachinzvimbo chekugadzira mamwe mazinga ekuzviparadzanisa nevamwe kune vatyairi mu kernel, inokurudzirwa kuvhara matambudziko padanho rekubatanidza, uchishandisa iyo yakachengeteka Rust mutauro. Zvinofungidzirwa kuti nzira yakadai inogona kunge iri kudiwa nevagadziri vemidziyo vanogadzira vatyairi vevaridzi nekukasira pasina kuita ongororo chaiyo.

Hazvisi zvese zvakatarisirwa kuita zvisati zvaitwa, asi chimiro chatove chakakodzera kushanda uye chakashandiswa kunyora anoshanda mutyairi weLAN9512 USB Ethernet controller akapihwa mubhodhi reRaspberry Pi 3. Iyo iripo smsc95xx mutyairi, yakanyorwa ne. C mutauro. Izvo zvinocherechedzwa kuti saizi yemodule uye pamusoro kubva kunguva yekumhanyisa zvikamu pakugadzira mutyairi muRust hazvina kukosha, izvo zvinobvumira iyo sisitimu kuti ishandiswe kune zvishandiso zvine mashoma zviwanikwa.

Source: opennet.ru

Voeg