accel_compress Subroutine
Zweck
Komprimiert Daten mithilfe der Hardwarebeschleunigten Speicherkomprimierung.
Syntax
Beschreibung
Bei einem Zeiger auf einen Puffer mit zu komprimierenden Daten komprimiert die Subroutine accel_compress die Daten in dem Puffer, auf den der Parameter c_buf verweist.
- Der Parameter uc_buf und der Parameter c_buf überschneiden sich nicht. Eine Überlappung führt zu einem Fehler.
- Die Parameter uc_buf und c_buf müssen mindestens an einer 128-Byte-Grenze ausgerichtet werden. Für die besten Ergebnisse müssen die Parameter uc_buf und c_buf an einer 4096-Byte-Grenze ausgerichtet werden.
Die Parameter c_len und * uc_lenp sind auf maximal 1044480 Byte pro Subroutinenaufruf begrenzt, wenn Puffer an einer 4096-Byte-Grenze ausgerichtet sind. Für Puffer, die nicht an einer 4096-Byte-Grenze, aber an einer 128-Byte-Grenze ausgerichtet sind, sind die Parameter c_len und * uc_lenp auf 1040384 Byte pro Subroutinenaufruf und jeden Ausrichtungsabstand von einer 4096-Byte-Grenze begrenzt.
- Die Parameter uc_len und c_lenp müssen ein Vielfaches von 8 Byte sein.
- Die Zuordnung von Dateisegmenten mit der Funktion shmat () und der Funktion mmap () ist nicht zulässig. Die Zuordnung von Nicht-Dateisegmenten mit der Funktion shmat () und der Funktion mmap () ist jedoch zulässig (z. B.MMAP_ANONYMOUS).
- Der Aufrufende ist für die Bereitstellung eines ausreichend großen c_bufverantwortlich.
Die Subroutine verwendet den Algorithmus 842, um die Daten zu komprimieren. Der komprimierte Puffer enthält eine zyklische Blockprüfung (CRC), die von der Subroutine accel_decompress () automatisch überprüft wird. Die Funktionen Active Memory Expansion (AME) und Active Memory Sharing (AMS) dürfen nicht für die Verwendung dieses Aufrufs aktiviert sein. Die Subroutine unterstützt 32-und 64-Bit-Anwendungen. Die Subroutine kann über einen Einzel-oder Multithread-Prozess aufgerufen werden.
Hardwarebeschleuniger sind eine begrenzte Ressource auf jedem System und Sie müssen darauf achten, die Beschleuniger nicht zu überfordern. Wenn Sie über einen großen Pool von Threads verfügen, die alle um einige der verfügbaren Akzeleratoren konkurrieren, können Sie mit einer schlechteren Leistung als mit reiner Softwarekomprimierung enden.
Parameter
| Element | Beschreibung |
|---|---|
| uc_buf | Zeiger auf Eingabepuffer mit zu komprimierenden Daten. |
| uc_len | Länge der zu komprimierenden Daten im Parameter uc_buf . |
| c_buf | Zeiger auf Puffer, der mit komprimierten Daten geschrieben wurde. |
| c_lenp | Zeiger auf Ein-/Ausgabeparameter. Bei der Eingabe ist der Parameter c_lenp die verfügbare Gesamtgröße im Parameter c_buf und beim Exit ist der Parameter c_lenp die Anzahl der Byte, die in den Parameter c_buf geschrieben werden. |
| Flags | Für künftige Verwendung reserviert. Dieser Parameter muss auf null gesetzt werden. |
Ausführungsumgebung
Die Subroutine accel_compress kann nur aus der Prozessumgebung aufgerufen werden.
Rückgabewerte
| Element | Beschreibung |
|---|---|
| 0 | Erfolg |
| -1 | Fehler. Bei einem Fehler wird die globale Variable errno wie folgt gesetzt:
|