]>
Commit | Line | Data |
---|---|---|
663996b3 MS |
1 | /*** |
2 | This file is part of systemd. | |
3 | ||
4 | Copyright 2012 Kay Sievers <kay@vrfy.org> | |
5 | ||
6 | systemd is free software; you can redistribute it and/or modify it | |
7 | under the terms of the GNU Lesser General Public License as published by | |
8 | the Free Software Foundation; either version 2.1 of the License, or | |
9 | (at your option) any later version. | |
10 | ||
11 | systemd is distributed in the hope that it will be useful, but | |
12 | WITHOUT ANY WARRANTY; without even the implied warranty of | |
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
14 | Lesser General Public License for more details. | |
15 | ||
16 | You should have received a copy of the GNU Lesser General Public License | |
17 | along with systemd; If not, see <http://www.gnu.org/licenses/>. | |
18 | ***/ | |
e735f4d4 | 19 | #pragma once |
663996b3 MS |
20 | |
21 | #include "sparse-endian.h" | |
6300502b | 22 | #include "util.h" |
663996b3 MS |
23 | |
24 | #define HWDB_SIG { 'K', 'S', 'L', 'P', 'H', 'H', 'R', 'H' } | |
25 | ||
26 | /* on-disk trie objects */ | |
27 | struct trie_header_f { | |
28 | uint8_t signature[8]; | |
29 | ||
30 | /* version of tool which created the file */ | |
31 | le64_t tool_version; | |
32 | le64_t file_size; | |
33 | ||
34 | /* size of structures to allow them to grow */ | |
35 | le64_t header_size; | |
36 | le64_t node_size; | |
37 | le64_t child_entry_size; | |
38 | le64_t value_entry_size; | |
39 | ||
40 | /* offset of the root trie node */ | |
41 | le64_t nodes_root_off; | |
42 | ||
43 | /* size of the nodes and string section */ | |
44 | le64_t nodes_len; | |
45 | le64_t strings_len; | |
46 | } _packed_; | |
47 | ||
48 | struct trie_node_f { | |
49 | /* prefix of lookup string, shared by all children */ | |
50 | le64_t prefix_off; | |
51 | /* size of children entry array appended to the node */ | |
52 | uint8_t children_count; | |
53 | uint8_t padding[7]; | |
54 | /* size of value entry array appended to the node */ | |
55 | le64_t values_count; | |
56 | } _packed_; | |
57 | ||
58 | /* array of child entries, follows directly the node record */ | |
59 | struct trie_child_entry_f { | |
60 | /* index of the child node */ | |
61 | uint8_t c; | |
62 | uint8_t padding[7]; | |
63 | /* offset of the child node */ | |
64 | le64_t child_off; | |
65 | } _packed_; | |
66 | ||
67 | /* array of value entries, follows directly the node record/child array */ | |
68 | struct trie_value_entry_f { | |
69 | le64_t key_off; | |
70 | le64_t value_off; | |
71 | } _packed_; |