Autor Thema: Klassendesign  (Gelesen 2896 mal)

ChristianF

  • Beiträge: 296
    • Profil anzeigen
    • DeutschOS - Betriebssystem Projekt
Gespeichert
« am: 09. February 2009, 14:43 »
Hallo,
ich habe mir vor kurzem meinen Quellcode angesehen und da ist mir aufgefallen, dass viele Klassen totaler müll sind.  :roll:
 
Aufgrund dessen habe ich erst einmal alles entfernt, bis auf die Klassen für die GDT, IDT und ISRs, denn diese sind vom Aufbau her soweit okay. Nun habe ich mich also mal mit dem PIC beschäftigt und mir dazu eine Klasse ausgedacht.
Diese hat den folgenden Aufbau:
namespace kernel
{
class pic
{
DEF_SINGLETON(pic)

private:
/* method send a Initialisation Command Word
* [Param1]: specifies the art (data (1) or command (0))
* [Param2]: value for master pic
* [Param3]: value for slave pic
*/
void send_icw(unsigned int art, unsigned int value_mpic, unsigned int value_spic);

/* mehtod send an Operation Command Word
* [Param1]: specifies the art (data (1) or command (0))
* [Param2]: value for master pic
* [Param3]: value for slave pic
*/
void send_ocw(unsigned int art, unsigned int value_mpic, unsigned int value_spic);

/* method waits for an interrupt */
void io_wait(void);
public:
/* method initialises PIC and set the IDT entries */
void initialise(void);

/* mehtod send an "End of Interrupt" Signal
* [Param1]: handled interruptnumber
*/
void send_eoi(unsigned int irq);

/* method initialises PIC with the given start-interrupts of master and slave
* and disable all IRQs
* [Param1]: Interruptnumber where the master pic starts
* [Param2]: Interruptnumber where the slave pic starts
*/
void remap(unsigned int masterpic, unsigned int slavepic);

/* method masks (activates) an IRQ
* [Param1]: Interruptnumber which should be activated
*/
void mask_irq(unsigned int irq);

/* method unmasks (deactivates) an IRQ
* [Param1]: Interruptnumber which should be deactivated
*/
void unmask_irq(unsigned int irq);
};
}
Meine Frage nun an euch, was haltet ihr von diesem Aufbau? Habe ich vielleicht irgend etwas vergessen oder ist etwas in der Klasse, was nicht hinein gehört?
 
 
Gruß
Christian

Jidder

  • Administrator
  • Beiträge: 1 625
    • Profil anzeigen
Gespeichert
« Antwort #1 am: 10. February 2009, 17:10 »
Wenn du damit alles machen kannst, was du machen willst, dann reicht die Klasse. Der PIC ist ja eh nicht sehr zentral, viel Probleme in deinem Klassendiagramm (wenn du denn eins hast ...) kann der nicht verursachen.
Dieser Text wird unter jedem Beitrag angezeigt.

ChristianF

  • Beiträge: 296
    • Profil anzeigen
    • DeutschOS - Betriebssystem Projekt
Gespeichert
« Antwort #2 am: 17. February 2009, 14:54 »
Der PIC ist ja eh nicht sehr zentral, viel Probleme in deinem Klassendiagramm (wenn du denn eins hast ...) kann der nicht verursachen.
gut, die Klasse ist mittlerweile so eingebaut.
 
Trifft die Aussage mit der nicht zentralen Lage auch auf den APIC zu? Ich meine hier den local APIC, da ich mein Betriebssystem erst einmal für ein Einzelkern-System programmiere und aus diesem Grund den I/O APIC vernachlässige... :wink:
 
Gruß Christian

 

Einloggen