mboost-dp1

Hvordan fungerer linux kernel??


Gå til bund
Gravatar #1 - Qw_freak
16. jul. 2012 09:44
Jeg har et problem... Jeg kan ikke rigitgt finde sammenhængen mellem koden og gereringen af enkelte filer (programmer).

Sidder lige nu og kigger på suspend mode. For at bruge denne, echoer jeg enten "standby" eller "mem" til filen 'state'.. (/sys/power/state)

mit problem er at jeg ikke kan se hvor state filens main-del er placeret.

Deraf mit spørgsmål:

Hvordan definerer man i linux kernel development at man vil have en fil med et ønsket navn, startende fra den fil man vil buge som "main.c" ???

Note* arbejder på en embedded linux til i.MX53..
Gravatar #2 - kasperd
16. jul. 2012 10:10
Qw_freak (1) skrev:
Hvordan definerer man i linux kernel development at man vil have en fil med et ønsket navn, startende fra den fil man vil buge som "main.c" ???
Jeg synes ikke spørgsmålet giver ret meget mening. Hvad der findes af filnavne er noget filsystemet må finde ud af. Du kan se i /proc/mounts (eller den forbedrede /proc/self/mountinfo) hvilke filsystemer der er mountet hvor.

Når du har fundet ud af hvilket filsystem du er interesseret i, så kig på koden til det specifikke filsystem.

Der er en række virtuelle filsystemer hvor forskellige dele af kernen kan registrere sig for at oprette virtuelle filer.
Gravatar #3 - Qw_freak
16. jul. 2012 10:44
Det jeg mangler er nok et grundlæggende syn på hvordan kernen skal bygges, skulle jeg tilføje et nyt modul...

kasperd (2) skrev:
Jeg synes ikke spørgsmålet giver ret meget mening.

Tror desværre det afspejler sig i min endnu spæde forstand på emnet!

jeg vil bare meget gerne vide hvor 'state' - filen starter, så jeg kan implementere en ny pmic driver til systemet, så min device kan gå i susprnd mode..

og generelt vil jeg gerne vide hvordan jeg selv laver en ny fil som bliver bygget med i kernen som evt bare udskriver hello world..

Gravatar #4 - Qw_freak
16. jul. 2012 10:49
Kan man se kernen sim en stor 'fil', som henter og bruger modulerne i filsystemet som bygges ved siden af?
Gravatar #5 - hundeboll
16. jul. 2012 10:51
#1 Qw_freak:

Linux kernens "main()" ligger dybt begravet i boot-up koden, som i princippet bliver loadet og kaldt af bootloaderen (sikkert uboot i dit tilfælde)... Fra denne "main()" kaldes der (blandt meget andet) initialiseringsfunktioner i en række subsystemer (netværk, powermanagement, drivers, scheduler, osv). Disse initialiseringsfunktioner kalder så initialiseringsfunktioner i en masse mindre subsubsystemer.

Eller...

Linuxkernen kalder en bestemt funktion når en modul (driver) loades.

I dit tilfælde bliver powermodulets initialisertingsfunktion enten kaldt et sted i rækken af init-kald. Denne init-funktion stikker så sine lange fingre ind i sysfs-filsystemet og opretter en (virtuel) mappe i /sys/power og opretter derefter en række filer i denne mappe. Hele den magiske sovs findes lige akkurat her.

#3 Qw_freak:
Hvis du skal bygge dit eget kernemodul, så mangler du åbenlyst noget helt grundlæggende viden. Det _eneste_ rigtige at gøre, at at læse denne bog - det er "linux-driver-BIBLEN, den er skrevet i en pædagoisk letlæseligt tone og bruger masser af eksempler. Efterfølgende kan den bruges som opslagsværk.
Gravatar #6 - Qw_freak
16. jul. 2012 11:39
hundeboll (5) skrev:
Hvis du skal bygge dit eget kernemodul, så mangler du åbenlyst noget helt grundlæggende viden.


tak for info, men jeg skal ikke bygge mit get modul, jeg skal "bare" implementere suspend funktionerne fra den nye pmic, som der allerede er en driver til...

og ja, mangler helt klart et overbliikmover hvordan det hele fungerer....
Gravatar #7 - stekkurms
19. jul. 2012 17:40
Qw_freak (6) skrev:
jeg skal ikke bygge mit get modul, jeg skal "bare" implementere suspend funktionerne fra den nye pmic, som der allerede er en driver til...
Hvad er et get modul og hvad er en pmic?
Gravatar #8 - Qw_freak
19. jul. 2012 17:52
stekkurms (7) skrev:
Qw_freak (6) skrev:
jeg skal ikke bygge mit get modul, jeg skal "bare" implementere suspend funktionerne fra den nye pmic, som der allerede er en driver til...
Hvad er et get modul og hvad er en pmic?

mit eget modul, stavefejl.


En pmic er en HW enhed der koordinere strømmen til alle hw modulerne, at kunne styre den korrekt betyder at du kan få større indflydelse på hvor meget strøm der bruges aka, bedre batteritid.

Gravatar #9 - Skum
30. jul. 2012 16:00
Men det lyder da som om du skal pille i et allerede eksisterende modul, altså pmic modulet? I så fald skal du vel patche de filer der hører til det pågældende modul og recompile kernen? Ellers som nævnt er LDD3 (som der dog er noget outdated ifht. nyere kernels, især nu hvor BKL er væk) virkeligt god. De shortcomings den har, kan man næsten altid lure af ved at kigge på nuværende driveres kildekode.
Gå til top

Opret dig som bruger i dag

Det er gratis, og du binder dig ikke til noget.

Når du er oprettet som bruger, får du adgang til en lang række af sidens andre muligheder, såsom at udforme siden efter eget ønske og deltage i diskussionerne.

Opret Bruger Login