Portál AbcLinuxu, 9. května 2025 06:01

Dotaz: shared memory #include v kernelu

2.12.2003 14:34 Tomas
shared memory #include v kernelu
Přečteno: 67×
Odpovědět | Admin
Mam dva vzorove programky komunikujici pres shared memory, ktere obsahuji klauzule
#include < sys/types.h >
#include < sys/ipc.h >
#include < sys/shm.h >
Pokud je kompiluji pro beh v uzivatelskem prostoru, tak vse probehne OK. Jakmile ale chci jeden z nich zkompilovat jako modul do jadra, vyse uvedene radky zpusobi mnoho chybovych hlasek o redefinici uz nadefinovaneho. A kdyz tam nejsou, tak to zase vypise radky warning: implicit declaration of function 'shmdt' .... a samozrejme vysledny modul nejde naloudovat, protoze ty fce nezna.
V cem je problem?
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

2.12.2003 14:53 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše #include v C
Odpovědět | | Sbalit | Link | Blokovat | Admin
Chyba je (mj.) v tom, že chceš v jádře používat shared memory.
2.12.2003 14:53 MOJE
Rozbalit Rozbalit vše #include v C
Odpovědět | | Sbalit | Link | Blokovat | Admin
Zajimavy zpusob zabavy. Kernelovy modul a userspace program jsou dve ruzne veci a podle toho se musi psat. Nepredpokladejte, ze se vam podari userspace program podari nacpat primo beze zmen do kernelu. Zkuste se neco dozvedet o programovani v kernelu a pak zkousejte takovehle veci. P.S. Pokud s minimalnima znalostma protlacite neco do jadra, tak bude kernel panic vas velmi dobry kamarad.
4.12.2003 13:52 Beda
Rozbalit Rozbalit vše #include v C
me uz se to povedlo a zas takova magie to neni. teda bylo to skoro beze zmen. (asi 40 radku z 500k zdrojaku) pravda, byl to ponekud specializovany program a psal jsem ho od zacatku tak, zaby byl pouzitelny, jako modul do jadra a nalepene se tam celou dobu tvarila ta user space cast ;-) DNS NAT... budu si muset nekdy udelat cas to dotahnout do konce a procpat do kernel.orgu. v podstate jde o jedine... zapomente na /usr/include a man stranky mimo sekci 2. gcc vzdy preventivne dejte "-I-" -I/nekde/linux/include a mejte hodotvy .../include/config/... konfig a ...include/linux/version.h
Stanislav Brabec avatar 2.12.2003 15:49 Stanislav Brabec | skóre: 45 | Praha
Rozbalit Rozbalit vše shared memory #include v kernelu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Už toto je špatně:
#include < sys/types.h >
#include < sys/ipc.h >
#include < sys/shm.h >
V jádře nejsou k dispozici funkce z uživatelských knihoven. Takže jedině:
#include < asm/cokoliv.h >
#include < linux/cokoliv.h >

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.