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í
×
eParkomat, startup z ČR, postoupil mezi finalisty evropského akcelerátoru ChallengeUp!
Robot na pivo mu otevřel dveře k opravdovému byznysu
Internet věcí: Propojený svět? Už se to blíží...
dnes 12:00 | Zajímavý projekt

Projekt Termbox umožňuje vyzkoušet si linuxové distribuce Ubuntu, Debian, Fedora, CentOS a Arch Linux ve webovém prohlížeči. Řešení je postaveno na projektu HyperContainer. Podrobnosti v často kladených dotazech (FAQ). Zdrojové kódy jsou k dispozici na GitHubu [reddit].

Ladislav Hagara | Komentářů: 7
dnes 11:00 | Bezpečnostní upozornění

Byly zveřejněny informace o bezpečnostní chybě CVE-2016-8655 v Linuxu zneužitelné k lokální eskalaci práv. Chyba se dostala do linuxového jádra v srpnu 2011. V upstreamu byla opravena minulý týden [Hacker News].

Ladislav Hagara | Komentářů: 0
včera 22:00 | Komunita

Přibližně před měsícem bylo oznámeno, že linuxová distribuce SUSE Linux Enterprise Server (SLES) běží nově také Raspberry Pi 3 (dokumentace). Obraz verze 12 SP2 pro Raspberry Pi 3 je ke stažení zdarma. Pro registrované jsou po dobu jednoho roku zdarma také aktualizace. Dnes bylo oznámeno, že pro Raspberry Pi 3 je k dispozici také nové openSUSE Leap 42.2 (zprávička). K dispozici je hned několik obrazů.

Ladislav Hagara | Komentářů: 5
včera 06:00 | Zajímavý software

OMG! Ubuntu! představuje emulátor terminálu Hyper (GitHub) postavený na webových technologiích (HTML, CSS a JavaScript). V diskusi k článku je zmíněn podobný emulátor terminálu Black Screen. Hyper i Black Screen používají framework Electron, stejně jako editor Atom nebo vývojové prostředí Visual Studio Code.

Ladislav Hagara | Komentářů: 38
včera 06:00 | Zajímavý článek

I letos vychází řada ajťáckých adventních kalendářů. QEMU Advent Calendar 2016 přináší každý den nový obraz disku pro QEMU. Programátoři se mohou potrápit při řešení úloh z kalendáře Advent of Code 2016. Kalendáře Perl Advent Calendar 2016 a Perl 6 Advent Calendar přinášejí každý den zajímavé informace o programovacím jazyce Perl. Stranou nezůstává ani programovací jazyk Go.

Ladislav Hagara | Komentářů: 9
3.12. 16:24 | Nová verze

Byla vydána Mageia 5.1. Jedná se o první opravné vydání verze 5, jež vyšla v červnu loňského roku (zprávička). Uživatelům verze 5 nepřináší opravné vydání nic nového, samozřejmě pokud pravidelně aktualizují. Vydání obsahuje všechny aktualizace za posledního téměř půldruhého roku. Mageia 5.1 obsahuje LibreOffice 4.4.7, Linux 4.4.32, KDE4 4.14.5 nebo GNOME 3.14.3.

Ladislav Hagara | Komentářů: 17
3.12. 13:42 | Pozvánky

V Praze probíhá konference Internet a Technologie 16.2, volné pokračování jarní konference sdružení CZ.NIC. Konferenci lze sledovat online na YouTube. K dispozici je také archiv předchozích konferencí.

Ladislav Hagara | Komentářů: 0
2.12. 22:44 | Komunita

Joinup informuje, že Mnichov používá open source groupware Kolab. V srpnu byl dokončen dvouletý přechod na toto řešení. V provozu je asi 60 000 poštovních schránek. Nejenom Kolabu se věnoval Georg Greve ve své přednášce Open Source: the future for the European institutions (SlideShare) na konferenci DIGITEC 2016, jež proběhla v úterý 29. listopadu v Bruselu. Videozáznam přednášek z hlavního sálu je ke zhlédnutí na Livestreamu.

Ladislav Hagara | Komentářů: 25
2.12. 15:30 | Zajímavý projekt

Společnost Jolla oznámila v příspěvku Case study: Sailfish Watch na svém blogu, že naportovala Sailfish OS na chytré hodinky. Využila a inspirovala se otevřeným operačním systémem pro chytré hodinky AsteroidOS. Použita je knihovna libhybris. Ukázka ovládání hodinek na YouTube.

Ladislav Hagara | Komentářů: 18
2.12. 14:15 | Nová verze

Byla vydána verze 7.1.0 skriptovacího jazyka PHP používaného zejména k vývoji dynamických webových stránek. Jedná se o první stabilní verzi nejnovější větvě 7.1. Přehled novinek v dokumentaci. Podrobnosti v ChangeLogu. K dispozici je také příručka pro přechod z PHP 7.0.x na PHP 7.1.x.

Ladislav Hagara | Komentářů: 6
Kolik máte dat ve svém domovském adresáři na svém primárním osobním počítači?
 (32%)
 (24%)
 (29%)
 (7%)
 (5%)
 (3%)
Celkem 775 hlasů
 Komentářů: 50, poslední 29.11. 15:50
Rozcestník
Reklama

Dotaz: /proc/kallsyms a EXPORT_SYMBOL (volání neexportovaného symbolu)

7.11.2012 22:11 pan
/proc/kallsyms a EXPORT_SYMBOL (volání neexportovaného symbolu)
Přečteno: 265×
Zdravím,

hledám nějakého kernel experta, který by mi trochu pomohl objasnit následující. Chtěl jsem na svém androidím telefonu vyzkoušet smartass governor. Našel jsem tedy správné zdrojáky jádra i onoho governoru a přeložil ho. insmod ale selhal kvůli chybějícímu symbolu nr_running (vlastní jádro použít nemohu, resp. nechci, protože se mi nechce odemykat bootloader). Trochu jsem pátral a objevil soubor /proc/kallsyms, který (jak jsem pochopil) obsahuje všechny symboly, co jsou v jádře. Ten pro zmiňovaný symbol obashuje toto:

800c8df0 T nr_running

Celý problém by měl tedy jít vyřešit tak, že bych modul upravil tak, že by požadoval jeden parametr, a to tuhle adresu. Sice mi to přijde jako prasárna, ale mělo to fungovat. Moje první otázka je, jestli není nějaký hezčí způsob, jak to udělat. Další co mi vrtá hlavou, je vztah souboru /proc/kallsyms a EXPORT_SYMBOL - z toho, co jsem vygooglil existují lidé, kteří jsou přesvědčeni, že co je v kallsyms s T, je exportováno. Ale v tomhle případě to tak není. man nm (kterému by struktura kallsyms snad měla odpovídat) říká, že velkými písmeny jsou označeny symboly globální (externí). Rozdíl mezi globálním a externím chápu (alespoň si to myslím), a podle toho by ono chování dávalo smysl, ale rád bych se o tom ujistil z povolanějších zdrojů. A poslední otázka - pokud je moje předchozí úvaha správně, jak (a jestli vůbec) se dá z běžíco kernelu zjistit, které symboly jsou exportovány? Tedy krom toho, že se pokusím načíst modul, který se na ně odkazuje.

Díky za rady :-)

Řešení dotazu:


Odpovědi

8.11.2012 14:42 Nikola Pajkovský | skóre: 16
Rozbalit Rozbalit vše Re: /proc/kallsyms a EXPORT_SYMBOL (volání neexportovaného symbolu)
exportovane to je

 * nr_running, nr_uninterruptible and nr_context_switches:
 *
 * externally visible scheduler statistics: current number of runnable
 * threads, current number of uninterruptible-sleeping threads, total
 * number of context switches performed since bootup.
 */
unsigned long nr_running(void)
{
        unsigned long i, sum = 0;

        for_each_online_cpu(i)
                sum += cpu_rq(i)->nr_running;

        return sum;
}
ukaz zrojaky, btw schedulery, co si pamatuju, se prepinaji pres /proc nebo /sys/
Save the whales. Feed the hungry. Free the mallocs
8.11.2012 15:41 pan
Rozbalit Rozbalit vše Re: /proc/kallsyms a EXPORT_SYMBOL (volání neexportovaného symbolu)
Jakto ale, že pokus o načtení toho modulu skončí kvůli chybějícímu symbolu nr_runnig? To, že v tom zdrojáku píšou "externally visible" jsem taky našel, ale už jsem nikde nenašel něco jako EXPORT_SYMBOL(nr_running). Proved jsem fígl, co jsem popsal a funguje to, takže alespoň zčásti je problem vyřešen. Co mi ale pořád není jasné jak je to s tím vztahem /proc/kallsyms a EXPORT_SYMBOL a jestli by se ten fígl nedal udělat nějak lépe (tj. vevnitř v tom modulu).

Zdrojáky toho modulu jsou třeba tady

Zdrojáky jádra tady
8.11.2012 15:55 Nikola Pajkovský | skóre: 16
Rozbalit Rozbalit vše Re: /proc/kallsyms a EXPORT_SYMBOL (volání neexportovaného symbolu)
rad bych videl zrojaky, abych ti mohl rict vice, kde je najdu?
Save the whales. Feed the hungry. Free the mallocs
8.11.2012 16:08 pan
Rozbalit Rozbalit vše Re: /proc/kallsyms a EXPORT_SYMBOL (volání neexportovaného symbolu)
Zdrojáky čeho? Zdrojáky toho modulu i jádra jsem odkázal v předcházejícím příspěvku. Každopádně mi nejde ani tak o tuhle konkrétní situaci, ale nějaký obecnější vhled do problematiky exportování symbolů v jádře a toho, jaký k tomu má vztah /proc/kallsyms. Ono problém s smartass je spíš ilustrace toho, co nechápu. Modul jsem už do jádra, za použití triku, zaved a zdá se, že funguje přesně jak má. Kdyby se navíc našel někdo, kdo by mi poradil, jak ten trik udělat jen vevnitř v jádře, byl bych rád :-)
8.11.2012 16:01 Nikola Pajkovský | skóre: 16
Rozbalit Rozbalit vše Re: /proc/kallsyms a EXPORT_SYMBOL (volání neexportovaného symbolu)
sorka, nevidel jsem odkazy.

Exported symbols and the internal API
Save the whales. Feed the hungry. Free the mallocs
8.11.2012 16:09 pan
Rozbalit Rozbalit vše Re: /proc/kallsyms a EXPORT_SYMBOL (volání neexportovaného symbolu)
To vypadá, že by mi mohlo leccos vysvětlit. Nastuduju a dám vědět. Dík :-)
8.11.2012 16:08 Nikola Pajkovský | skóre: 16
Rozbalit Rozbalit vše Re: /proc/kallsyms a EXPORT_SYMBOL (volání neexportovaného symbolu)
a jeste jak jsi to sestavoval? poslal jsi mi 2 kernely
Save the whales. Feed the hungry. Free the mallocs
8.11.2012 16:11 pan
Rozbalit Rozbalit vše Re: /proc/kallsyms a EXPORT_SYMBOL (volání neexportovaného symbolu)
Z toho první odkazu jsem použil jen ten jeden soubor - smotný modul. Jádro, vůči kterému jsem to kompiloval (a které mám v telefonu), je v druhém.
8.11.2012 16:15 Nikola Pajkovský | skóre: 16
Rozbalit Rozbalit vše Re: /proc/kallsyms a EXPORT_SYMBOL (volání neexportovaného symbolu)
heh, to musis backportovat do kernelu co mas v telefonu, v tom strome to buildnout a pak teprve muzes vlozit.
Save the whales. Feed the hungry. Free the mallocs
8.11.2012 16:20 pan
Rozbalit Rozbalit vše Re: /proc/kallsyms a EXPORT_SYMBOL (volání neexportovaného symbolu)
O to se přesně snažím a končí na tom neznámém symbolu. Ono by stačilo do sched.c přidat EXPPORT_SYMBOL(nr_running), ale to znamenalo vyměnit jádro v telefonu a to se mi nechce (musel bych odemykat bootloader). Proto hledám alternativní cesty a našel jsem je. Jen jsem cestou narazil na věco, kterým nerozumím a rád bych rozuměl. Jdu si přečíst ten článek :-)
8.11.2012 16:28 Nikola Pajkovský | skóre: 16
Rozbalit Rozbalit vše Re: /proc/kallsyms a EXPORT_SYMBOL (volání neexportovaného symbolu)
tohle je verejne api, pristupne odevsad, neni treba delat EXPORT_SYMBOL
include/linux/sched.h:140: extern unsigned long nr_running(void);
ukaz jak vypada tvuj patch do 4.1.B (blabla) ;)
Save the whales. Feed the hungry. Free the mallocs
8.11.2012 16:52 pan
Rozbalit Rozbalit vše Re: /proc/kallsyms a EXPORT_SYMBOL (volání neexportovaného symbolu)
Api ano, ale mě jde o symbol. Nedělám patch, kompiluju modul - stáhnul jsem jen cpufreq_smartass2.c a dopsal Makefile, který se odkazuje na kernel od Sony.
8.11.2012 17:06 Nikola Pajkovský | skóre: 16
Rozbalit Rozbalit vše Re: /proc/kallsyms a EXPORT_SYMBOL (volání neexportovaného symbolu)
ja si myslim, ze ten module je napsany blbe. Jako modul nejde pouzit. kdyz se kouknes na patch a hlavne na radek + CONFIG_CPU_FREQ_GOV_SMARTASS2=y, dojde ti, ze je to primo zadratovane v jadre (neni to module, jinak by tam bylo =m) proto ma pristup k nr_running a module ne (jedine reseni je to tvoje). Nebo prepsat module :)
Save the whales. Feed the hungry. Free the mallocs
9.11.2012 12:11 pan
Rozbalit Rozbalit vše Re: /proc/kallsyms a EXPORT_SYMBOL (volání neexportovaného symbolu)
To ale není nic, co bych nevěděl. Buď překompilovat kernel s EXPORT_SYMBOL(nr_running) nebo smartass nalikovat přímo da jádra. Ani jedno neřeší můj problém. Já hledám cestu jak to obejít. Jednu sice mám, ale ta se mi úplně nelíbí, pořád si říkám, že by to mohlo jít vyřešit nějak vevnitř v tom modulu. Další věc, ve které pořád tápu je vztah /proc/kallsyms a exportovaných symbolů - např. dá se z toho souboru zjistit, které symboly jsou exportované? Jak? Co přesně znamená T u symbolu v tomhle souboru (totéž co v nm?)? Nebo tam žádná souvislost není? Zatím se přiklaním k tomu poslednímu.
10.11.2012 17:28 Peter Golis | skóre: 53 | Bratislava
Rozbalit Rozbalit vše Re: /proc/kallsyms a EXPORT_SYMBOL (volání neexportovaného symbolu)
Pán pracuje pre Nvidia?
12.11.2012 10:09 pan
Rozbalit Rozbalit vše Re: /proc/kallsyms a EXPORT_SYMBOL (volání neexportovaného symbolu)
Ne. Proč?
8.11.2012 16:35 Nikola Pajkovský | skóre: 16
Rozbalit Rozbalit vše Re: /proc/kallsyms a EXPORT_SYMBOL (volání neexportovaného symbolu)
a jo, mas recht
Save the whales. Feed the hungry. Free the mallocs
8.11.2012 16:23 Nikola Pajkovský | skóre: 16
Rozbalit Rozbalit vše Re: /proc/kallsyms a EXPORT_SYMBOL (volání neexportovaného symbolu)
tomu nerozumim

$ git clone git://github.com/CyanogenMod/semc-kernel-msm7x30.git
$ ls semc-kernel-msm7x30/drivers/cpufreq/
Kconfig    cpufreq_conservative.c  cpufreq_performance.c  cpufreq_userspace.c
Makefile   cpufreq_interactive.c   cpufreq_powersave.c    freq_table.c
cpufreq.c  cpufreq_ondemand.c      cpufreq_stats.c

$ find semc-kernel-msm7x30/ -name '*smartass*'
kde je sakra chytra prdel? :)
Save the whales. Feed the hungry. Free the mallocs
8.11.2012 16:50 pan
Rozbalit Rozbalit vše Re: /proc/kallsyms a EXPORT_SYMBOL (volání neexportovaného symbolu)
Je tam víc větví, to co jsem odkazoval, je v master. Taky mi dalo dost práce to najít. Nebo je to taky stejné (až na pár konstatnt týkajících se frekvencí) jako tady verze Hero .35

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.