Byla vydána nová major verze 5.0.0 svobodného multiplatformního nástroje BleachBit (GitHub, Wikipedie) určeného především k efektivnímu čištění disku od nepotřebných souborů.
Na čem pracují vývojáři webového prohlížeče Ladybird (GitHub)? Byl publikován přehled vývoje za duben (YouTube).
Provozovatel čínské sociální sítě TikTok dostal v Evropské unii pokutu 530 milionů eur (13,2 miliardy Kč) za nedostatky při ochraně osobních údajů. Ve svém oznámení to dnes uvedla irská Komise pro ochranu údajů (DPC), která jedná jménem EU. Zároveň TikToku nařídila, že pokud správu dat neuvede do šesti měsíců do souladu s požadavky, musí přestat posílat data o unijních uživatelích do Číny. TikTok uvedl, že se proti rozhodnutí odvolá.
Společnost JetBrains uvolnila Mellum, tj. svůj velký jazykový model (LLM) pro vývojáře, jako open source. Mellum podporuje programovací jazyky Java, Kotlin, Python, Go, PHP, C, C++, C#, JavaScript, TypeScript, CSS, HTML, Rust a Ruby.
Vývojáři Kali Linuxu upozorňují na nový klíč pro podepisování balíčků. K původnímu klíči ztratili přístup.
V březnu loňského roku přestal být Redis svobodný. Společnost Redis Labs jej přelicencovala z licence BSD na nesvobodné licence Redis Source Available License (RSALv2) a Server Side Public License (SSPLv1). Hned o pár dní později vznikly svobodné forky Redisu s názvy Valkey a Redict. Dnes bylo oznámeno, že Redis je opět svobodný. S nejnovější verzí 8 je k dispozici také pod licencí AGPLv3.
Oficiální ceny Raspberry Pi Compute Modulů 4 klesly o 5 dolarů (4 GB varianty), respektive o 10 dolarů (8 GB varianty).
Byla vydána beta verze openSUSE Leap 16. Ve výchozím nastavení s novým instalátorem Agama.
Devadesátková hra Brány Skeldalu prošla portací a je dostupná na platformě Steam. Vyšel i parádní blog autora o portaci na moderní systémy a platformy včetně Linuxu.
Lidi dělají divné věci. Například spouští Linux v Excelu. Využít je emulátor RISC-V mini-rv32ima sestavený jako knihovna DLL, která je volaná z makra VBA (Visual Basic for Applications).
Aktuální předverze řady 2.6 je (ke 4. 4. 2007) 2.6.21-rc5, vydaná 25. března. Obsahuje dost oprav, včetně sady patchů týkajících se regresí způsobených změnami časovače. Linus to komentoval: Ty změny časovače byly nakonec daleko nepříjemnější, než bychom si bývali přáli. Velký dík patří Thomasu Gleixnerovi, který se zasloužil o to, že se seznam regresí neustále zmenšuje. Vizte dlouhý changelog, kde najdete všechny podrobnosti.
Aktuální verze -mm stromu je 2.6.21-rc5-mm3, vydaná 30 března (vizte níže).
Aktuální stabilní jádro je 2.6.20.4, vydané 23. března.
Starší jádra: 2.6.16.46 bylo vydáno 31. března s několika opravami, z nichž některé se týkaly USB..
2.4.34.2 bylo vydáno 24. března; obsahuje jen dvě opravy. Na druhou stranu 2.4.35-pre2 obsahuje oprav poměrně dost.
Mám za to, že klíčem k porozumění jadernému kódu je porozumění datovým strukturám a vztahům mezi nimi. Jakmile chápete tohle, kód už je jednoduchý. Proto je z hlediska správy výhodné věnovat čas dokumentaci struktur, jejich polí, vztahu s dalšími strukturami a všem požadavkům na zamykání.
<přemýšlí, k čemu je kruci "ticks">
Jádro 2.6.21 se blíží, takže je vhodná chvíle k rekapitulaci změn v interním API, které byly během tohoto vývojového cyklu provedeny.
Sysfs teď podporuje koncept "stínových adresářů" - více verzí jednoho adresáře se stejným názvem. Tato funkce bude využívána kontejnerovými aplikacemi; umožní, aby měl každý jmenný prostor zdroje (například síťová rozhraní) se stejnými názvy. Byly proto přidány dvě nové funkce:
int sysfs_make_shadowed_dir(struct kobject *kobj, void *(*follow_link)(struct dentry *, struct nameidata *)); struct dentry *sysfs_create_shadow_dir(struct kobject *kobj);
sysfs_make_shadowed_dir() vezme existující adresář jako kobject a "zastínuje" ho - bude možné, aby měl více instancí. Metoda follow_link() musí umět vybrat správnou verzi pro jakoukoliv situaci. Volání sysfs_create_shadow_dir() vytvoří novou instanci zastínovaného adresáře.
int device_schedule_callback(struct device *dev, void (*func)(struct device *))
Tato funkce zajistí volání func() někdy v budoucnu během provádění procesu. Je určena k tomu, aby měly atributy zařízení možnost se odregistrovat, ale lze si představit i jiná využití.
Příběh sysfs (a ovladačového modelu obecně) je dlouhý a komplikovaný. Vytvoření jediné datové struktury, která by představovala hardwarovou a softwarovou konfiguraci systému, bylo potřeba už dávno; mnoho věcí (například správa napájení) bez toho nelze dělat. Sysfs přidává možnost prezentace této struktury v uživatelském prostředí. V mnoha ohledech je to velmi užitečná struktura, ale přinesla i svůj díl problémů. Zpřístupnění jaderných datových struktur uživatelskému prostředí znamená, že je pak obtížné je měnit, aniž by se poškodilo uživatelské API; také to každou z nich vystavuje problémům s životními cykly, které mají svůj původ v uživatelském prostředí.
Interně je základním stavebním kamenem modelu zařízení kobject. Objekty reprezentované v sysfs - například zařízení - obsahují kobject, který je - mimo jiné - hlavním bodem pro sysfs přístup. Kobject také obsahuje počet referencí na nadřazený objekt, který se používá pro správu životního cyklu. Daný kobject a jeho nadřazená datová struktura mohou být vymazány, klesne-li počet referencí na nulu - ne dříve. Tohle počítání referencí sice funguje, ale může to vést k překvapivým následkům.
Jako příklad vezměme USB zařízení - třeba myš. Když je toto zařízení připojeno k systému, vytvoří se odpovídající datová struktura (obsahující kobject), která je pak zaregistrována v jádře. Při odpojení myši je tato struktura uvolněna. Ale představte si, co se stane, pokud uživatelský proces otevře sysfs soubor přiřazený k zařízení myši, zatímco je připojená, a ponechá tento soubor otevřený ještě dlouho po fyzickém odstranění zařízení. Jádro musí být schopné zpracovávat operace s otevřeným sysfs souborem, i když si ovladač myslí, že zařízení, které reprezentuje, už je dávno pryč. Počítání referencí v kobjectu zařídí, že to funguje - většinou. Pravděpodobnost zmatků je však vysoká, zvláště u ovladačů, při jejichž psaní nebyl tento způsob správy životního cyklu brán v potaz.
Koncem března poslal Tejun Heo email, ve kterém rozebíral otázky životního cyklu v ovladačovém modelu - mluví se tam o tomto a dalších problémech. Argumentuje tím, že nutnost správy objektů s různými životními cykly ztěžuje programování s tímto modelem zařízení - to už vývojáři vědí dost dlouho. I správci modelu zařízení přiznávají, že je snadné v tom udělat chybu.
Později pak Tejun představil sadu patchů, která se snaží situaci zjednodušit. Ty patche provádějí velký úklid a jednu malou změnu API - hlavní změna je však následující: umožňují čisté oddělení životního cyklu sysfs objektů a datových struktur, které reprezentují. Díky tomu už se kód mimo sysfs nemusí starat o to, že datové struktury mohou žít kratší dobu než sysfs objekty, které tyto struktury reprezentují.
Sysfs adresář (který reprezentuje kobject) je v rámci jádra reprezentován prostřednictvím struct sysfs_dirent. V současných jádrech je to tak, že pokud existuje struktura sysfs_dirent, očekává se, že exituje i její kobject. Není možné, aby kobject zmizel, dokud struktura sysfs_dirent existuje; to znamená, že struktura obsahující kobject musí existovat, dokud jsou na sysfs soubory nějaké reference. Tejunův patch tento požadavek odstraňuje.
V upraveném sysfs obsahuje každá sysfs_dirent nový čítač nazvaný s_active. Ten sleduje počet aktivních referencí na objekt; jde o reference, které se v daný moment týkají příslušného kobject. Uživatelský proces, který drží otevřený sysfs soubor, hodnotu s_active nezvýší, dokud se souborem neprovede nějakou operaci - a reference zůstane pouze do dokončení operace. A protože je většina sysfs operací docela rychlá, nebudou aktivní reference drženy moc dlouho.
Aktivní počet je udržován pomocí rwsem - reader/writer semaphore [semafor čtení/zapisování]. Aktivní reference jsou sledovány jako readery, takže jich může být libovolné množství. Kód pro získání aktivní reference volá down_read_trylock(), což znamená, že vezme "zámek" (referenci), pokud je k dispozici, ale nezablokuje se, pokud operace selže. Všechny relevantní sysfs operace byly změněny, aby získávaly aktivní reference předtím, než vytvoří referenci na kobject - a ujistily se, že byla reference přidělena. Pokud pokus o získání aktivní reference selže, sysfs ukončí nadřazenou operaci s kódem -ENODEV.
Jediné možné selhání down_read_trylock() nastane, pokud nějaké jiné vlákno drží writer zámek na semafor - nebo právě čeká, až vypadnou readery, aby ten zámek mohlo získat. Pokud se stane něco, kvůli čemu zmizí kobject, tak úklidový kód zavolá down_write() na s_active rwsem v položce sysfs_dirent, čímž zapne writer zámek. Veškeré budoucí pokusy o získání aktivní reference tím pádem selžou; zároveň bude nastaven blok až do uvolnění všech aktuálních aktivních referencí.
Výsledkem toho všeho je, že jakmile se pro daný kobject dokončí poslední volání kobject_put(), nebudou už ze strany sysfs žádné další pokusy o přístup k tomuto kobject. Kobject (a jeho nadřazená datová struktura) tak může být bezpečně vymazán a ovladač se o něj nemusí starat.
Bonusový důsledek je to, že už není nutné zvyšovat počet referencí na modul při přístupu k sysfs atributům. Odstraňovaný ovladač všechna svá zařízení uvolní, takže sysfs už tak jako tak nebude provádět žádná volání modulu ovladače; počet referencí na modul je proto zbytečný. Tejunův patch také ze struktur atributů odstraňuje pole owner - změna, která se projeví v dost velkém množství ovladačů.
Komentáře se zaměřovaly na způsob implementace, nikoliv na výsledný cíl; změny mohly být začleněny už v 2.6.22. Vypadá to, že Tejun má v rukávu ještě více vylepšení, ale i bez jakýchkoliv dalších změn je díky těmto patchům práce se sysfs snazší a bezpečnější.
Nástroje: Tisk bez diskuse
Tiskni
Sdílej:
Robert a Luboš opravdu nezávisle na soběAle ne...
nejsem ještě úplný blázen, když jsem u prvního odstavce měl silný pocit, že už jsem to někde četl.Původně jsem to začal překládat znovu, ale pak mi také došlo, že už jsem to někde viděl, takže jsem tam dal verzi z minulého týdne. Uvažoval jsem o tom, jestli není pitomost to opakovat, ale pak jsem si řekl, že pokud to bude někdo číst s odstupem času, bude lepší, když tam najde to, co bylo v době vzniku originálu aktuální.