test: spl: add unit test for the "full" FIT loader
Following what is already done for the "simple" FIT loader, add a unit test for the "full" loader. Signed-off-by: Francesco Valla <francesco@valla.it>
This commit is contained in:
committed by
Tom Rini
parent
99b9223948
commit
e41a770f38
@@ -265,6 +265,43 @@ int sandbox_spl_load_fit(char *fname, int maxlen, struct spl_image_info *image)
|
||||
return 0;
|
||||
}
|
||||
|
||||
int sandbox_spl_load_fit_full(char *fname, int maxlen,
|
||||
struct spl_image_info *image)
|
||||
{
|
||||
struct legacy_img_hdr *header;
|
||||
long long size;
|
||||
int ret;
|
||||
int fd;
|
||||
|
||||
ret = sandbox_find_next_phase(fname, maxlen, true);
|
||||
if (ret) {
|
||||
printf("%s not found, error %d\n", fname, ret);
|
||||
return log_msg_ret("nph", ret);
|
||||
}
|
||||
|
||||
log_debug("reading from %s\n", fname);
|
||||
fd = os_open(fname, OS_O_RDONLY);
|
||||
if (fd < 0) {
|
||||
printf("Failed to open '%s'\n", fname);
|
||||
return log_msg_ret("ope", -errno);
|
||||
}
|
||||
|
||||
if (os_get_filesize(fname, &size))
|
||||
return log_msg_ret("fis", -ENOENT);
|
||||
|
||||
header = spl_get_load_buffer(0, size);
|
||||
|
||||
if (os_read(fd, header, size) != size)
|
||||
return log_msg_ret("rea", -EIO);
|
||||
os_close(fd);
|
||||
|
||||
ret = spl_load_fit_image(image, header);
|
||||
if (ret)
|
||||
return log_msg_ret("slf", ret);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int upl_load_from_image(struct spl_image_info *spl_image,
|
||||
struct spl_boot_device *bootdev)
|
||||
{
|
||||
|
||||
@@ -46,4 +46,18 @@ int sandbox_find_next_phase(char *fname, int maxlen, bool use_img);
|
||||
*/
|
||||
int sandbox_spl_load_fit(char *fname, int maxlen, struct spl_image_info *image);
|
||||
|
||||
/**
|
||||
* sandbox_spl_load_fit_full() - Load the next phase from a FIT with the "full" loader
|
||||
*
|
||||
* Loads a FIT containing the next phase and sets it up for booting, using the
|
||||
* "full" FIT loader
|
||||
*
|
||||
* @fname: Returns filename loaded
|
||||
* @maxlen: Maximum length for @fname including \0
|
||||
* @image: Place to put SPL-image information
|
||||
* Return: 0 if OK, -ve on error
|
||||
*/
|
||||
int sandbox_spl_load_fit_full(char *fname, int maxlen,
|
||||
struct spl_image_info *image);
|
||||
|
||||
#endif
|
||||
|
||||
@@ -21,3 +21,14 @@ static int spl_test_load(struct unit_test_state *uts)
|
||||
}
|
||||
SPL_TEST(spl_test_load, 0);
|
||||
|
||||
static int spl_test_load_fit_full(struct unit_test_state *uts)
|
||||
{
|
||||
struct spl_image_info image;
|
||||
char fname[256];
|
||||
|
||||
ut_assertok(sandbox_spl_load_fit_full(fname, sizeof(fname), &image));
|
||||
|
||||
return 0;
|
||||
}
|
||||
SPL_TEST(spl_test_load_fit_full, 0);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user