mirror of
https://review.coreboot.org/flashrom.git
synced 2025-04-26 14:42:36 +02:00
libflashrom: Add API to get the list of supported programmers
There were no options available to obtain the list of programmers. The implementation is based on flashrom_supported_flash_chips. Arrays of constant strings are returned, and the array must be freed using flashrom_data_free. Testing: Both unit tests and CLI tools serve as libflashrom clients. All unit tests run successfully. Change-Id: Ib5275b742b849183b1fe701900040fee369a1d78 Signed-off-by: Dmitry Zhadinets <dzhadinets@gmail.com> Reviewed-on: https://review.coreboot.org/c/flashrom/+/86921 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Peter Marheine <pmarheine@chromium.org> Reviewed-by: Anastasia Klimchuk <aklm@chromium.org>
This commit is contained in:
parent
6ff43de0e0
commit
bc029c2f45
@ -193,6 +193,14 @@ struct flashrom_chipset_info {
|
||||
* @return flashrom version
|
||||
*/
|
||||
const char *flashrom_version_info(void);
|
||||
/**
|
||||
* @brief Returns list of supported programmers
|
||||
* The last entry in the returned list is followed by a NULL.
|
||||
*
|
||||
* @return List of supported programmers, or NULL if an error occurred.
|
||||
* The pointer must be freed after using flashrom_data_free
|
||||
*/
|
||||
const char **flashrom_supported_programmers(void);
|
||||
/**
|
||||
* @brief Returns list of supported flash chips
|
||||
* @return List of supported flash chips, or NULL if an error occurred
|
||||
|
@ -194,6 +194,18 @@ const char *flashrom_version_info(void)
|
||||
return flashrom_version;
|
||||
}
|
||||
|
||||
const char **flashrom_supported_programmers(void)
|
||||
{
|
||||
const char **result = malloc(sizeof(char*) * (programmer_table_size + 1));
|
||||
if (!result)
|
||||
return NULL;
|
||||
for (unsigned int i = 0; i < programmer_table_size; ++i) {
|
||||
result[i] = programmer_table[i]->name;
|
||||
}
|
||||
result[programmer_table_size] = 0;
|
||||
return result;
|
||||
}
|
||||
|
||||
struct flashrom_flashchip_info *flashrom_supported_flash_chips(void)
|
||||
{
|
||||
struct flashrom_flashchip_info *supported_flashchips =
|
||||
|
@ -32,6 +32,7 @@ LIBFLASHROM_1.0 {
|
||||
flashrom_supported_boards;
|
||||
flashrom_supported_chipsets;
|
||||
flashrom_supported_flash_chips;
|
||||
flashrom_supported_programmers;
|
||||
flashrom_version_info;
|
||||
flashrom_wp_cfg_new;
|
||||
flashrom_wp_cfg_release;
|
||||
|
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* This file is part of the flashrom project.
|
||||
*
|
||||
* Copyright 2025 Dmitry Zhadinets (dzhadinets@gmail.com)
|
||||
* Copyright 2025 Dmitry Zhadinets <dzhadinets@gmail.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
@ -96,4 +96,21 @@ void flashrom_set_log_level_test_success(void **state)
|
||||
/* check that callback is called after the change*/
|
||||
assert_int_equal(print(FLASHROM_MSG_INFO, "1%s", "\n"), 0x666 + (int)FLASHROM_MSG_INFO);
|
||||
flashrom_set_log_callback(NULL);
|
||||
}
|
||||
}
|
||||
|
||||
void flashrom_supported_programmers_test_success(void **state)
|
||||
{
|
||||
(void) state; /* unused */
|
||||
const char **array = flashrom_supported_programmers();
|
||||
const char **ptr = array;
|
||||
|
||||
assert_non_null(array);
|
||||
|
||||
do {
|
||||
assert_non_null(*ptr);
|
||||
}while (*(++ptr));
|
||||
|
||||
flashrom_data_free(array);
|
||||
|
||||
assert_int_not_equal(ptr - array, 0);
|
||||
}
|
||||
|
@ -482,6 +482,7 @@ int main(int argc, char *argv[])
|
||||
cmocka_unit_test(flashrom_set_log_callback_test_success),
|
||||
cmocka_unit_test(flashrom_set_log_callback_v2_test_success),
|
||||
cmocka_unit_test(flashrom_set_log_level_test_success),
|
||||
cmocka_unit_test(flashrom_supported_programmers_test_success),
|
||||
};
|
||||
ret |= cmocka_run_group_tests_name("libflashrom.c tests", libflashrom_tests, NULL, NULL);
|
||||
|
||||
|
@ -35,6 +35,7 @@ void flashbuses_to_text_test_success(void **state);
|
||||
void flashrom_set_log_callback_test_success(void **state);
|
||||
void flashrom_set_log_callback_v2_test_success(void **state);
|
||||
void flashrom_set_log_level_test_success(void **state);
|
||||
void flashrom_supported_programmers_test_success(void **state);
|
||||
|
||||
/* spi25.c */
|
||||
void spi_write_enable_test_success(void **state);
|
||||
|
Loading…
x
Reference in New Issue
Block a user