Hallo,
ich habe mir vor kurzem meinen Quellcode angesehen und da ist mir aufgefallen, dass viele Klassen totaler müll sind.
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