Autor Thema: Konzeption und Anfang  (Gelesen 16587 mal)

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
« Antwort #20 am: 17. October 2009, 14:41 »
Zitat
Was mehr als eine Vaterklasse hat, ist bei mir schon Mehrfachvererbung.
Das ist nicht ganz richtig. Wenn C von B abgeleitet ist und B von A dann ist das nur mehrfache Einfachvererbung, wenn C direkt von A und B abgeleitet ist dann ist das Mehrfachvererbung.
Schon klar, ich bin auch nicht völlig ahnunglos. ;)

Ich hätte mehr als eine direkte Vaterklasse sagen sollen. Aber das ist bei Netzwerkkarte und PCI ja eindeutig der Fall, denn nicht alle Netzwerkkarten sind PCI und schon gar nicht alle PCI-Geräte sind Netzwerkkarten.

Deine übrigen Anmerkungen sind auch sicher richtig, spielen aber momentan nicht wirklich eine Rolle. Solange sich die ganz grundlegende Struktur dadurch nicht ändert, kann man später ja immer noch ohne weiteres neue Sachen hinzufügen.
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

erik.vikinger

  • Beiträge: 1 277
    • Profil anzeigen
Gespeichert
« Antwort #21 am: 17. October 2009, 18:54 »
Hallo taljeth,


Zitat
Schon klar, ich bin auch nicht völlig ahnunglos. :wink:
Entschuldige Bitte, ich wollte auf gar keinen Fall als Oberlehrer rüberkommen.

Die übrigen Anmerkungen waren nur so um mal über den Tellerrand zu sehen. In meiner Plattform muss ich wohl auf jeden Fall PCI-Express verwenden, daher habe ich mich damit recht intensiv beschäftigt, aber z.B. das Fehlermanagement werde ich auch nur so weit wie unbedingt nötig unterstützen.


Grüße
Erik
Reality is that which, when you stop believing in it, doesn't go away.

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
« Antwort #22 am: 17. October 2009, 20:01 »
Wenn du dich sowieso damit beschäftigen musst, kannst du ja vielleicht bei Gelegenheit einen Wikiartikel dazu schreiben? PCI Express dürfte jedenfalls zu den Themen gehören, denen sich bisher kaum jemand hier gewidmet hat, die aber trotzdem eine gewisse Relevanz haben.

Und falls du dich mit CDI anfreunden kannst, wäre ich natürlich auch nicht abgeneigt, entsprechenden Code aufzunehmen. ;)
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

erik.vikinger

  • Beiträge: 1 277
    • Profil anzeigen
Gespeichert
« Antwort #23 am: 18. October 2009, 10:02 »
Hallo,


Zitat
... kannst du ja vielleicht bei Gelegenheit einen Wikiartikel dazu schreiben?
Kannst Du mal schreiben was Du in so einem Artikel alles drin haben möchtest.


Zitat
falls du dich mit CDI anfreunden kannst, ...
Das kann ich momentan noch nicht sagen, aber wenn ja dann bekommst Du gerne etwas Code ab. :wink:


Grüße
Erik
Reality is that which, when you stop believing in it, doesn't go away.

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
« Antwort #24 am: 18. October 2009, 13:27 »
Um sagen zu können, was ich in dem Artikel haben möchte, müsste ich mich mehr damit auskennen. ;) Ich dachte einfach an die Grundlagen, was anders ist als mit "normalem" PCI und wie man es benutzen kann. Und ein paar Links zu den entsprechenden Dokumenten, falls wir das noch nicht haben.
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

bluecode

  • Beiträge: 1 391
    • Profil anzeigen
    • lightOS
Gespeichert
« Antwort #25 am: 18. October 2009, 18:26 »
Der ConfigSpace wurde erweitert und es kommen neue Capabilities (gibt ja da diese schöne Linked List) dazu. Ansonsten ändert sich afaik von Softwareseite erstmal nicht wirklich was.
lightOS
"Überlegen sie mal 'nen Augenblick, dann lösen sich die ganzen Widersprüche auf. Die Wut wird noch größer, aber die intellektuelle Verwirrung lässt nach.", Georg Schramm

erik.vikinger

  • Beiträge: 1 277
    • Profil anzeigen
Gespeichert
« Antwort #26 am: 18. October 2009, 18:29 »
Hallo,


Zitat
Ich dachte einfach an die Grundlagen, was anders ist als mit "normalem" PCI und wie man es benutzen kann.
Dazu gibt es eigentlich nicht viel zu schreiben, wenn das PC-BIOS fertig ist fühlt sich PCI-Express (ebenso wie AGP und Hypertransport) für die SW genau so an wie PCI. Solange Du nicht vorhast die Geräte-Enumeration und -Konfiguration selbst durch zu führen (mal ehrlich wer hier macht das schon) brauchst Du Dich nicht mit der Link-Konfiguration, den erweiterten Bridges und anderen Dingen (die außer den BIOS-Entwicklern niemand interessieren) rumzuschlagen.
Ansonsten sind die Artikel in der Wikipedia gar nicht mal schlecht.


Grüße
Erik
Reality is that which, when you stop believing in it, doesn't go away.

Liam

  • Beiträge: 14
    • Profil anzeigen
Gespeichert
« Antwort #27 am: 19. October 2009, 13:32 »
Also ich habe mal hard-coded Interfaces eingebaut à la:

#define INTERFACE typedef struct

INTERFACE _IConsole
{

  VOID ( *ClearScreen )( VOID );
  UINT ( *PutS )( /* ... */ );
  /* ... */

} IConsole;

// I-wo im Code
VOID InitIConsole( IConsole *pIConsole )
{

  ( *pIConsole ).ClearScreen = RealClearScreenFunction; // =)
  /* ... */
  // Ich habe für Trieiber besondere Funktionen __init() und __kill definiert.

}

/* ... */
InitIConsole( &AnyNewIConsoleObject );

Was Vererbung angeht geht das hard-coded so:

INTERFACE _IAbstractDriver
{

  BOOL ( *__init )();
  BOOL ( *__kill ) ();
  /* ... */

} IAbstractDriver;

/* ... */

INTERFACE _IMyDriver
{

  IAbstractDriver Device; // habe nen #define DRIVER IAbstractDriver Device i-wo

} IMyDriver;

Ist zwar etwas Anfänger-Style, aber es tut was es soll. Ich überlege imo in der IAbstractDriver dann Daten über die Treiber, wie z.B. Namen und so, zu speichern. Dann kann man die Daten in verketteten Listen speichern.

Mir ist dieses modulare und dynamische Design sehr wichtig, da dann die Wartung relativ einfach fallen könnte.

Wie findet ihr meinen ersten Ansatz? Was lässt sich noch ausbauen?

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
« Antwort #28 am: 19. October 2009, 13:44 »
Findest du nicht, dass dieses INTERFACE den Code nur schwerer lesbar macht, weil du nicht mehr direkt hinschreibst, was du eigentlich meinst?

Ansonsten, du scheinst im Moment jedem Objekt einzeln die ganzen Funktionspointer zuzuweisen. Es wäre wahrscheinlich sinnvoller, nur eine Struktur mit den ganzen Pointern zu definieren und im Objekt nur noch auf diese Struktur zu zeigen. Man kann's aber natürlich auch so machen wie du.
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

Liam

  • Beiträge: 14
    • Profil anzeigen
Gespeichert
« Antwort #29 am: 19. October 2009, 13:48 »
Momentan ist es so, dass ich beispielsweise IConsole nur einmal habe (Stichwort Singleton) und das so mache. Wenn ich nen neues Interface Objekt erstelle muss ich eigentlich nur die InitI<Name>( I<Name> *Pointer ) aufrufen.

Ich persönlich finde INTERFACE besser, aber du hast schon Recht, wenn andere es sehen...nja. Deinen zweiten Punkt mit den redundaten Pointern werde ich beachten! Danke sehr!

Noch irgendwelche Hinweise?

 

Einloggen