Ufff, tak jsem jsem udělal tu chybu a ten diff si rozkliknul.
Tohle jako vážně je presentováno jako úspěch v Rustu? A pak se Rustaři divěj, že je nikdo nebere vážně. Viz též https://www.root.cz/clanky/kernel-panic-s-qr-v-linuxu-6-12-neshody-rust-vyvojaru-se-spravci-casti-jadra/
Edit: A co přidat nějaký ten volání hello_kernel() jako volání printk() coby monáda v Haskelu? Ten první řádek v dmesg "Linux version blabla" by se na to hezky hodil...
2. 9. 2024, 21:13 editováno autorem komentáře
Napriklad mirou semanticnosti.
To je vec, ktera ma rozsah od nedokumentovaneho blobu, po kod strukturovany tak, aby sla nastavit v budoucnu vec, kterou puvodni autor nemenil. Takze namisto zapisu magickych inline hodnot do random registru, udelate definici a pojmenovani registru i bitu, a pak pripadne funkce (interni api) ktere nastavi slozitejsi veci.
Vzhledem k tomu, že část tohoto je asi produktem reverse engineeringu, tak se semantické definice píšou hůř.
Soudím dle:
// The following writes use standardized registers (3.38 through
// 3.41 5/10/25GBASE-R PCS test pattern seed B) for something else.
// We don't know what.
V C by to vypadalo podobně, ale na víc řádků.
Nicméně třeba error handling těch write a probe je tady mnohem kratší, než by byl v čistém C. Každý jeden otazník by byl if a goto error nebo tak něco.
Ano, tahle cast neni v datasheetu, ale obvod to je 10G only, tak nevim proc to komentuje s 5 a 25G. Nejspis by to fungovalo i bez toho.
A datasheet ukazuje jak se PHY ma nahodit - uvedeny kod je total spatne. Pusti mcu z resetu a pak mu pod rukama prepise FW v sram.. meh.
DS jasne indikuje: natlac tam FW1, FW2, pak pust mcu z resetu:
https://imgur.com/R8fIaCJ
Kod, ktery autor driveru prezentuje je proste hnuj.
Tak to je možná právě ono. Rust preprocesor nemá, a to je dobře. Ten má buď konstanty, nebo plnohodnotná makra.
Vzhledem k tomu, jak neprošlapaná je to cesta použití Rustu v jádře, se nedivím, že používají spíše konzervativnější konstrukce. Věřím, že v budoucnu se usadí různý osvědčené postupy. Ale postupně.
Ostatně jaký lepší důkaz, že je to dobrá strategie, než skutečnost, jak je tu poukazováno na preprocesor Cčka.