Diskussion:Teil 5 - Interrupts — Änderungen 10504 → 10505

Zeile 35: Zeile 35:
 
** Welchen Code kompilierst du denn? Der Tutorial-Kernel kann es nicht sein, da gibt es weder gdt.h noch main.c. In der intr.c finde ich nur ein struct uint64_t gdt[GDT_ENTRIES]. uint64_t sollte in der Datei stdint.h definiert sein als unsigned long long int. --[[Benutzer:Hartmut|DerHartmut]] 13:54, 10. Mär. 2012 (CET) (PS: Bitte deine Beiträge immer mit <nowiki>--~~~~</nowiki> signieren - Danke!)
 
** Welchen Code kompilierst du denn? Der Tutorial-Kernel kann es nicht sein, da gibt es weder gdt.h noch main.c. In der intr.c finde ich nur ein struct uint64_t gdt[GDT_ENTRIES]. uint64_t sollte in der Datei stdint.h definiert sein als unsigned long long int. --[[Benutzer:Hartmut|DerHartmut]] 13:54, 10. Mär. 2012 (CET) (PS: Bitte deine Beiträge immer mit <nowiki>--~~~~</nowiki> signieren - Danke!)
 
*** Ich kompiliere den Tutorial-Kernel! main.c ist die Hauptdatei. gdt.h ist der Header für die GDT. Was ist da jetzt so unklar? Zu stdint.h: Wo steht, dass man das einbinden soll?? Und was für ein struct?? Ich habe folgende Zeile: <c>static uint64_t gdt[GDT_ENTRIES];</c> Das habe ich aus dem Artikel zur GDT kopiert!
 
*** Ich kompiliere den Tutorial-Kernel! main.c ist die Hauptdatei. gdt.h ist der Header für die GDT. Was ist da jetzt so unklar? Zu stdint.h: Wo steht, dass man das einbinden soll?? Und was für ein struct?? Ich habe folgende Zeile: <c>static uint64_t gdt[GDT_ENTRIES];</c> Das habe ich aus dem Artikel zur GDT kopiert!
 +
**** Erst einmal wäre ein anderer Ton recht angebracht, zweitens sollst du bitte deine Beiträge mit <nowiki>--~~~~</nowiki> signieren. Um zur Thematik zurückzukommen: [http://git.tyndur.org/?p=tutorial.git;a=tree;f=kernel;h=9caf1798cac40be757e92b9ca5900a0e944deba7;hb=HEAD Weder hier] noch [http://git.tyndur.org/?p=tutorial.git;a=tree;f=kernel/include;h=9f197d11e47eef57d631a5395315b15b163979a5;hb=HEAD hier] finde ich eine main.c oder gdt.h - und das ist der Tutorial-Kernel. Unklar ist mir das deshalb, weil ich den Code deiner main.c und gdt.h nicht kenne - woher die auch immer kommen mögen. Stimmt, es ist kein struct sondern ein static, also lautet die Zeile in der Datei intr.c "static uint64_t gdt[GDT_ENTRIES];". Wo steht, dass man die stdint.h einbinden soll? Steht natürlich nirgends - als versierter C-Programmierer weiß man aber, dass ein uint64_t nicht aus dem Nichts kommt. Wenn man ein natives Programm programmiert bindet man die stdint.h ein, die die libc liefert. Wenn man ein OS programmiert und sich keiner libc bedient muss man selbst irgendwo ein uint64_t definieren - idealerweise in einer Datie namens [http://git.tyndur.org/?p=tutorial.git;a=blob;f=kernel/include/stdint.h;h=98ad321ff9de3744fe946a02b1650deb9e9dfae3;hb=HEAD stdint.h], um auch schön konform zu bleiben. Die Datei intr.c, die wohl im entferntesten mit deiner gdt.h verwandt ist, bindet die stdint.h übrigens [http://git.tyndur.org/?p=tutorial.git;a=blob;f=kernel/intr.c;h=ee353b47a1613c72dcece0ddf2f53cf322d9dd5f;hb=HEAD#l1 '''recht deutlich'''] ein. Wenn du weitere Fragen hast zu der Thematik kannst du auch gerne in den [[IRC]] kommen - wir befinden uns im EUirc (irc.euirc.net) im Kanal #lost. Dort wird man weitere Fragen deinerseits mit Sicherheit gerne beantworten. --[[Benutzer:Hartmut|DerHartmut]] 22:39, 13. Mär. 2012 (CET) (PS: Stures kopieren hat noch keinem geholfen)