Operační systém MidnightBSD, fork FreeBSD optimalizovaný pro desktop s prostředím Xfce, byl vydán ve verzi 3.0. Přehled novinek v poznámkách k vydání.
Na GOG.com běží Spring Sale. Při té příležitosti lze získat zdarma počítačovou hru Neurodeck: Psychological Deckbuilder (ProtonDB).
Alex Ellis upozornil 15. března, že firma Docker se chystala zrušit bezplatný hosting open-source projektů na Docker Hubu. Po vlně odporu se představitelé firmy omluvili a posléze byl původní záměr odvolán.
Ve věku 94 let zemřel Gordon Moore, mj. spoluzakladatel společnosti Intel a autor Moorova zákona.
Mercurial (Wikipedie), software pro SCM (Source Code Management), byl vydán ve verzi 6.4. Přehled novinek v poznámkách k vydání. Ve dnech 5. až 7. dubna proběhne konference Mercurial Paris.
Byly rozdány Ceny Velkého bratra (Big Brother Awards) za rok 2022 pro největší slídily pořádané nevládní organizací Iuridicum Remedium. Dlouhodobý slídil: Microsoft. Firemní slídil: Seznam. Úřední slídil: Nejvyšší správní soud. Výrok Velkého bratra: Marian Jurečka. Pozitivní cena: NoLog.
Byla představena online vzdělávací platforma Ada Computer Science pro učitele, studenty a kohokoli, kdo se zajímá o informatiku. Stojí za ní Raspberry Pi Foundation a Univerzita v Cambridgi.
GitHub má nový RSA SSH klíč. Předchozí soukromý klíč byl krátce vystaven na GitHubu.
Společnost Framework Computer představila (YouTube) nové modulární notebooky: Laptop 13 s Intel Core nebo AMD Ryzen a Laptop 16 (YouTube).
Bylo vydáno Ubuntu 20.04.6 LTS, tj. šesté opravné vydání Ubuntu 20.04 LTS s kódovým názvem Focal Fossa. Přehled novinek v poznámkách k vydání a v přehledu změn.
rotation_thread = kthread_create(rotation_thread_function, cam, "rotation thread"); cam->sensor->private_data = (void *)rotation_thread; wake_up_process(rotation_thread);samotná vláknová funkce:
int rotation_thread_function(void *data){ struct m5602_camera *cam = (struct m5602_camera *)data; // deklarace pár struktur a lokálních proměnných set_current_state(TASK_INTERRUPTIBLE); while(!schedule_timeout(500)){ // vemu si mutex pro přístup k zařízení if (mutex_lock_interruptible(&cam->fileop_mutex)) continue; // tady se vykonává práce s hardwarem // uvolním mutex zařízení mutex_unlock(&cam->fileop_mutex); set_current_state(TASK_INTERRUPTIBLE); } info("End of rotation thread!"); return 0; }když má být vlákno ukončeno (při unloadu modulu):
if (cam->sensor->private_data){ kthread_stop((struct task_struct *)cam->sensor->private_data); }Pokud to mám takto, vlákno běží krásně a v pravidelných intervalech se probouzí. Problém nastane, když chci modul unloadnout, například při hibernaci... Čas od času mi tento kód způsobí oops, který sebou s velkým rachotem veme usbcore a další moduly, takže jádro je nutné rebootnout :( Netuším kde přesně mám chybu. Odhaduji že asi ve špatném použití schdule_timeoout...? Nebo tam někdo vidíte kritickou část, kterou mám ošetřenu špatně? S vlákny v uživatelském prostoru nemám problém, ale v jádře něco takového píšu prvně... Navíc se to mnohem hůř ladí, než v user módu... Za jakékoliv nápady předem děkuji.
... stop = 0; while((!schedule_timeout(100)) || stop ){ if (mutex_lock_interruptible(&sd->gspca_dev.usb_lock)){ stop = 1; continue; } ...Ještě pár dní budu svoji kameru tímto modulem trápit a pokud to ani jednou nespadne, půjde patch do světa... Každopádně děkuji Lukynovi za čas :)
Tiskni
Sdílej: