(** Parameter Store entry codec. {v 0x00 uint32 param_id 0x04 uint16 len 0x06 uint16 generation 0x08 bytes value (len bytes, padded to 4-byte alignment) 0x?? uint32 crc32 (CRC-32C of param_id through value) v} The parameter store occupies blocks 1-16 of the virtio-blk device. Entries are appended sequentially. The guest reads the highest-generation entry for each param_id. *) (** {1 Constants} *) val max_value_len : int (** Maximum value length: 240 bytes (248 - 8 header bytes). *) (** {1 Type} *) type t = { param_id : int; len : int; generation : int; value : string; crc32 : int; } val codec : t Wire.Codec.t (** Wire codec for a parameter entry. The value is stored as a fixed 240-byte field (zero-padded). Total size: 252 bytes. *) val v : param_id:int -> generation:int -> string -> t (** [v ~param_id ~generation value] builds a parameter entry with computed CRC. Value is truncated to {!max_value_len}. *) val value_bytes : t -> string (** [value_bytes t] returns the meaningful value (first [len] bytes). *) val check_crc : t -> bool (** [check_crc t] validates the CRC-32C. *) val pp : t Fmt.t (** Pretty-print a parameter entry. *) val equal : t -> t -> bool (** Structural equality. *)