From: Heinrich Schuchardt Date: Fri, 14 Nov 2025 09:32:45 +0000 (+0100) Subject: efi_selftest: simplify efi_selftest_variables X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=bef916c53f4c3da42311c60cdeaee1db26238723;p=thirdparty%2Fu-boot.git efi_selftest: simplify efi_selftest_variables Use global st_boottime and st_runtime. Signed-off-by: Heinrich Schuchardt --- diff --git a/lib/efi_selftest/efi_selftest_variables.c b/lib/efi_selftest/efi_selftest_variables.c index b92c3276b61..976eee8dcef 100644 --- a/lib/efi_selftest/efi_selftest_variables.c +++ b/lib/efi_selftest/efi_selftest_variables.c @@ -13,8 +13,6 @@ #define EFI_ST_MAX_DATA_SIZE 16 #define EFI_ST_MAX_VARNAME_SIZE 80 -static struct efi_boot_services *boottime; -static struct efi_runtime_services *runtime; static const efi_guid_t guid_vendor0 = EFI_GUID(0x67029eb5, 0x0af2, 0xf6b1, 0xda, 0x53, 0xfc, 0xb5, 0x66, 0xdd, 0x1c, 0xe6); @@ -22,21 +20,6 @@ static const efi_guid_t guid_vendor1 = EFI_GUID(0xff629290, 0x1fc1, 0xd73f, 0x8f, 0xb1, 0x32, 0xf9, 0x0c, 0xa0, 0x42, 0xea); -/* - * Setup unit test. - * - * @handle handle of the loaded image - * @systable system table - */ -static int setup(const efi_handle_t img_handle, - const struct efi_system_table *systable) -{ - boottime = systable->boottime; - runtime = systable->runtime; - - return EFI_ST_SUCCESS; -} - /* * Execute unit test. */ @@ -59,17 +42,17 @@ static int execute(void) return EFI_ST_FAILURE; } /* Set variable 0 */ - ret = runtime->set_variable(u"efi_st_var0", &guid_vendor0, - EFI_VARIABLE_BOOTSERVICE_ACCESS, - 3, v + 4); + ret = st_runtime->set_variable(u"efi_st_var0", &guid_vendor0, + EFI_VARIABLE_BOOTSERVICE_ACCESS, 3, + v + 4); if (ret != EFI_SUCCESS) { efi_st_error("SetVariable failed\n"); return EFI_ST_FAILURE; } data[3] = 0xff; len = 3; - ret = runtime->get_variable(u"efi_st_var0", &guid_vendor0, - &attr, &len, data); + ret = st_runtime->get_variable(u"efi_st_var0", &guid_vendor0, &attr, + &len, data); if (ret != EFI_SUCCESS) { efi_st_error("GetVariable failed\n"); return EFI_ST_FAILURE; @@ -83,16 +66,15 @@ static int execute(void) return EFI_ST_FAILURE; } /* Set variable 1 */ - ret = runtime->set_variable(u"efi_st_var1", &guid_vendor1, - EFI_VARIABLE_BOOTSERVICE_ACCESS, - 8, v); + ret = st_runtime->set_variable(u"efi_st_var1", &guid_vendor1, + EFI_VARIABLE_BOOTSERVICE_ACCESS, 8, v); if (ret != EFI_SUCCESS) { efi_st_error("SetVariable failed\n"); return EFI_ST_FAILURE; } len = EFI_ST_MAX_DATA_SIZE; - ret = runtime->get_variable(u"efi_st_var1", &guid_vendor1, - &attr, &len, data); + ret = st_runtime->get_variable(u"efi_st_var1", &guid_vendor1, &attr, + &len, data); if (ret != EFI_SUCCESS) { efi_st_error("GetVariable failed\n"); return EFI_ST_FAILURE; @@ -107,17 +89,17 @@ static int execute(void) return EFI_ST_FAILURE; } /* Append variable 1 */ - ret = runtime->set_variable(u"efi_st_var1", &guid_vendor1, - EFI_VARIABLE_BOOTSERVICE_ACCESS | - EFI_VARIABLE_APPEND_WRITE, - 7, v + 8); + ret = st_runtime->set_variable(u"efi_st_var1", &guid_vendor1, + EFI_VARIABLE_BOOTSERVICE_ACCESS | + EFI_VARIABLE_APPEND_WRITE, + 7, v + 8); if (ret != EFI_SUCCESS) { efi_st_error("SetVariable(APPEND_WRITE) failed\n"); return EFI_ST_FAILURE; } len = EFI_ST_MAX_DATA_SIZE; - ret = runtime->get_variable(u"efi_st_var1", &guid_vendor1, - &attr, &len, data); + ret = st_runtime->get_variable(u"efi_st_var1", &guid_vendor1, &attr, + &len, data); if (ret != EFI_SUCCESS) { efi_st_error("GetVariable failed\n"); return EFI_ST_FAILURE; @@ -129,34 +111,35 @@ static int execute(void) efi_st_todo("GetVariable returned wrong value\n"); /* Append variable 2, write to non-existent variable with datasize=0 */ - ret = runtime->set_variable(u"efi_none", &guid_vendor1, - EFI_VARIABLE_BOOTSERVICE_ACCESS | - EFI_VARIABLE_APPEND_WRITE, - 0, v); + ret = st_runtime->set_variable(u"efi_none", &guid_vendor1, + EFI_VARIABLE_BOOTSERVICE_ACCESS | + EFI_VARIABLE_APPEND_WRITE, + 0, v); if (ret != EFI_SUCCESS) { efi_st_error( "SetVariable(APPEND_WRITE) with size 0 to non-existent variable returns wrong code\n"); return EFI_ST_FAILURE; } len = EFI_ST_MAX_DATA_SIZE; - ret = runtime->get_variable(u"efi_none", &guid_vendor1, - &attr, &len, data); + ret = st_runtime->get_variable(u"efi_none", &guid_vendor1, &attr, &len, + data); if (ret != EFI_NOT_FOUND) { efi_st_error("Variable must not be created\n"); return EFI_ST_FAILURE; } /* Append variable 2, write to non-existent variable with valid data size*/ - ret = runtime->set_variable(u"efi_none", &guid_vendor1, - EFI_VARIABLE_BOOTSERVICE_ACCESS | - EFI_VARIABLE_APPEND_WRITE, - 15, v); + ret = st_runtime->set_variable(u"efi_none", &guid_vendor1, + EFI_VARIABLE_BOOTSERVICE_ACCESS | + EFI_VARIABLE_APPEND_WRITE, + 15, v); if (ret != EFI_SUCCESS) { - efi_st_error("SetVariable(APPEND_WRITE) with valid size and data to non-existent variable must be succcessful\n"); + efi_st_error( + "SetVariable(APPEND_WRITE) with valid size and data to non-existent variable must be succcessful\n"); return EFI_ST_FAILURE; } len = EFI_ST_MAX_DATA_SIZE; - ret = runtime->get_variable(u"efi_none", &guid_vendor1, - &attr, &len, data); + ret = st_runtime->get_variable(u"efi_none", &guid_vendor1, &attr, &len, + data); if (ret != EFI_SUCCESS) { efi_st_error("GetVariable failed\n"); return EFI_ST_FAILURE; @@ -167,61 +150,60 @@ static int execute(void) if (memcmp(data, v, len)) efi_st_todo("GetVariable returned wrong value\n"); /* Delete variable efi_none */ - ret = runtime->set_variable(u"efi_none", &guid_vendor1, - 0, 0, NULL); + ret = st_runtime->set_variable(u"efi_none", &guid_vendor1, 0, 0, NULL); if (ret != EFI_SUCCESS) { efi_st_error("SetVariable failed\n"); return EFI_ST_FAILURE; } len = EFI_ST_MAX_DATA_SIZE; - ret = runtime->get_variable(u"efi_none", &guid_vendor1, - &attr, &len, data); + ret = st_runtime->get_variable(u"efi_none", &guid_vendor1, &attr, &len, + data); if (ret != EFI_NOT_FOUND) { efi_st_error("Variable was not deleted\n"); return EFI_ST_FAILURE; } /* Enumerate variables */ - ret = runtime->get_next_variable_name(NULL, u"efi_st_var1", &guid); + ret = st_runtime->get_next_variable_name(NULL, u"efi_st_var1", &guid); if (ret != EFI_INVALID_PARAMETER) { efi_st_error("GetNextVariableName missing parameter check\n"); return EFI_ST_FAILURE; } len = 24; - ret = runtime->get_next_variable_name(&len, NULL, &guid); + ret = st_runtime->get_next_variable_name(&len, NULL, &guid); if (ret != EFI_INVALID_PARAMETER) { efi_st_error("GetNextVariableName missing parameter check\n"); return EFI_ST_FAILURE; } len = 24; - ret = runtime->get_next_variable_name(&len, u"efi_st_var1", NULL); + ret = st_runtime->get_next_variable_name(&len, u"efi_st_var1", NULL); if (ret != EFI_INVALID_PARAMETER) { efi_st_error("GetNextVariableName missing parameter check\n"); return EFI_ST_FAILURE; } len = 1; - ret = runtime->get_next_variable_name(&len, u"", &guid); + ret = st_runtime->get_next_variable_name(&len, u"", &guid); if (ret != EFI_INVALID_PARAMETER) { efi_st_error("GetNextVariableName missing parameter check\n"); return EFI_ST_FAILURE; } len = 16; - ret = runtime->get_next_variable_name(&len, u"efi_st_var1", &guid); + ret = st_runtime->get_next_variable_name(&len, u"efi_st_var1", &guid); if (ret != EFI_INVALID_PARAMETER) { efi_st_error("GetNextVariableName missing parameter check\n"); return EFI_ST_FAILURE; } - boottime->set_mem(&guid, 16, 0); + st_boottime->set_mem(&guid, 16, 0); *varname = 0; flag = 0; for (;;) { len = EFI_ST_MAX_VARNAME_SIZE; - ret = runtime->get_next_variable_name(&len, varname, &guid); + ret = st_runtime->get_next_variable_name(&len, varname, &guid); if (ret == EFI_NOT_FOUND) break; if (ret != EFI_SUCCESS) { @@ -233,8 +215,9 @@ static int execute(void) !efi_st_strcmp_16_8(varname, "efi_st_var0")) { flag |= 1; if (len != 24) { - efi_st_error("GetNextVariableName report wrong length %u, expected 24\n", - (unsigned int)len); + efi_st_error( + "GetNextVariableName report wrong length %u, expected 24\n", + (unsigned int)len); return EFI_ST_FAILURE; } } @@ -248,29 +231,29 @@ static int execute(void) return EFI_ST_FAILURE; } /* Delete variable 1 */ - ret = runtime->set_variable(u"efi_st_var1", &guid_vendor1, - 0, 0, NULL); + ret = st_runtime->set_variable(u"efi_st_var1", &guid_vendor1, 0, 0, + NULL); if (ret != EFI_SUCCESS) { efi_st_error("SetVariable failed\n"); return EFI_ST_FAILURE; } len = EFI_ST_MAX_DATA_SIZE; - ret = runtime->get_variable(u"efi_st_var1", &guid_vendor1, - &attr, &len, data); + ret = st_runtime->get_variable(u"efi_st_var1", &guid_vendor1, &attr, + &len, data); if (ret != EFI_NOT_FOUND) { efi_st_error("Variable was not deleted\n"); return EFI_ST_FAILURE; } /* Delete variable 0 */ - ret = runtime->set_variable(u"efi_st_var0", &guid_vendor0, - 0, 0, NULL); + ret = st_runtime->set_variable(u"efi_st_var0", &guid_vendor0, 0, 0, + NULL); if (ret != EFI_SUCCESS) { efi_st_error("SetVariable failed\n"); return EFI_ST_FAILURE; } len = EFI_ST_MAX_DATA_SIZE; - ret = runtime->get_variable(u"efi_st_var0", &guid_vendor0, - &attr, &len, data); + ret = st_runtime->get_variable(u"efi_st_var0", &guid_vendor0, &attr, + &len, data); if (ret != EFI_NOT_FOUND) { efi_st_error("Variable was not deleted\n"); return EFI_ST_FAILURE; @@ -282,6 +265,5 @@ static int execute(void) EFI_UNIT_TEST(variables) = { .name = "variables", .phase = EFI_EXECUTE_BEFORE_BOOTTIME_EXIT, - .setup = setup, .execute = execute, };