Portál AbcLinuxu, 12. května 2025 04:13

Dotaz: nahrání modulu a řešení race condition ?

25.8.2005 09:59 Pavelec
nahrání modulu a řešení race condition ?
Přečteno: 56×
Odpovědět | Admin
Objevil jsem chybu(?)v inicializačním skriptu, kdy se testuje existence zařízení po natažení příslušného modulu jádra do paměti. Problém je, že po natažení probíhá asi jakási inicializace zařízení a někdy nestihne proběhnout před testováním podmínky, příp. dalších příkazů a chová se tak oproti očekávání.

if ! grep `echo ${1}: | cut -f 1 -d :`: /proc/net/dev 1> /dev/null ; then # no interface yet
    if /sbin/modprobe -c | grep -w "alias ${1}" | grep -vw "alias ${1} off" > /dev/null ; then
      echo "/etc/rc.d/rc.inet1:  /sbin/modprobe ${1}" | $LOGGER
      /sbin/modprobe ${1}
    fi
  fi
 if grep `echo ${1}: | cut -f 1 -d :`: /proc/net/dev 1> /dev/null ; then # interface exists
    if ! /sbin/ifconfig | grep -w "${1}" 1>/dev/null || \

Nejsem si ale zcela jistý a v dokumentaci jsem nenašel, zda programy modprobe, resp. insmod, garantují kompletní inicializaci před návratem do volajícího procesu.

Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

25.8.2005 13:12 Michal Čihař | skóre: 61 | blog: Bláboly | Praha
Rozbalit Rozbalit vše Re: nahrání modulu a řešení race condition ?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Modprobe/insmod garantují natažení modulu, nic jiného. Init skripty jsou špatné řešení, mělo by se to řešit přes hotplug.

Pokud trváš na řešení přes init skript, tak nezbyde než cyklus se sleepem (a timeoutem).
Weblate - překládání přes web | Gammu SMSD - posílání SMS | Blog
25.8.2005 14:37 Pavelec
Rozbalit Rozbalit vše Re: nahrání modulu a řešení race condition ?
Díky za odpověď.
Init skripty jsou špatné řešení, mělo by se to řešit přes hotplug.
Opravte mě, jestli se pletu, ale hotplug je obsluhován skripty, které dělají totéž, ale velmi pravděpodobně s takovým předstihem, že k "race conditions" většinou nedojde.

Navedl jste mě správně. Přesunutí k dřívějšímu spuštění hotplug susbsystému v základním inicializačním skriptu vedlo k zjevnému odstranění problému.

Ještě jednou díky.

25.8.2005 14:42 Michal Čihař | skóre: 61 | blog: Bláboly | Praha
Rozbalit Rozbalit vše Re: nahrání modulu a řešení race condition ?
Opravte mě, jestli se pletu, ale hotplug je obsluhován skripty, které dělají totéž, ale velmi pravděpodobně s takovým předstihem, že k "race conditions" většinou nedojde.
Hotplug dělá věci v okamžiku, kdy je dané zařízení připraveno, což se dozví eventem z kernelu.
25.8.2005 19:52 Pavelec
Rozbalit Rozbalit vše Re: nahrání modulu a řešení race condition ?
To se nevylučuje s mým tvrzením. Hotplug dostane od jádra událost vč. předaných parametrů a pak volá skript, který obdobným způsobem natahuje moduly do paměti, příp. spouští další skripty(agenty) pro vybraná zařízení nebo rozhraní.
25.8.2005 20:00 Michal Marek (twofish) | skóre: 55 | blog: { display: blog; } | Praha
Rozbalit Rozbalit vše Re: nahrání modulu a řešení race condition ?
Ne, hotplug dostane událost (parametr 'net'), že se vytvořilo rozhraní xy a nakonfiguruje ho.

Jiná možnost je, že natahování modulů dělá jeden skript a nastavování adres další zkript o něco později.

Založit nové vláknoNahoru

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

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.