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

    OpenTofu, tj. svobodný a otevřený fork Terraformu vzniknuvší jako reakce na přelicencování Terraformu z MPL na BSL (Business Source License) společností HashiCorp, bylo vydáno ve verzi 1.7.0. Přehled novinek v aktualizované dokumentaci. Vypíchnout lze State encryption.

    Ladislav Hagara | Komentářů: 0
    včera 23:55 | Humor

    Spouštět webový prohlížeč jenom kvůli nákupu kávy? Nestačí ssh? Stačí: ssh terminal.shop (𝕏).

    Ladislav Hagara | Komentářů: 2
    včera 18:11 | Nová verze

    Yocto Project byl vydán ve verzi 5.0. Její kódové jméno je Scarthgap. Yocto Project usnadňuje vývoj vestavěných (embedded) linuxových systémů na míru konkrétním zařízením. Cílem projektu je nabídnou vývojářům vše potřebné. Jedná se o projekt Linux Foundation.

    Ladislav Hagara | Komentářů: 0
    včera 17:56 | Nová verze

    Operační systém 9front, fork operačního systému Plan 9, byl vydán v nové verzi "do not install" (pdf). Více o 9front v FQA.

    Ladislav Hagara | Komentářů: 0
    včera 13:11 | Nová verze

    Svobodná webová platforma pro sdílení a přehrávání videí PeerTube (Wikipedie) byla vydána v nové verzi 6.1. Přehled novinek i s náhledy v oficiálním oznámení a na GitHubu. Řešeny jsou také 2 bezpečnostní chyby.

    Ladislav Hagara | Komentářů: 3
    včera 12:33 | Zajímavý software

    Lennart Poettering na Mastodonu představil utilitu run0. Jedná se o alternativu k příkazu sudo založenou na systemd. Bude součástí systemd verze 256.

    Ladislav Hagara | Komentářů: 14
    29.4. 23:22 | Nová verze

    Hudební přehrávač Amarok byl vydán v nové major verzi 3.0 postavené na Qt5/KDE Frameworks 5. Předchozí verze 2.9.0 vyšla před 6 lety a byla postavená na Qt4. Portace Amaroku na Qt6/KDE Frameworks 6 by měla začít v následujících měsících.

    Ladislav Hagara | Komentářů: 11
    29.4. 21:44 | Komunita

    Ubuntu 24.10 bude Oracular Oriole (věštecká žluva).

    Ladislav Hagara | Komentářů: 12
    29.4. 20:22 | Nová verze

    Byla vydána nová verze 2.45.0 distribuovaného systému správy verzí Git. Přispělo 96 vývojářů, z toho 38 nových. Přehled novinek v příspěvku na blogu GitHubu a v poznámkách k vydání. Vypíchnout lze počáteční podporu repozitářů, ve kterých lze používat SHA-1 i SHA-256.

    Ladislav Hagara | Komentářů: 0
    29.4. 13:33 | IT novinky

    Před 25 lety, ve čtvrtek 29. dubna 1999, byla spuštěna služba "Úschovna".

    Ladislav Hagara | Komentářů: 0
    KDE Plasma 6
     (75%)
     (8%)
     (2%)
     (15%)
    Celkem 887 hlasů
     Komentářů: 4, poslední 6.4. 15:51
    Rozcestník

    Administrace komentářů

    Jste na stránce určené pro řešení chyb a problémů týkajících se diskusí a komentářů. Můžete zde našim administrátorům reportovat špatně zařazenou či duplicitní diskusi, vulgární či osočující příspěvek a podobně. Děkujeme vám za vaši pomoc, více očí více vidí, společně můžeme udržet vysokou kvalitu AbcLinuxu.cz.

    Příspěvek
    11.2.2016 01:57 Jardík
    Rozbalit Rozbalit vše Re: Petr
    Takže nakonec to dopadlo takto:
    struct poll_handler
    {
      uintptr_t magic_value_1;
      uintptr_t magic_value_2;
    };
    
    Kde
    magic_value_1 = (((uintptr_t)fd & 0xffff0000u) << 48)
                   | (uintptr_t)callback
                   | (uintptr_t)flags;
    
    magic_value_2 =  (((uintptr_t)fd & 0xffffu) << 48)
                   | (uintptr_t)userdata;
    
       nebo (podle nastavení flags)
    
    magic_value_2 =  next_poll_handler;
    
    Tím mám 16 bytů na strukturu.

    Vejdou se tam uživatelská data (musí být platný ukazatel, tj. má 47 spodních bitů (pointery s bitem 47 (který se pak kopíruje i do zbytku do 63) jsou rezervovány pro kernel), zarovnání je nedůležité, spodní bity v userdata nepoužiji. Nahoře mám 17 bitů, použiju jen 16 a tam kydnu tam spodních 16 bitů deskriptoru.

    Pak callback, kompilátor funkce zarovnává na 16, a opět max je 47 bitů. Takže horních 16 bitů pro horních 16 bitů deskriptoru, spodní 4 bity na flagy. Flag zatím užiju jeden, 'removed'. Ten nastavím, když uživatel odstraní deskriptor, zároveň se přepíšou userdata na pointer na další odstraněnou položku ... jak tedy uživatel odstraňuje, dělám linked list odstraněných položek.

    Obsluhování bufferu je tak, že procházím položky. Když je bit 'removed' nastaven, položku přeskočím, když ne, zavolám callback a jdu na další. Až dojedu na konec, tak struktury nalinkuju do seznamu s 'volnými' handlery. Ty neuvolňuju a nechávám je pro další použití při přidání deskriptoru.

    No ... a stejně se mi to nelíbí, je to hrozná splácanina, jestli to za těch ušetřených 8 bytů, o které by struktura narostla, stojí. Ale asi by byla moc hezká:
    struct poll_handler
    {
      poll_callback cb;
      void *userdata_or_next;
      int fd;
      int flags;
    };
    
    Při 65k descriptorech to je půl megabajtu.

    Jinak koukal jsem na zdroják kernelu a epoll uchovává přidané položky v obrovských strukturách, nalinkované v červenočerném stromu a pak ještě linkované pomocí ready-stavu a pak ještě linkované jánevímčím. Přidání/odebrání/modifikace je tedy O(log N) a stojí syscall.

    V tomto formuláři můžete formulovat svou stížnost ohledně příspěvku. Nejprve vyberte typ akce, kterou navrhujete provést s diskusí či příspěvkem. Potom do textového pole napište důvody, proč by měli admini provést vaši žádost, problém nemusí být patrný na první pohled. Odkaz na příspěvek bude přidán automaticky.

    Vaše jméno
    Váš email
    Typ požadavku
    Slovní popis
    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.