Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

blocks in gforth: Rolle des 0 BLOCK ?

0 views
Skip to first unread message

Michael Kalus

unread,
May 18, 2008, 2:34:02 PM5/18/08
to
Guten Abend.

Habe ich die Struktur der Block files im gforth richtig verstanden?
12 bytes blockverwaltung, 1024 bytes daten, usw.
Also records von 1036 bytes.

Diese 12 bytes "Verwaltung" vor jedem Block gelistet sehen zb so aus:

test2
0 0 0 0 0 - A0 0 DB E4 - FF FF FF FF -
1 0 0 0 1 - A0 0 DB E4 - 0 0 0 0 -
2 0 0 0 2 - A0 0 DB E4 - FF FF FF FF -
3 0 0 0 3 - A0 0 DB E4 - 0 0 0 0 -
4 0 0 0 4 - A0 0 DB E4 - 0 0 0 0 -
5 0 0 0 5 - A0 0 DB E4 - 0 0 0 0 -
6 0 0 0 6 - A0 0 DB E4 - 0 0 0 0 -
7 0 0 0 7 - A0 0 DB E4 - 0 0 0 0 -
8 0 0 0 8 - A0 0 DB E4 - 0 0 0 0 -
9 0 0 0 9 - A0 0 DB E4 - 0 0 0 0 - ok

In der Quelle blocks.fs finde ich so was:
struct
cell% field buffer-block \ the block number
cell% field buffer-fid \ the block's fid
cell% field buffer-dirty \ the block dirty flag
char% chars/block * field block-buffer \ the data
cell% 0 * field next-buffer
end-struct buffer-struct

Also:

Die ersten 4 bytes = cell enthalten wohl die Blocknummern für jeden
Bock.

Die mittlere Zelle bedeutet buffer-fid ?

Die letzte Zelle scheint immer true oder false zu sein: block dirty
flag, mit true = updated, null = not-updated.

Nach einem FLUSH sind diese Zellen alle wieder NULL.

Nur den o block verstehe ich nicht so ganz:
Sein "block dirty flag" ist nur NULL, wenn das file frisch geholt
wurde USE BLOCK.XXX und noch nicht wieder hineingeschrieben worden
ist?
Danach ändert auch ein FLUSH das "block dirty flag" vom 0 block nicht
mehr?
Erkennt gforth daran ob das file gesichert werden muss?

Zusatzfragen:
- Muss ich eigentlich das block file ausdrückllich wieder schließen zb
fid close-file ?
- Das was ich in den 0 block schreibe wird gar nicht ins file
gesichert, dh der bleibt immer leer??

Wieder mal Fragen über Fragen. Für die Antworten meinen Dank.
Grüße, Michael

0 new messages