Struktur 'bufx'

Zweck

Erweitert die Buf -Struktur, um neue Felder nach Bedarf aus Leistungs-und RAS-Gründen aufzunehmen.

Beschreibung

Die Struktur Bufx ist für die Verwendung durch den 64-Bit-Kernel und 64-Bit-Kernelerweiterungen verfügbar. Der 32-Bit-Kernel und die 32-Bit-Kernelerweiterungen haben nur die Option, die Struktur Buf zu verwenden.

bufx-Strukturvariablen für blockorientierte Ein-/Ausgabe

Die Struktur bufx , die in der Datei /usr/include/sys/buf.h definiert ist, enthält die folgenden Felder:

Element Beschreibung
b_flags Markierungsbits. Der Wert dieses Felds wird durch die logische OR-Operation mit 0 oder mehr der folgenden Werte erstellt:
B_Schreiben
Diese Operation ist eine Schreiboperation.
B_READ (FEHLERHAFT)
Diese Operation ist eine Leseoperation für Daten.
B_DONE
Die Ein-/Ausgabe für den Puffer erfolgt, sodass die Pufferinformationen aktueller sind als andere Versionen.
B_FEHLER
Ein Übertragungsfehler ist aufgetreten und die Transaktion wurde abgebrochen.
B_BUSJ
Der Block befindet sich nicht auf der Liste der freien Blöcke.
B_INFLIGHT
Diese E/A-Anforderung wurde zur Verarbeitung an den physischen Einheitentreiber gesendet.
B_AGE
Da die Daten wahrscheinlich nicht bald wiederverwendet werden, ziehen Sie diesen Puffer für die Wiederverwendung vor. Dieses Flag legt nahe, dass der Puffer am Anfang und nicht am Ende der Liste der freien Puffer steht.
B_ASYNC
Für diesen Block wird asynchrone Ein-/Ausgabe ausgeführt. Wenn die Ein-/Ausgabe abgeschlossen ist, den Block freigeben.
B_DELWRI
Der Inhalt dieses Puffers muss noch ausgeschrieben werden, bevor der Puffer wiederverwendet werden kann, auch wenn sich dieser Block in der Liste freier Blöcke befindet. Dies wird von der Subroutine Schreiben verwendet, wenn das System erwartet, dass bald wieder in denselben Block geschrieben wird.
B_NOHIDE (AUSBLENDEN)
Gibt an, dass die Datenseite während der DMA-Übertragung (Direct Memory Access) nicht ausgeblendet werden soll.
B_STALE
Die Daten stehen aufgrund eines E/A-Fehlers in Konflikt mit den Daten auf der Platte.
B_MORE_DONE
Wenn diese Option festgelegt ist, gibt sie dem Empfänger dieser Bufx -Struktur an, dass weitere Strukturen in der IODONE -Ebene in die Warteschlange eingereiht werden. Dies ermöglicht Einheitentreibern, alle abgeschlossenen Anforderungen zu verarbeiten, bevor neue Anforderungen verarbeitet werden.
B_AUFTEILEN
Ist dieser Parameter festgelegt, gibt er an, dass die Übertragung an einer beliebigen Stelle im Datenpuffer beginnen kann.
B_BUFX
Ein Puffer wird als erweiterte Buf -Struktur identifiziert, wenn alle folgenden Bedingungen erfüllt sind:
  • Das B_BUFX -Bit wird in derb_flagsFeld.
  • Der Zeiger, der durch erneute Kombination derbx_refptrtopFeld und diebx_refptrbotverweist auf den Anfang der Struktur.
  • Derbx_eyecatcherFeld, das angibt, ob die Buf -Struktur erweitert ist oder nicht, entspricht der ASCII-Zeichenfolge "bufx".
B_BUFX_INITIAL
Wenn diese Option festgelegt ist, gibt sie an, dass Buf erweitert wird.
b_forw Der Vorwärtszeiger für belegte Blöcke.
b_back Der rückwärts belegte Blockzeiger.
av_forw Der Vorwärtszeiger für eine Treiberanforderungswarteschlange.
av_back Der Rückwärtszeiger für eine Treiberanforderungswarteschlange.
b_iodone Jeder, der die Strategie -Routine aufruft, muss dieses Feld so definieren, dass es auf seine ausgeführte E/A-Routine verweist. Diese Routine wird auf INTIODONE Unterbrechung -Ebene aufgerufen, wenn die Ein-/Ausgabe abgeschlossen ist.
b_dev Die Haupt-und Nebeneinheitennummer.
b_bcount Die Bytezahl für die Datenübertragung.
b_un.b_addr Die Speicheradresse des Datenpuffers.
b_blkno Die Blocknummer auf dem Gerät
b_resid Das nach einem Fehler nicht übertragene Datenvolumen.
b_event Der Anker für die Ereignisliste
b_xmemd Der speicherübergreifende Deskriptor.
bx_refptrtop Die obere Hälfte des Referenzzeigers.
bx_refptrbot Die untere Hälfte des Referenzzeigers.
bx_version Die Version der Struktur Bufx .
bx_eyecatcher Das Feld enthält die Zeichenfolge "bufx", die eine einfache Identifizierung der Bufx -Struktur in KDB ermöglicht, wenn ein Speicherauszug für Daten erstellt wird, und die Strukturprüfung zusätzlich zur Verwendung des Makros BUFX_VALIDIEREN ermöglicht.
bx_flags Bufx -Flags mit einem 64-Bit-Feld, die für Bufx-spezifische Flags verwendet werden können, die noch definiert werden müssen
bx_io_priority Wenn die zugrunde liegenden Speichereinheiten keine E/A-Priorität unterstützen, wird dieser Wert ignoriert. Derbx_io_prioritymuss entweder der Wert vonIOPRIORITY_UNSET(0) oder einen Wert von 1 bis 15. Niedrigere Werte für die E/A-Priorität werden als wichtiger betrachtet als höhere Werte. Der Wert 1 wird beispielsweise als höchste Priorität und der Wert 15 als niedrigste Priorität betrachtet. Der Wert vonIOPRIORITY_UNSETist in der Datei sys/extendio.h definiert.
bx_io_cache_hint Wenn die zugrunde liegenden Speichereinheiten keine E/A-Cachehinweise unterstützen, wird dieser Wert ignoriert. Derbx_io_cache_hintmuss entweder der Wert vonCH_AGE_OUT_FASToder der Wert vonCH_PAGE_WRITE(in der Datei sys/extendio.h definiert). Diese Werte schließen sich gegenseitig aus. WennCH_AGE_OUT_FASTdefiniert ist, kann der E/A-Puffer schnell aus dem Puffercache der Speichereinheit ausgelagert werden. Dies ist in Situationen nützlich, in denen die Anwendung bereits den E/A-Puffer zwischenspeichert und redundantes Caching innerhalb der Speicherebene vermieden werden kann. WennCH_PAGE_WRITEfestgelegt ist, wird der E/A-Puffer nur in den Cache der Speichereinheit und nicht auf die Platte geschrieben.