mirror of
https://github.com/VectorCamp/vectorscan.git
synced 2025-06-28 16:41:01 +03:00
doc: add description of serialization, runtime lib
This commit is contained in:
parent
3426bf57ec
commit
8f46b7cf2e
@ -15,6 +15,7 @@ Hyperscan |version| Developer's Reference Guide
|
|||||||
getting_started
|
getting_started
|
||||||
compilation
|
compilation
|
||||||
runtime
|
runtime
|
||||||
|
serialization
|
||||||
performance
|
performance
|
||||||
api_constants
|
api_constants
|
||||||
api_files
|
api_files
|
||||||
|
67
doc/dev-reference/serialization.rst
Normal file
67
doc/dev-reference/serialization.rst
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
.. _serialization:
|
||||||
|
|
||||||
|
#############
|
||||||
|
Serialization
|
||||||
|
#############
|
||||||
|
|
||||||
|
For some applications, compiling Hyperscan pattern databases immediately prior
|
||||||
|
to use is not an appropriate design. Some users may wish to:
|
||||||
|
|
||||||
|
* Compile pattern databases on a different host;
|
||||||
|
|
||||||
|
* Persist compiled databases to storage and only re-compile pattern databases
|
||||||
|
when the patterns change;
|
||||||
|
|
||||||
|
* Control the region of memory in which the compiled database is located.
|
||||||
|
|
||||||
|
Hyperscan pattern databases are not completely flat in memory: they contain
|
||||||
|
pointers and have specific alignment requirements. Therefore, they cannot be
|
||||||
|
copied (or otherwise relocated) directly. To enable these use cases, Hyperscan
|
||||||
|
provides functionality for serializing and deserializing compiled pattern
|
||||||
|
databases.
|
||||||
|
|
||||||
|
The API provides the following functions:
|
||||||
|
|
||||||
|
#. :c:func:`hs_serialize_database`: serializes a pattern database into a
|
||||||
|
flat relocatable buffer of bytes.
|
||||||
|
|
||||||
|
#. :c:func:`hs_deserialize_database`: reconstructs a newly allocated pattern
|
||||||
|
database from the output of :c:func:`hs_serialize_database`.
|
||||||
|
|
||||||
|
#. :c:func:`hs_deserialize_database_at`: reconstructs a pattern
|
||||||
|
database at a given memory location from the output of
|
||||||
|
:c:func:`hs_serialize_database`.
|
||||||
|
|
||||||
|
#. :c:func:`hs_serialized_database_size`: given a serialized pattern database,
|
||||||
|
returns the size of the memory block required by the database when
|
||||||
|
deserialized.
|
||||||
|
|
||||||
|
#. :c:func:`hs_serialized_database_info`: given a serialized pattern database,
|
||||||
|
returns a string containing information about the database. This call is
|
||||||
|
analogous to :c:func:`hs_database_info`.
|
||||||
|
|
||||||
|
.. note:: Hyperscan performs both version and platform compatibility checks
|
||||||
|
upon deserialization. The :c:func:`hs_deserialize_database` and
|
||||||
|
:c:func:`hs_deserialize_database_at` functions will only permit the
|
||||||
|
deserialization of databases compiled with (a) the same version of Hyperscan
|
||||||
|
and (b) platform features supported by the current host platform. See
|
||||||
|
:ref:`instr_specialization` for more information on platform specialization.
|
||||||
|
|
||||||
|
===================
|
||||||
|
The Runtime Library
|
||||||
|
===================
|
||||||
|
|
||||||
|
The main Hyperscan library (``libhs``) contains both the compiler and runtime
|
||||||
|
portions of the library. This means that in order to support the Hyperscan
|
||||||
|
compiler, which is written in C++, it requires C++ linkage and has a
|
||||||
|
dependency on the C++ standard library.
|
||||||
|
|
||||||
|
Many embedded applications require only the scanning ("runtime") portion of the
|
||||||
|
Hyperscan library. In these cases, pattern compilation generally takes place on
|
||||||
|
another host, and serialized pattern databases are delivered to the application
|
||||||
|
for use.
|
||||||
|
|
||||||
|
To support these applications without requiring the C++ dependency, a
|
||||||
|
runtime-only version of the Hyperscan library, called ``libhs_runtime``, is also
|
||||||
|
distributed. This library does not depend on the C++ standard library and
|
||||||
|
provides all Hyperscan functions other that those used to compile databases.
|
Loading…
x
Reference in New Issue
Block a user