mirror of
https://github.com/Rockbox/rockbox.git
synced 2025-11-09 21:22:39 -05:00
Document 'union buflib_data'
Change-Id: Ia98fa8e7887338d6c0b7a5795a0ae5c7a13014ba
This commit is contained in:
parent
193c5df75d
commit
da5a36d6d2
2 changed files with 11 additions and 8 deletions
|
|
@ -44,7 +44,7 @@
|
||||||
* the buffer. The buffer is treated as an array of union buflib_data. Blocks
|
* the buffer. The buffer is treated as an array of union buflib_data. Blocks
|
||||||
* start with a length marker, which is included in their length. Free blocks
|
* start with a length marker, which is included in their length. Free blocks
|
||||||
* are marked by negative length. Allocated blocks have a positiv length marker,
|
* are marked by negative length. Allocated blocks have a positiv length marker,
|
||||||
* and additional metadata forllowing that: It follows a pointer
|
* and additional metadata following that: It follows a pointer
|
||||||
* (union buflib_data*) to the corresponding handle table entry. so that it can
|
* (union buflib_data*) to the corresponding handle table entry. so that it can
|
||||||
* be quickly found and updated during compaction. After that follows
|
* be quickly found and updated during compaction. After that follows
|
||||||
* the pointer to the struct buflib_callbacks associated with this allocation
|
* the pointer to the struct buflib_callbacks associated with this allocation
|
||||||
|
|
@ -62,7 +62,7 @@
|
||||||
* |L|H|C|cccc|L2|crc|XXXXXX|-L|YYYYYYYYYYYYYYYY|L|H|C|cc|L2|crc|XXXXXXXXXXXXX|AAA|
|
* |L|H|C|cccc|L2|crc|XXXXXX|-L|YYYYYYYYYYYYYYYY|L|H|C|cc|L2|crc|XXXXXXXXXXXXX|AAA|
|
||||||
*
|
*
|
||||||
* L - length marker (negative if block unallocated)
|
* L - length marker (negative if block unallocated)
|
||||||
* H - handle table enry pointer
|
* H - handle table entry pointer
|
||||||
* C - pointer to struct buflib_callbacks
|
* C - pointer to struct buflib_callbacks
|
||||||
* c - variable sized string identifier
|
* c - variable sized string identifier
|
||||||
* L2 - second length marker for string identifier
|
* L2 - second length marker for string identifier
|
||||||
|
|
|
||||||
|
|
@ -35,12 +35,15 @@
|
||||||
|
|
||||||
union buflib_data
|
union buflib_data
|
||||||
{
|
{
|
||||||
intptr_t val;
|
intptr_t val; /* length of the block in n*sizeof(union buflib_data).
|
||||||
char name[1]; /* actually a variable sized string */
|
Includes buflib metadata overhead. A negative value
|
||||||
struct buflib_callbacks* ops;
|
indicates block is unallocated */
|
||||||
char* alloc;
|
char name[1]; /* name, actually a variable sized string */
|
||||||
union buflib_data *handle;
|
struct buflib_callbacks* ops; /* callback functions for move and shrink. Can be NULL */
|
||||||
uint32_t crc;
|
char* alloc; /* start of allocated memory area */
|
||||||
|
union buflib_data *handle; /* pointer to entry in the handle table.
|
||||||
|
Used during compaction for fast lookup */
|
||||||
|
uint32_t crc; /* checksum of this data to detect corruption */
|
||||||
};
|
};
|
||||||
|
|
||||||
struct buflib_context
|
struct buflib_context
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue