Beiträge anzeigen

Diese Sektion erlaubt es dir alle Beiträge dieses Mitglieds zu sehen. Beachte, dass du nur solche Beiträge sehen kannst, zu denen du auch Zugriffsrechte hast.


Themen - Svenska

Seiten: [1] 2
1
Offtopic / Hardware selbstgebaut
« am: 23. November 2013, 03:30 »
Hallo,

unten gibt's mal drei Bilder von meinem (Kupferlack-)Drahthaufen.
Da drin laufen ein Z80A (max. 4 MHz, NMOS) als Hauptprozessor und ein ATmega328P als Board-Controller, serielle Schnittstelle und 24 KB "Massen"speicher (später nur Startup-Code), außerdem Timer. Die kleine Steckkarte stellt 32 KB SRAM bereit.
Das Betriebssystem ist im Augenblick CP/M 2.2.

2
Offtopic / Das war's - verabschieden wir uns vom 80386.
« am: 14. December 2012, 00:01 »
Hallo,

Linux 3.8 wird keine Unterstützung mehr für den 80386 haben. Aktuelle Versionen von FreeBSD unterstützen den 80386 ebenfalls nicht (wenn man "386" auswählt, bekommt man "486"), gleiches gilt für NetBSD. Die GCC-Leute diskutieren gerade, den Support ebenfalls einzustellen. Die nächste bzw. übernächste Version von GCC dürfte den Support also nicht mehr bereitstellen.

Die letzte neu verfügbare CPU, die nicht 80486-kompatibel ist, dürfte vermutlich der Vortex86SX mit 300 MHz sein (nicht der Vortex86DX). Der 80386 unterstützt die Befehle XADD, BSWAP, COMPXCHG und INVLPG nicht, die mit dem 80486 eingeführt wurden und für atomische Operationen notwendig sind. Eine gleichzeitige Unterstützung von "80386" und "SMP-kompatibel" in einem Betriebssystem ist nicht möglich und fehlerhafter Code wird auf 80486+ fehlerfrei ausgeführt.

Damit stellt sich die Frage nicht mehr, ob man den 80386 in seinem Hobby-OS noch unterstützen sollte.

Gruß,
Svenska
3
Offtopic / ARM-Systeme
« am: 10. January 2012, 01:20 »
Hallo,

nachdem hier verstreut schon einige Dinge in Bezug auf ARM umhergeflogen sind, würde ich das gerne mal an einer Stelle sammeln wollen, statt jeden Thread damit zu töten. :-P

Grund: Phoronix hat ein ARM-System mit Ubuntu mal auf Performance getestet (hier). Es handelt sich um ein CompuLab Trim-Slice (Mini-Desktop) mit Dual Cortex-A9 (1 GHz Tegra2) mit GBit-Ethernet und SATA - und ist nicht zugenagelt.

Aufs Raspberry Pi müssen wir wohl noch länger warten. :-(

Gruß,
Svenska
4
OS-Design / ACPI - Referenzimplementation
« am: 31. January 2011, 16:57 »
Moin,

ACPI ist ja bekanntermaßen fies, deswegen nutzt es hier keiner.

Es gibt aber eine OS-unabhängige Referenzimplementation namens ACPICA, die man unter http://www.acpica.org/ finden kann; das Teil steht unter Dual-Lizenz (eine proprietäre und GNU GPL Version 2); ist also für Open-Source und für Closed-Source-Betriebssysteme geeignet.

Der OS-spezifische Teil besteht aus ca. 25-30 Funktionen, die das OS bereitstellen muss (z.B. "AcpiOsMapMemory" oder "AcpiOsAllocate"). Das OS muss drei Bedingungen erfüllen:
(a) man muss den OS-spezifischen Teil implementieren
(b) man muss im Startup-Code seines OS die ACPI-Initialisierung aufrufen
(c) das OS muss entweder in C geschrieben sein oder Schnittstellen zu C-Code aufbauen können

Wer also ACPI haben möchte, findet dort bestimmt eine Menge Hilfe.

Gruß,
Svenska
PS: Ja, der Link stand schon vorher im Wiki.
5
OS-Design / Adressraum für Kernel und Prozesse
« am: 06. November 2010, 17:40 »
Hallo,

die Frage lautet und ergab sich aus der Diskussion mit FlashBurn an anderer Stelle:

Warum liegt der Kernel üblicherweise im virtuellem Adressraum eines jeden Prozesses?


Meinst du das du den Funktions-Code von einer Kernel-Funktion in den UserSpace mappst und dort dann vom "User" der Code ausgeführt werden kann?
Nicht wirklich... allerdings hab ich keine Ahnung, was ich meine.

Der Prozess fordert einen ausgerichteten Buffer vom Kernel an und merkt sich dessen Zeiger. Dann füllt er diesen mit Daten, setzt die Register (Funktionsnummer, Zeiger auf Buffer, Buffergröße) und ruft dann einen Syscall auf (z.B. "int 80h"). Kann der Kernel dann mit diesem Zeiger etwas anfangen, also den entsprechenden Bereich in seinen eigenen Adressraum mappen und verarbeiten?

Gruß,
Svenska
6
Offtopic / Eigene CPU
« am: 17. March 2010, 23:57 »
Hallo,

vor langer Zeit gab es ja mal den Thread "Verrückter als wir...?", den ich hiermit neu erstehen lassen möchte.

Wer baut seine eigene CPU und warum? Und wie? Welche Designziele sind vorgegeben?

Da erik.vikinger ein paar Andeutungen gemacht hat, sind wir schonmal zwei mit solchen Plänen.

Für meine Architektur (ich werde die CPU wohl nicht vom Gesamtsystem trennen) habe ich mir folgende Designziele überlegt:
- in TTL realisierbar (das ist das Endziel)
- nahezu 1 MIPS/MHz (klassisch RISC, macht die Implementation einfacher, da ich die Befehle einzeln implementieren möchte)
- Befehlssatz ähnlich MIPS, aber mit MAC-Befehl (Multiply & Accumulate)
- mindestens 16 MB RAM möglich (weniger ist doof)
- wahrscheinlich 12/24 Bit Busbreite
- keine EPROMs zur ALU-Realisierung

Warum? Ich möchte gerne mein eigenes System zum Anfassen haben. Hat den Vorteil, dass man immer sagen kann "ich könnte, wenn ich wollte... da ist ein Beispiel" :-P Außerdem lernt man so viel mehr über Schaltungsentwicklung und Rechnerarchitekturen, als man vorher wollte.

Wie? Naja, derzeit entwickle ich halt ein bisschen den Befehlssatz, immer mal wieder, und habe so quasi-diffuse Vorstellungen, wie man gewisse Teile implementieren kann. Bevor ich aber Platinen ätze, möchte ich das ganze erst noch simulieren (möglichst in einem FPGA), da müsste ich mich aber auch erst einarbeiten. Zur RAM-Adressierung schwebt mir zZt eine Art Banking-System vor, quasi Segmentierung in Hardware.

Als Betriebssystem würde ich mich bevorzugt nach POSIX richten, als Compiler-Backend eventuell einen LLVM umsetzen. Da habe ich gehört, dass es recht einfach sein soll. Ist aber alles noch Zukunftsmusik.

Meldet euch zu Wort!

Gruß,
Svenska
7
Lowlevel-Coding / Assembler-Programm will nicht...
« am: 14. February 2007, 20:51 »
Hallo,

ich versuche ein Programm (NASM als Assembler) zu schreiben, welches eigentlich ganz simpel ist:
-> Einen 64 KB-Puffer bereitstellen
-> darin 64 KB einer Datei lesen
-> diese Datei an LPT1 senden (direkt über die Ports).

Hintergrund: An LPT1 (Basisport 0x378) hängt ein DAC, mit dem ich Audiodaten an einen Verstärker senden kann. Timing spielt (noch) keine Rolle, das kann ich mit einer Schleife vorerst verzögern.

Mein Problem: In dem Moment, wo ich den int 21h aufrufe, bricht mein gesamtes Programm zusammen. Den Code zum Berechnen der aktuellen Programmgröße habe ich aus dem Netz.

Vielleicht kann mir jemand helfen; ich poste einfach mal den gesamten Code.

;------------------------------------
;- PLAYER                           -
;- Play RAW audio files on DAC/LPT1 -
;------------------------------------
org 100h

; set program's memory size to 64K (limit of "tiny" COM files) - CS=DS=ES=SS
        mov bx,ss
        mov ax,es
        sub bx,ax
        mov ax,sp
        add ax,14h
        shr ax,4
        add bx,ax
        mov ah,04ah
        int 21h

; get memory (64K)
        mov ah,48h
        mov bx,1000h    ; 4096 * 16 Bytes = 64 KBytes
        int 21h
        push ax

; open the file
        mov ah,3Dh
        mov al,0        ; read only
        mov dx,FILENAME ; ds:dx = ASCIIZ filename
        int 21h
        jc err_fopen
        mov [FILEHANDLE],ax

pop ds                  ; new DS => DS:BX addresses file buffer

; main program loop
;===================
beginmain:
        ; read (next) 64K of file
        mov ah,3Fh
        mov bx,[cs:FILEHANDLE]
        mov cx, 0ffffh
        mov dx,0
        int 21h
        jc err_fread

mov ah,09h
mov dx,msg_debug
int 21h

        mov bx,0                ; begin at address 0 of buffer
        mov dx,[BASE_ADDR]      ; dx = BASE_ADDR

        play:
                mov al,[ds:bx]
                out dx,al
                inc bx
                loop play

endmain:
;===================
; end main loop

; close the file
        mov ah,3Eh
        mov bx,[FILEHANDLE]
        int 21h
        jc err_fclose

; deallocate the memory
        mov ah,49h
        int 21h
        jc err_memclose

jmp end

; write error messages
err_fopen:
        mov ah,09h
        mov dx,msg_err_fopen
        int 21h
        jmp end
       
err_fclose:
        mov ah,09h
        mov dx,msg_err_fclose
        int 21h
        jmp end

err_fread:
        push cs
        pop ds
        mov ah,09h
        mov dx,msg_err_fread
        int 21h
        jmp endmain     ; end the program

err_memresize:
        mov ah,09h
        mov dx,msg_err_memresize
        int 21h
        jmp end

err_memclose:
        mov ah,09h
        mov dx,msg_err_memclose
        int 21h
        jmp end

err_memget:
        mov ah,09h
        mov dx,msg_err_memget
        int 21h
        jmp end

; exit program
end:
        mov ah,4Ch
        mov al,00h
        int 21h

msg_debug db "DEBUG",13,10,36
msg_err_fopen db "Could not open the file!",13,10,36
msg_err_fclose db "Could not close the file!",13,10,36
msg_err_fread db "Could not read the file!",13,10,36
msg_err_memresize db "Could not resize program's memory!",13,10,36
msg_err_memget db "Could not allocate enough memory (64K)!",13,10,36
msg_err_memclose db "Could not deallocate the memory!",13,10,36


FILENAME db "QUAAK.AU",0
FILEHANDLE dw 0
BASE_ADDR dw 0378h
HAVE_NEXTBLOCK db 0

Warum ich nicht in einem Segment bleiben möchte? Wenn ich mit 48h Speicher beschaffe, ist der unabhängig vom Programm und ich kann darauf dann eine Interrupt-Routine draufschmeißen. Außerdem kann ich so den Puffer maximieren.
Achja: Bitte keine 32-Bit-Addressierungen verwenden, das Gerät ist ein 286er.

Gruß,
ein völlig korrupter
Sebastian
8
OS-Design / Kernel in Pascal
« am: 08. February 2007, 13:44 »
Hallo,

um den anderen Thread nicht zu sehr ins OT zu treiben, weiter hier.

Zitat
Zitat
@taljeth: Du schriebst, dass du einen Kernel in Pascal angefangen hast. Irgendwie kann ich mir das nicht zu richtig vorstellen, wie das funktioniert (ich kenne nur Delphi). Welche Software (Compiler) benutzt du dafür? Kannst du mir einen kleinen HelloWorld-Bootloader mal darin programmieren?
Bootloader? Ne, laß mal, dafür nimmt man Assembler... Ich benutze eigentlich immer GRUB. Für den Kernel habe ich FreePascal benutzt. Ich kann dir auch mal einen kleinen Beispielcode geben, wenn ich daheim bin.
Das wäre nett.
Mit HelloWorld-Bootloader meinte ich einfach einen Code, der "hello world" ausgibt und direkt von Diskette geladen werden kann (wenn's möglich ist). Damit ich nen Einblick kriege, wie es gehen kann.

Gruß,
Svenska
9
Offtopic / Pi
« am: 11. December 2006, 20:29 »
Vielleicht mal etwas Off-Topic, hier ist ja nichts los: http://pi.ytmnd.com/
10
Offtopic / IBM TCP/IP 1.21 ?
« am: 03. December 2006, 17:39 »
Hallo,

ich habe hier nen alten 286er Laptop (nicht Notebook), auf dem z.Zt. Windows 3.1 (Standardmodus) und Minix 2.0.4 laufen. Für dieses System bin ich auch dabei, ein OS zu schreiben. Bis auf den Bootloader ist aber noch nichts geschehen.
Allerdings habe ich einen Diskettensatz Microsoft OS/2 1.31 gefunden und gleich ausprobiert -> läuft prima :-)

Aber die Netzwerkunterstützung gibt es da nicht zu, obwohl es die Serverversion ist ... daher meine Frage:

Weiß jemand, wo ich das Paket IBM TCP/IP 1.21 (oder 1.2) herbekommen kann? Also Images?

Gruß,
Svenska
11
Lowlevel-Coding / Übersicht Protected Mode 80286
« am: 29. August 2006, 19:01 »
Hallo nach langer Zeit,

ich habe mal die Registerinformationen für den 80286 zusammengestellt.
Quelle: Das PC-Hardwarebuch, 6.Auflage.

Warum nicht den 386er? Ich hab einen 286er Laptop hier :)

Link: http://www.bastisoft.de.vu/shared/80286-Protected-Mode.pdf

Ich hoffe, es ist soweit vollständig. Wenn etwas wichtiges fehlt, dann gebt bitte einen Hinweis. Möge es jemandem nutzen :)

Gruß,
Svenska
12
Offtopic / Assemblercode nach Windows-Ende ausführen?
« am: 08. June 2006, 15:34 »
Hallo,

ich habe ein altes Notebook und dafür gibt es ein Programm, was dieses ausschaltet. Da es APM nicht unterstützt, schaltet Windows 95 das Gerät nicht ab, sondern es kommt die normale "Sie können den Computer jetzt ausschalten"-Meldung.
Nun habe ich eine .com-Datei, die das Notebook abschaltet - funktioniert auch prima unter Windows (Doppelklick => SSSSssss....). Daher möchte ich, dass Windows erst herunterfährt (am Besten über Start>Ausführen) und danach zwei Interrupts auslöst.

Wo kann ich das eintragen bzw. einpatchen?
Welche Datei zeigt das "Sie können..." an?

Gruß,
Svenska
13
tyndur / Unterstützung von Disk Managern?
« am: 10. May 2006, 13:24 »
Hallo,

wird LOST in der Lage sein, Diskmanager korrekt anzusprechen?
Meine Testplattform wäre ein Toshiba T4600C und die Festplatte ist nur mit dem Ontrack-DM korrekt ansprechbar.

Wenn eine Partition auf der Platte vom Ontrack-DM-Typ ist, könnte man das recht einfach bewerkstelligen; der Treiber müsste nur einen 63-Sektoren-Offset bei jedem Zugriff dazuaddieren. (On genau ein Cylinder oder definitiv 63 Sektoren, weiß ich nicht.)
Ein anderer DM (Name vergessen) verlangt einen Offset von 1 Sektor (ob nur für Cylinder 1/Head 1 oder allgemein, weiß ich nicht.)

Gruß,
Svenska
14
Offtopic / Kernel statt BIOS?
« am: 30. November 2005, 12:28 »
Hallo,

ich habe einen P.U.M.P. (Parallel Universe MP3 Player). Dieser ist in einem 486er verbaut und funktioniert in etwa so: Ich schicke einen MP3-Datenstrom an den Parallelport und dieser wird dann abgespielt, die Decodierung wird also vom PUMP erledigt.

Dazu habe ich mir ein Gehäuse gebaut mit einem 486er AT-Gehäuse, 33 Mhz und 1 MB RAM (reicht völlig). Da der Rechner den POST nicht verkürzen kann (zählt immer 5x den RAM hoch), dauert allerdings der Systemstart ziemlich lange. Dann wird von der Festplatte (IDE) ein DOS geladen, was dann das eigentliche Abspielprogramm startet.

Die Bootzeit von fast 2 Minuten nervt allerdings unheimlich, weil das BIOS elendig lange braucht, um den RAM hochzuzählen und die Hardware zu initialisieren.

Daher hatte ich den Gedanken, einen sehr kompakten, minimalen Kernel in den BIOS-EPROM zu brennen und damit direkt die wesentlichen Komponenten zu initialisieren und zu benutzen. Das hätte außerdem den Vorteil, dass ich keine Grafikkarte bräuchte (das BIOS verweigert das Booten ohne Graka) und halt das Booten sehr viel schneller vonstatten ginge.

Brauchen würde ich:
=> eine serielle Schnittstelle (Konsole)
=> eine parallele Schnittstelle (PUMP)
-- das dürfte sich relativ einfach implementieren lassen --
=> IDE-Interface (ATA & ATAPI, also HD & CD)
=> Netzwerkschnittstelle (RTL8029, 10 MBit ISA)

und entsprechende Dateisysteme natürlich (iso9660, joliet, minix, nfs?)

--------------

Daher meine Frage: Geht das?
Ich erinnere mich düster, dass es ein Projekt Linux im BIOS-Chip gab, aber ich finde es nicht mehr :-(

Wo würden die größten Probleme liegen?

Gruß,

Svenska
15
Offtopic / Visual Basic 6 - Problem
« am: 14. August 2005, 22:06 »
Hallo,

ich weiß zwar nicht, ob jemand mir hier helfen kann, aber ich hab ein ziemlich ekliges Problem, was ich nicht so recht in Worte fassen kann.

Ich versuche einen ICQ-Clienten zu schreiben in VB (nicht .net, hab ich nicht) und muss dafür - Binärprotokoll - mit den einzelnen Bytes selbst rumhantieren. Da tauchen mir einige Sorgen schon ganz am Anfang auf.

Wenn ich die Bytes mittels Chr$()-Anweisungen als Strings hintereinander hänge ... kriege ich da Probleme mit Ansi-Ascii-Unicode-Umwandlungen, die intern und hinter meinem Rücken passieren oder nicht? Daher möchte ich das möglichst vermeiden, da die Software auch unter '95 möglichst noch laufen sollte.

Dann habe ich ein Problem, wenn ich die Daten einfach aneinander hänge. Die FLAP-Header enthalten eine Größenangabe, an die ich so einfach nicht rankomme (beim Erzeugen). Das ist 6 Bytes plus die Daten.

Wenn ich FLAPs als Types implementiere, habe ich das Problem mit der dynamischen Größe. Wenn ich den Dateneintrag weglasse (also bytStart, bytChannel, intFortlaufendeNummer und intGröße) habe ich sechs Bytes. Tue ich nun ein strDaten *1 dazu, komme ich auf 7. Aber ich brauche dynamisch lange Strings und wenn ich den einbinde, belegt er - ohne Inhalt - bereits 4 Byte. Damit kann ich die Struktur in die Tonne treten, da ich ja exakt diese Bytes auf die Leitung schaufeln muss und dazu die Verwaltungsinformationen entfernen muss.

Daher meine Frage: Hat jemand eine Idee, wie ich sowas hinkriegen kann?

C oder C++ kommen für mich nicht in Frage, da ich die Sprachen nicht kann (und bisher auch nicht lernen will). Assembler auch nicht so recht mit Winapi und MFC und so in Asm proggen is doch etwas heftig. Außerdem müsste ich mich dann mit Abstürzen durch Unvorsichtigkeit rumschlagen.
Delphi kann ich zuwenig um überhaupt etwas hinzukriegen (lerne ich dieses Jahr aber in der Schule).

Andere Variante wäre QBasic, aber da krieg ich kein Netzwerk hin.

Kann mir jemand helfen? Bitte =D>

Svenska
16
Lowlevel-Coding / Verdammtes Timing...
« am: 23. June 2005, 17:36 »
Mein Anliegen ist folgendes:

Ich habe mir laut einem Schaltplan einen DAC für den Parallelport (auch Covox Speech Thing genannt) gebastelt zur Soundausgabe für mein Notebook (486/33).
Da das Gerät keinen Puffer hat, muss ich also relativ timing-kritisch programmieren, um Originaltempo zu erhalten. Mein bisheriges Programm hatte kein Timing, lief etwas zu schnell. Dann habe ich die Handbremse gelöst (statt 1 Byte lese ich 64 auf einmal ein) und es war _viel_ zu schnell. Auf meinem Athlon hör ich garnix mehr :(
Darum möchte ich ein neues Prog schreiben mit Timing drin.

Meine Testdatei hat 8 Bit und 11.025 kHz (Mono). Liege ich richtig, wenn ich dann 11.025 Bytes je Sekunde auf den Parallelport schicken muss?
Einen Mod-Player (für DOS) kann ich mit bis zu 36 kHz benutzen, einen anderen bis 48 kHz. Unter Windows 3.1 schaffe ich nur 22 kHz, da ist dann wohl der Prozessor etwas zu träge (und MP3's sind fast ohne Aussetzer :roll:)

Ich vermute mal, dass ich einen Interrupt umbiegen müsste, wahrscheinlich den Timer-Interrupt. Leider kackt mir dabei immer der gesamte Rechner ab und ich habe keinen Schimmer, wieso...

Kann mir jemand ein Tutorial für Int-Verbiegereien (unter DOS) empfehlen oder sagen, wie man das korrekt angeht?
Ich vermute, dass ich irgendwie den Original-Int versaue.

Ach ja, Sprache ist Assembler mit NASM für DOS/16.

Sebastian
17
Offtopic / Ein Schlag fuer alle Macianer
« am: 06. June 2005, 20:27 »
Frisch aus dem Arcor-Newsticker (www.arcor.de):
Zitat
06.06.2005, 20:02 Uhr
Apple wechselt zum Chipausrüster Intel
San Francisco (dpa) - Der Computerhersteller Apple hat mit dem weltgrößten Chiphersteller Intel eine Partnerschaft geschlossen und damit einen historischen Wechsel vollzogen. Im kommenden Jahr werde Apple beginnen, seine Macintosh-Computer mit Prozessoren von Intel auszustatten, sagte Apple-Chef Steve Jobs auf der Apple Entwicklerkonferenz in San Francisco. Bereits Ende 2007 sollen alle Macs über entsprechende Intel-Chips verfügen. Damit beendet Apple seine langjährige Partnerschaft mit dem Technologiekonzern IBM.
18
OS-Design / Zum Thema Mikrokernel
« am: 25. May 2005, 19:53 »
Ich hab mal nen Beitrag gefunden auf einer Webseite, wo das nur nebenbei erwähnt wurde. Gibt mir aber sehr zu denken.

Quelle: http://www.edugrid.ac.in/webfolder/courses/os/os_faq14.htm

4. Microkernel
[...]
AmigaOS, for example, was a microkernel - and an unusual one: Since AmigaOS had no memory protection, its messaging was as quick as it could get (passing a pointer to memory), making the AmigaOS kernel one of the fastest ever devised. On the other hand, that lack of memory protection also meant that the microkernel architecture gave no added stability…
[...]

Vielleicht ist das eine Möglichkeit, das letzte aus der Hardware herauszuholen?

Svenska
19
Offtopic / Ascii drucken *kotz*
« am: 04. May 2005, 15:23 »
Hallo,

ich hab mal nen Problem. Hab mir das Programmierhandbuch vom '286er
gezogen und will das Teil jetzt in der Schule ausdrucken. Blöderweise ist
das eine einfache Textdatei (habs ma hier hochgeladen)
im Ascii-Format mit Grafikzeichen und so weiter.

Wie kriege ich das Ding jetzt nach Möglichkeit vollständig auf dem
Win2003 Server (Terminal) ausgedruckt? Eine DOS-Textverarbeitung
funktioniert nicht, also bräuchte ich ein Windows-Programm. Der Word-
Filter spuckt auch nur Muell aus (die Grafiken zum Speicherlayout und so
sind komplett Schrott) und ohne Filter sieht man da schicke Umlaute.

Kann mir wer helfen... das sind 260 Seiten die ich viel lieber auf Papier
hätte... oder kann mir jemand das Teil als PDF oder so besorgen?

Und dann noch... ja, das grösste... das 386er Programmierhandbuch. Aber
ohne Erweiterungen fuer SSE und HasteNichGesehen und P4-Befehle sind
mir auch zu komplex...

Bitte.

Danke.

Svenska
20
tyndur / Device-Filesystem
« am: 27. April 2005, 18:53 »
Hm, ich weiss, es ist noch sehr frueh, darueber zu sprechen, aber ich
fände es im Hinblick auf Treiber ganz nuetzlich.
Die Idee von Unix "Alles ist eine Datei" ist nämlich mit den Rawdevices
usw sehr nuetzlich, nur eben missfällt mir, dass die Devicefiles auf der
Platte gespeichert sind.

Wie wäre es, wenn der Kernel eine, oder sagen wir mal zwei, Pages
reserviert, die eine Art "Device-Filesystem" enthalten, jeweils mit einem
Namen (8 Zeichen reichen ja aus) und der Adresse, unter der der Treiber
gefunden werden kann. Jeder Treiber meldet sich dann beim Kernel an,
und der Kernel erzeugt (als einzigstes Programm, was das kann!) dann
den Eintrag. Der Treiber wählt den Namen selbst aus (net, sound) und der
Kernel hängt dann noch eine fortlaufende Nummer an (/dev/net0 etc).

Damit könnte man immer im Deviceordner nachschauen, ob ein derartiges
Gerät vorhanden bzw. der Treiber dafuer geladen ist, ohne sich um
irgendwelchen nichtvorhandenen Devices kuemmern zu muessen oder
versehentlich eine reguläre Datei unter /dev/ anzulegen und die Platte
vollzumuellen (Bsp. /dev/dsp1 als Abspielgerät und solche Scherze).

Eigentlich bräuchte man dann ja nur eine Lese- und Schreib-funktion fuer
die Einträge, der Rest läuft dann ueber spezielle Treiberschluesselworte.
Datei erzeugen etc. gibt es einfach nicht - nur ne Fehlermeldung - und der
Kernel erzeugt die Einträge durch direkte Speicherzugriffe. Zwei Pages
á 4 Kb sollten dicke ausreichen (512 Einträge bei 8 Zeichen/Name und
8 Bytes/Adresse..., mehr Devices sollte ein PC nicht brauchen, oder?)
Oder habe ich irgendwas vergessen? Dieser Ansatz gefiele mir jedenfalls
sehr gut.

Svenska
Seiten: [1] 2

Einloggen