Portál AbcLinuxu, 12. května 2025 22:16
Stav OSS (Open Sound System). Nový a menší nástroj /sbin/hotplug. Dokumentování ioctl. Správcovství osiřelého kódu. Diskuze o rozšířeních kompilátoru. Hardwarové problémy kernel.org.
Do konference přišlo celkem 2099 emailů, nejvíce jich poslali Adrian Bunk, Andrew Morton a Greg KH.
17. lis - 18. lis
John W. Linville poslal opravu pro OSS, kterou nestoudně ukradl z ALSA. Andrew Morton se zeptal, proč raději nepoužívá ALSA místo OSS, a Jeff Garzik odpověděl: Dokud OSS ovladače skutečně neodstraníme, bylo by hloupé je nechávat nefunkční. Jan Engelhardt reagoval: Stejně tako hloupé je opravovat něco, co stejně odstraníme. Alan Cox připomněl, že dost lidí OSS pořád používá, a Jeff připojil: Dokud není pryč, dali by současní uživatelé přednost funkčnímu před nefunkčním. Jan napsal, že by bylo lepší to ponechat nefunkční, aby to lidi přimělo přejít na ALSA, ale Jeff řekl: i810 v ALSA pořád tuhne... Lee Revell k tomu poznamenal: Opraveno v úterý v ALSA CVS. Tahle oprava by měla jít do 2.6.10.
18. lis - 19. lis
Greg KH napsal:
Za posledních pár let si dost lidí stěžovalo, že /sbin/hotplug je shellový skript. Legrační je, že si stěžují lidi s velkými stroji a velikým počtem zařízení, ne ti, kteří používají embedded zařízení s omezenými zdroji (ironické, co).
V příloze najdete nový /sbin/hotplug napsaný v C. Kompilace s klibc dopadne takto:
$ size hotplug text data bss dec hex filename 4149 28 20 4197 1065 hotplug $ ls -l hotplug -rwxr-xr-x 1 greg users 4636 Nov 18 15:08 hotplug
Což je na mých počítačích méně než /bin/true (A /bin/true je linkováno dynamicky, tohle je statická binárka. I linkované dynamicky by to bylo menší než /bin/true. GNU programy, co na to říct...)
Všechno to budu postupně dávat dohromady do balíku "hotplug-ng" - jak budu pomalu nahrazovat existující hotplug skripty novými, které budou založené na tom, co jsme se dozvěděli za poslední 4 roky, a zároveň bude vypouštěna podpora jádra 2.4 a starších kernelů.
Jo, vím, že je potřeba opravit chybku v tom, že když neexistuje /dev/null, měli bychom to sami vytvořit a pak pokračovat dál. To je další na seznamu.
Eugene Surovegin poznamenal, že si stěžovali uživatelé velkých strojů a ne embedded zařízení pravděpodobně proto, že v embeddech zařízeních se hotplug asi vůbec nepoužívá :). Pracoval jsem na tuctu různých PPC a MIPS strojích, ale nikdy jsem tuto funkci nepotřeboval. Robert Schwebel nesouhlasil: PTXdist má už nějakou chvíli podporu hotplug. A Chris Larson také řekl: Zajímá mě hlavně ARM a tahle funkce mi přijde velmi užitečná. Vím o dost lidech, kteří používají "diethotplug" od Erika Andersena (už dlouho na to nikdo nesáhl). Těším se na další vylepšení hotplug. Greg odpověděl:
Ano, diethotplug je založen na mém starším balíku, který se nazýval, překvapení, diethotplug - najdete jej zde:
http://www.kernel.org/pub/linux/utils/kernel/hotplug/18. lis - 19. lis
Edward Falk napsal:
Ahoj vespolek; dovolte mi se představit: jsem ten člověk, který se stará o IDE v Google.
Připravuji se na zdokumentování IDE ioctl. Nejspíše Documentation/hdio.txt nebo něco podobného. Než s tím začnu, dělá to už někdo?
Jim Nelson napsal, že neví o nikom, kdo by ioctl dokumentoval:
Když jsem si prošel věci, které už v dokumentaci jsou, pohrával jsem si s myšlenkou, že bych zkusil ioctl zdokumentovat, ale došlo mi, že už takhle toho mám na práci dost.
Nejspíše bych udělal podadresář - tj. Documentation/ioctl/hdio.txt - aby se to odlišilo od ostatních dokumentů a také aby se správcům usnadnilo přidávání vlastních věcí ;). Jestli se nemýlím, tak v balíku jádra nikde žádná dokumentace k ioctl není.
19. lis - 20. lis
Adrian Bunk napsal: Nejsem si jist, jestli má smysl uvádět předchozí správce opuštěného kódu, ale obsahují-li takové záznamy neplatné mailové adresy, je podle na čase je prostě odstranit. Poslal patch k odstranění Micheala H. Warfielda coby správce opuštěného ovladače karty Computone Intelliport Multiport. Andrew Morton řekl, že uvedená adresa je i nadále platná. Adrian odpověděl, že ta mailová konference zjevně zanikla. Jim Nelson napsal:
Kdyby měl někdo chuť se toho ovladače ujmout, bylo by lepší mít kontaktní informace o starém správci dostupné na jednom místě. Navíc kdokoliv, kdo ovladač vyzkouší a zjistí, že nefunguje, se může podívat do souboru MAINTAINERS a přečíst si, že jej nikdo neopravuje - místo toho, aby to byl jeden z těch ovladačů, které nemají určeného správce (na pár jsem narazil).
Konec konců, musíme být ohledně nespravovaných ovladačů upřímní - místo zatajování nefunkčního kódu. Skutečně je lepší napsat, kdo je za daný kód zodpovědný - i kdyby už nefungoval.
Adrian poukázal na to, že kontaktní informace jsou i nadále dostupné v dokumentaci k ovladači, a že:
MAINTAINERS nepokrývá všechny ovladače. Nejde o upřímnost nebo zatajování nefunkčního kódu. Přidání dejme tomu padesáti položek pro nespravované ovladače nemá žádný praktický význam.
Já alespoň v MAINTAINERS hledám lidi, kterým mohu dnes posílat patche, ne lidi, kteří na ovladači někdo dříve pracovali. Přidávání informací o osiřelých ovladačích do tohoto souboru jen ztěžuje zjišťování, jestli existují platné záznamy o daném ovladači.
Nic bych neměl proti tomu, kdyby se někdo přihlásil a spravoval dokument o stavu ovladačů. Ale to by znamenalo pořádný kus práce - ne jen doplnění pár osiřelých ovladačů do MAINTAINERS.
20. lis - 23. lis
Během diskuze poznamenal Russell King, že céčková konstrukce "int tickadj = 500/HZ ? : 1" v kernel/ptrace.c je dost divná. Někdo jiný připojil, že část podmínky 'true' je prázdná a standard C v takovém případě nedefinuje výchozí hodnotu. Takže nedává smysl, že je C kompilátor schopen si s takovou konstrukcí poradit. Linus Torvalds k tomu napsal:
Ve skutečnosti je to zdokumentovaná vlastnost GCC, kdy je chybějící 'true' podmínka nahrazena hodnotou podmínky.
Takže uvedený příklad nastaví "tickadj" na 500/HZ - kromě případu, kdy podteče na nulu - pak dostane tickadj hodnotu 1.
Jinými slovy, je to stejné jako:
int tickadj = 500/HZ ? 500/HZ : 1;
až na to, že kratší zápis je nejen kratší, ale i neobyčejně šikovný pro makra apod., protože hodnotu zkoumá pouze jednou, takže můžete udělat:
int tickadj = *ptr++ ? : 1;
a chová se to pěkně, protože ten pointer je navýšen pouze jednou.
Jan Engelhardt protestoval: Dělá to jen GCC. To likviduje snahy o kompilaci jádra pomocí ICC :) Linus odpověděl:
Ááále, vývojáři intelského kompilátoru jsou mazaní a mohou ICC dělat tak, aby bylo kompatibilní s dobrými rozšířeními GCC (a pokud vím, už to udělali).
A jak všichni víme, definice "dobrého rozšíření GCC" zní: "jádro ho používá". (Některé z těch dobrých se objevily v C99 a již tím pádem nejsou rozšířeními - GCC samozřejmě nebyl jediný kompilátor, který je implementoval.)
Dobrá rozšíření GCC:
ŠPATNÁ rozšíření GCC:
Jana Engelhardta se dotklo, že Linus vytvořil kategorii špatných rozšíření GCC: Nemusíš je používat... Ale Linus odpověděl:
Taky je většinou nepoužíváne. Ale jsou špatná, i když je nepoužíváš. Protože někdy jsou kvůli nim běžné chyby v syntaxi těžko debugovatelné.
Například ty "vnořené funkce" způsobují, že něco tak jednoduchého jako zapomenutá koncová závorka je pak hlášeno naprosto špatně. GCC se rozhodne "hele, je to OK, ty další deklarace funkcí jsou jen vnořené funkce uvnitř jiné funkce". Takže dostaneš něco jako:
file.c: lastline: parse error at end of input
ačkoliv skutečná chyba by mohla být přesně vyhmátnuta, kdyby GCC nemělo své totálně dementní vnořené funkce. Jinými slovy, to rozšíření působí problémy, i když ho nepoužíváš.
Linus ještě probral další případy, kdy jsou podle něj rozšíření spíš ke škodě než k užitku.
24. lis
H. Peter Anvin vysvětlil: Pokud se někdo podivoval nad nedávnou pomalostí kernel.org... po vydání Fedora 3 jsme měli zatím nejvyšší zátěž a pořád se to ještě zcela nezklidnilo. Kromě toho se na hardwaru začíná projevovat jeho věk. Aktivně sháníme nový hardware a doufáme, že během prosince nebo ledna už bychom měli mít nasazeného něco nového.
V originálu Kernel Traffic 287 vyšla navíc ještě tato témata:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.