bhyve: make basl_table_add_* functions public

The code will be more readable if we use struct definitions from ACPI-CA
to build ACPI tables. We can fill out the struct and append it to the
basl_table by using basl_table_append_bytes. After that, we have to
declare which checksums, length and pointers should be patched by basl.
That's done by the add_* functions.

Reviewed by:		jhb, markj
Approved by:		manu (mentor)
MFC after:		2 weeks
Sponsored by:		Beckhoff Automation GmbH & Co. KG
Differential Revision:	https://reviews.freebsd.org/D37405
This commit is contained in:
Corvin Köhne 2022-11-16 09:15:12 +01:00
parent bdbb1da75a
commit 7263419f38
No known key found for this signature in database
GPG key ID: D854DA56315E026A
2 changed files with 18 additions and 3 deletions

View file

@ -322,12 +322,14 @@ basl_init(void)
return (0);
}
static int
int
basl_table_add_checksum(struct basl_table *const table, const uint32_t off,
const uint32_t start, const uint32_t len)
{
struct basl_table_checksum *checksum;
assert(table != NULL);
checksum = calloc(1, sizeof(struct basl_table_checksum));
if (checksum == NULL) {
warnx("%s: failed to allocate checksum", __func__);
@ -343,12 +345,15 @@ basl_table_add_checksum(struct basl_table *const table, const uint32_t off,
return (0);
}
static int
int
basl_table_add_length(struct basl_table *const table, const uint32_t off,
const uint8_t size)
{
struct basl_table_length *length;
assert(table != NULL);
assert(size == 4 || size == 8);
length = calloc(1, sizeof(struct basl_table_length));
if (length == NULL) {
warnx("%s: failed to allocate length", __func__);
@ -363,13 +368,16 @@ basl_table_add_length(struct basl_table *const table, const uint32_t off,
return (0);
}
static int
int
basl_table_add_pointer(struct basl_table *const table,
const uint8_t src_signature[ACPI_NAMESEG_SIZE], const uint32_t off,
const uint8_t size)
{
struct basl_table_pointer *pointer;
assert(table != NULL);
assert(size == 4 || size == 8);
pointer = calloc(1, sizeof(struct basl_table_pointer));
if (pointer == NULL) {
warnx("%s: failed to allocate pointer", __func__);

View file

@ -42,6 +42,13 @@ struct basl_table;
int basl_finish(void);
int basl_init(void);
int basl_table_add_checksum(struct basl_table *const table, const uint32_t off,
const uint32_t start, const uint32_t len);
int basl_table_add_length(struct basl_table *const table, const uint32_t off,
const uint8_t size);
int basl_table_add_pointer(struct basl_table *const table,
const uint8_t src_signature[ACPI_NAMESEG_SIZE], const uint32_t off,
const uint8_t size);
int basl_table_append_bytes(struct basl_table *table, const void *bytes,
uint32_t len);
int basl_table_append_checksum(struct basl_table *table, uint32_t start,