abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 14:44 | Nová verze

    Byla vydána nová verze 4.6 (𝕏, Bluesky, Mastodon) multiplatformního open source herního enginu Godot (Wikipedie, GitHub). Přehled novinek i s náhledy v příspěvku na blogu.

    Ladislav Hagara | Komentářů: 0
    dnes 13:33 | Humor

    Rozsáhlá modernizace hardwarové infrastruktury Základních registrů měla zabránit výpadkům digitálních služeb státu. Dnešnímu výpadku nezabránila.

    Ladislav Hagara | Komentářů: 5
    dnes 13:11 | Nová verze

    Čínský startup Kimi představil open-source model umělé inteligence Kimi K2.5. Nová verze pracuje s textem i obrázky a poskytuje 'paradigma samosměřovaného roje agentů' pro rychlejší vykonávání úkolů. Kimi zdůrazňuje vylepšenou schopnost modelu vytvářet zdrojové kódy přímo z přirozeného jazyka. Natrénovaný model je dostupný na Hugging Face, trénovací skripty však ne. Model má 1 T (bilion) parametrů, 32 B (miliard) aktivních.

    NUKE GAZA! 🎆 | Komentářů: 2
    dnes 09:00 | IT novinky

    V Raspberry Pi OS lze nově snadno povolit USB Gadget Mode a díky balíčku rpi-usb-gadget (CDC-ECM/RNDIS) mít možnost se k Raspberry Pi připojovat přes USB kabel bez nutnosti konfigurování Wi-Fi nebo Ethernetu. K podporovaným Raspberry Pi připojeným do USB portu podporujícího OTG.

    Ladislav Hagara | Komentářů: 0
    dnes 03:33 | Komunita

    Konference Installfest 2026 proběhne o víkendu 28. a 29. března v budově FELu na Karlově náměstí v Praze. Přihlásit přednášku nebo workshop týkající se Linuxu, otevřených technologií, sítí, bezpečnosti, vývoje, programování a podobně lze do 18. února 0:15.

    Ladislav Hagara | Komentářů: 0
    dnes 03:22 | Komunita

    Fedora Flock 2026, tj. konference pro přispěvatele a příznivce Fedory, bude opět v Praze. Proběhne od 14. do 16. června. Na Flock navazuje DevConf.CZ 2026, který se uskuteční 18. a 19. června v Brně. Organizátoři konferencí hledají přednášející, vyhlásili Call for Proposals (CfP).

    Ladislav Hagara | Komentářů: 1
    dnes 03:11 | Zajímavý software

    Z80-μLM je jazykový model 'konverzační umělé inteligence' optimalizovaný pro běh na 8-bitovém 4Mhz procesoru Z80 s 64kB RAM, technologii z roku 1976. Model používá 2-bitovou kvantizaci a trigramové hashování do 128 položek, což umožňuje zpracování textu i při velmi omezené paměti. Natrénovaný model se vejde do binárního souboru velkého pouhých 40 KB. Tento jazykový model patrně neprojde Turingovým testem 😅.

    NUKE GAZA! 🎆 | Komentářů: 3
    včera 17:44 | IT novinky

    Digitální a informační agentura (DIA) na přelomu roku dokončila rozsáhlou modernizaci hardwarové infrastruktury základních registrů. Projekt za 236 milionů korun by měl zabránit výpadkům digitálních služeb státu, tak jako při loňských parlamentních volbách. Základní registry, tedy Registr práv a povinností (RPP), Informační systém základních registrů (ISZR) a Registr obyvatel (ROB), jsou jedním z pilířů veřejné správy. Denně

    … více »
    Ladislav Hagara | Komentářů: 5
    včera 17:33 | IT novinky

    Evropská komise (EK) zahájila nové vyšetřování americké internetové platformy 𝕏 miliardáře Elona Muska, a to podle unijního nařízení o digitálních službách (DSA). Vyšetřování souvisí se skandálem, kdy chatbot s umělou inteligencí (AI) Grok na žádost uživatelů na síti 𝕏 generoval sexualizované fotografie žen a dětí. Komise o tom dnes informovala ve svém sdělení. Americký podnik je podezřelý, že řádně neposoudil a nezmírnil rizika spojená se zavedením své umělé inteligence na on-line platformě.

    Ladislav Hagara | Komentářů: 11
    včera 15:11 | Komunita

    Bratislava OpenCamp pokračuje vo svojej tradícii a fanúšikovia otvorených technológií sa môžu tešiť na 4. ročník, ktorý sa uskutoční 25. 4. 2026 na FIIT STU v Bratislave. V súčasnosti prebieha prihlasovanie prednášok a workshopov – ak máte nápad, projekt, myšlienku, o ktoré sa chcete podeliť s komunitou, OpenCamp je správne miesto pre vás.

    Ladislav Hagara | Komentářů: 0
    Které desktopové prostředí na Linuxu používáte?
     (18%)
     (6%)
     (0%)
     (10%)
     (23%)
     (3%)
     (5%)
     (2%)
     (12%)
     (33%)
    Celkem 643 hlasů
     Komentářů: 17, poslední 22.1. 15:24
    Rozcestník

    Dotaz: Poll epoll descriptoru

    Jardík avatar 26.11.2010 22:50 Jardík | skóre: 40 | blog: jarda_bloguje
    Poll epoll descriptoru
    Přečteno: 887×

    Mám epoll descriptor a v něm přes epoll_ctl zaregistrováno několik descriptorů, jeden z nich je descriptor souboru "/proc/self/mountinfo" (event EPOLLERR).

    Pokud provedu epoll_wait() a připojím třeba CD a to přimountuju, soubor /proc/self/mountinfo se změní a dostanu příslušný event (EPOLLERR), což je vpořádku.

    Potřebuju ale, aby moje knihovna byla snadno integrovatelná s Qt a GTK, z toho důvodu je součástí veřejného API metoda pro získání toho descriptoru, za účelem možnosti jeho pollování, v Qt např. pomocí QSocketNotifier. Zatím jsem to tedy zkoušel jen v testovacím prográmku, který na epoll descriptor zavolá obyčejný poll(). Problém je, že poll() mi vrátí pouze tehdy, pokud na nějakém descriptoru obsaženém v epollu je událost EPOLLIN, ale nevrátí mi, pokud je na nějakém jen EPOLLERR a nemám tak možnost na událost zareagovat. Otázka zní, jak to "opravit" :-)

    Věřím v jednoho Boha.

    Odpovědi

    Jardík avatar 26.11.2010 23:28 Jardík | skóre: 40 | blog: jarda_bloguje
    Rozbalit Rozbalit vše Re: Poll epoll descriptoru

    tady se píše:

    Q: Is the epoll file descriptor itself poll/epoll/selectable?

    A: Yes. If an epoll file descriptor has events waiting then it will indicate as being readable.

    Tak proč tomu tak není?

    Věřím v jednoho Boha.
    Jardík avatar 28.11.2010 13:33 Jardík | skóre: 40 | blog: jarda_bloguje
    Rozbalit Rozbalit vše Re: Poll epoll descriptoru
    Nevíte alespoň o nějakém fóru zaměřeném na vývoj pro linux, kde by věděli?
    Věřím v jednoho Boha.
    29.11.2010 10:09 chochi | skóre: 29 | Praha
    Rozbalit Rozbalit vše Re: Poll epoll descriptoru
    Ahoj, To asi bude zalezet jaky backend to Qt pouziva (vypadato ze umi backend Unix - select a glib - poll). Podle zdrojaku jadra pri zmeno toho souboru vraci POLLERR | POLLPRI. Select ma zase definici:
    
    #define POLLIN_SET (POLLRDNORM | POLLRDBAND | POLLIN | POLLHUP | POLLERR)
    #define POLLOUT_SET (POLLWRBAND | POLLWRNORM | POLLOUT | POLLERR)
    #define POLLEX_SET (POLLPRI)
    
    Takze bych asi v Qt zkusil zaregitrovat QSocketNotifier s udalasti Write, nebo Exception - to by mohlo pomoct.
    Na druhou stranu nechapu co myslis tim zavolat poll na epoll deskriptor - poll by se mel volat na deskriptor souboru ktery chces hlidat.
    Jardík avatar 29.11.2010 12:33 Jardík | skóre: 40 | blog: jarda_bloguje
    Rozbalit Rozbalit vše Re: Poll epoll descriptoru
    Nerozumíme si.
    int epollfd = epoll_create();
    int mountinfofd = open("/proc/self/mountinfo", O_RDONLY);
    
    struct epoll_event e;
    e.events = EPOLLERR; // on tohle sleduje implicitně, ale ničemu nevadí, když to tam napíšu
    e.data.fd = mountinfofd;
    epoll_ctl(epollfd, EPOLL_CTL_ADD, mountinfofd, &e);
    

    Qt, GTK, nebo ne-gui aplikaci (prostě libovolné používající tu knihovnu) předám epollfd k poll()ování (nebo select()ování, to je jedno) na POLLIN. POLLIN event na epoll descriptoru by měl podle dokumentace nastat vždy, když na některém descriptoru v epollu je nějaký event.

    Pokud zavolám přímo epoll_wait(epollfd, ...) na ten epoll descriptor, příslušný event (EPOLLERR) na mountinfofd descriptoru dostanu. Pokud však udělám:
    struct pollfd p;
    p.fd = epollfd;
    p.events = POLLIN;
    
    poll(&p, 1, -1);
    
    Tak poll() nikdy nevrátí, ačkoli by se na epollfd měla objevit (podle toho, jak to chápu) událost POLLIN, když se na mountinfofd objeví libovolná událost (např. onen EPOLLERR). Pokud použiju timeout pro poll, např. poll(&p, 1, 1000); A pak zavolám epoll_wait(epollfd,...), i když poll nevrátil event, ale vím, že jsem médium přimountoval, takže v epollu by měla událost být, tak epoll_wait() taky nevrátí žádnou událost. Jako by se díky tomu poll()u úplně vytratila.
    Věřím v jednoho Boha.
    29.11.2010 16:23 chochi | skóre: 29 | Praha
    Rozbalit Rozbalit vše Re: Poll epoll descriptoru
    Aha, ja si stejne myslel, ze jsem to spatne pochopil.
    Zadny CD tady nemam, ale pokud pouziju loopback mount, tak mi tohle funguje:
    
    #include <stdlib.h>
    #include <stdio.h>
    #include <unistd.h>
    #include <sys/types.h>
    #include <sys/stat.h>
    #include <fcntl.h>
    #include <poll.h>
    #include <sys/epoll.h>
    
    int main() {
    	int epollfd = epoll_create(1);
    	int mountinfofd = open("/proc/self/mountinfo", O_RDONLY);
    	
    	struct epoll_event e;
    	e.events = EPOLLERR; // on tohle sleduje implicitně, ale ničemu nevadí, když to tam napíšu
    	e.data.fd = mountinfofd;
    	epoll_ctl(epollfd, EPOLL_CTL_ADD, mountinfofd, &e);
    
    	struct pollfd p;
    	p.fd = epollfd;
    	p.events = POLLIN;
    	
    	printf("%i", poll(&p, 1, -1));
    	printf(" - %08X\n", p.revents);
    }
    
    Mi varti (po primontovani / odmonotvani):
    
    $ ./a.out 
    1 - 00000001
    $ uname -a
    Linux xxx 2.6.27.5-117.fc10.i686 #1 SMP Tue Nov 18 12:19:59 EST 2008 i686 i686 i386 GNU/Linux
    
    Jardík avatar 30.11.2010 02:37 Jardík | skóre: 40 | blog: jarda_bloguje
    Rozbalit Rozbalit vše Re: Poll epoll descriptoru
    Já se omlouvám, já myslel, že to nevracel poll(), ale poll() mi vrací, ale nevrací mi epoll_wait() zavolaný na ten epoll descriptor poté, co mi poll() vrátí.
    Věřím v jednoho Boha.
    Luboš Doležel (Doli) avatar 30.11.2010 03:58 Luboš Doležel (Doli) | skóre: 98 | blog: Doliho blog | Kladensko
    Rozbalit Rozbalit vše Re: Poll epoll descriptoru
    To je blbý, ale měl by fungovat trik. Vytvoř si druhý epoll handle, do něj zařaď ten první, a pak poll()uj na tom druhém handlu. Jakmile poll() projde na druhém, tak si událost vyzvedneš na prvním (a takhle to mezi epoll handly funguje, ověřeno).
    Jardík avatar 30.11.2010 14:17 Jardík | skóre: 40 | blog: jarda_bloguje
    Rozbalit Rozbalit vše Re: Poll epoll descriptoru
    A proč tohle funguje narozdíl od předchozího? Vždyť se tam snad děje to samý ... ten epoll pak polluje ten původní epoll a to se ta událost neztratí, proč se vůbec ztratí při použití poll()u, data ze socket descriptoru se mi taky neztratí, když na něj zavolám poll()... jinak kdybych provedl ten trik, nebude to o nějak moc "pomalejší"?
    Věřím v jednoho Boha.
    Jardík avatar 30.11.2010 14:19 Jardík | skóre: 40 | blog: jarda_bloguje
    Rozbalit Rozbalit vše Re: Poll epoll descriptoru
    Mi to přijde padlé na hlavu, přece poll()uju ten descriptor proto, abych věděl, že tam jsou události, né proto, abych je přečetl a ztratily se.
    Věřím v jednoho Boha.
    Luboš Doležel (Doli) avatar 30.11.2010 18:32 Luboš Doležel (Doli) | skóre: 98 | blog: Doliho blog | Kladensko
    Rozbalit Rozbalit vše Re: Poll epoll descriptoru
    Zkus to nahlásit jako chybu.
    Jardík avatar 30.11.2010 21:44 Jardík | skóre: 40 | blog: jarda_bloguje
    Rozbalit Rozbalit vše Re: Poll epoll descriptoru
    Věřím v jednoho Boha.
    Jardík avatar 6.12.2010 00:16 Jardík | skóre: 40 | blog: jarda_bloguje
    Rozbalit Rozbalit vše Re: Poll epoll descriptoru
    Maxi, toto není řešení mého problému. Je to jenom ošklivý workaround přidávající zbytečnou režii a další zabraný descriptor.
    Věřím v jednoho Boha.
    Max avatar 6.12.2010 00:44 Max | skóre: 72 | blog: Max_Devaine
    Rozbalit Rozbalit vše Re: Poll epoll descriptoru
    Já vím, že to je workaround, ale vypadá to, že to je jediné řešení. Ještě se uvidí, až zareagují na tvůj bug. Ale jak chceš, stáhnu to.
    Zdar Max
    Měl jsem sen ... :(
    30.11.2010 09:29 chochi | skóre: 29 | Praha
    Rozbalit Rozbalit vše Re: Poll epoll descriptoru
    Tak tohle by fungovat nemelo (koukal jsem na zdrojaky jadra), ale to co psal Doli by pomoct melo.
    Luboš Doležel (Doli) avatar 30.11.2010 03:56 Luboš Doležel (Doli) | skóre: 98 | blog: Doliho blog | Kladensko
    Rozbalit Rozbalit vše Re: Poll epoll descriptoru
    Možná jsi to tu už psal, ale zkoušel jsi poll()ovat na POLLERR? Protože něco mi říká, že se do "nadřazených" epoll handlů dostávala kopie události, nikoliv vysloveně EPOLLIN... ale nejsem si už jistý.
    30.11.2010 09:28 chochi | skóre: 29 | Praha
    Rozbalit Rozbalit vše Re: Poll epoll descriptoru
    Nene, kopie tam nejde, viz fs/eventpoll.c:
    
    		if (epi->ffd.file->f_op->poll(epi->ffd.file, NULL) &
    		    epi->event.events)
    			return POLLIN | POLLRDNORM;
    
    6.12.2010 08:05 lofcek
    Rozbalit Rozbalit vše Re: Poll epoll descriptoru
    Je to zvlastne, ale presne toto iste som riesil. A tiez viem, ze na novsich jadrach sa nevracia EPOLLERR, ale EPOLLIN. A tiez viem, ze ten fejk s tym ze do pollu poslem epollfd by teoreticky mal fungovat a prakticky nefunguje.

    Takze zatial najlepsie (aj ked nie idealne riesenie), ktore mam je vytvorit thread ktory cez epoll caka na hranu a hned ako to nastane zapise data do rury. A stav rury sa uz da zistovat cez obycajny poll/select. Je to skarede, ale funkcne.

    Založit nové vláknoNahoru

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.