efi_selftest: correct event group test
authorHeinrich Schuchardt <xypron.glpk@gmx.de>
Wed, 5 Jun 2019 20:50:42 +0000 (22:50 +0200)
committerHeinrich Schuchardt <xypron.glpk@gmx.de>
Mon, 10 Jun 2019 21:06:19 +0000 (23:06 +0200)
If any member of the event group is signaled, all members must be set to
signaled and their notification functions have to be queued.

Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
lib/efi_selftest/efi_selftest_event_groups.c

index 5a7980c..6dcde50 100644 (file)
@@ -80,12 +80,11 @@ static int execute(void)
                        return EFI_ST_FAILURE;
                }
                for (j = 0; j < GROUP_SIZE; ++j) {
-                       if (counter[j] != i) {
+                       if (counter[j] != 2 * i + 1) {
                                efi_st_printf("i %u, j %u, count %u\n",
                                              (unsigned int)i, (unsigned int)j,
                                              (unsigned int)counter[j]);
-                               efi_st_error(
-                                       "Notification function was called\n");
+                               efi_st_error("Notification function was not called\n");
                                return EFI_ST_FAILURE;
                        }
                        /* Clear signaled state */
@@ -94,7 +93,7 @@ static int execute(void)
                                efi_st_error("Event was not signaled\n");
                                return EFI_ST_FAILURE;
                        }
-                       if (counter[j] != i) {
+                       if (counter[j] != 2 * i + 1) {
                                efi_st_printf("i %u, j %u, count %u\n",
                                              (unsigned int)i, (unsigned int)j,
                                              (unsigned int)counter[j]);
@@ -109,7 +108,7 @@ static int execute(void)
                                        "Signaled state not cleared\n");
                                return EFI_ST_FAILURE;
                        }
-                       if (counter[j] != i + 1) {
+                       if (counter[j] != 2 * i + 2) {
                                efi_st_printf("i %u, j %u, count %u\n",
                                              (unsigned int)i, (unsigned int)j,
                                              (unsigned int)counter[j]);