Hi Heinrich, [...] > > + * @event notified event > > + * @context pointer to the notification count > > + */ > > +static void EFIAPI test_uninstall_notify(struct efi_event *event, void > > *context) > > +{ > > + return; > > +} > > + > > /* > > * Setup unit test. > > * > > @@ -91,6 +108,21 @@ static int setup(const efi_handle_t img_handle, > > return EFI_ST_FAILURE; > > } > > > > + ret = boottime->create_event(EVT_NOTIFY_SIGNAL, > > You could use the existing notify function. >
The reason I created a new one is that the current one calls locate_handle_buffer(). See below > > + TPL_CALLBACK, test_uninstall_notify, NULL, > > + &test_uninstall_event); > > + if (ret != EFI_SUCCESS) { > > + efi_st_error("could not create event\n"); > > + return EFI_ST_FAILURE; > > + } > > + > > + ret = boottime->register_protocol_notify(&guid3, test_uninstall_event, > > + &test_uninstall_key); > > I would prefer to use the same guid1 protocol. Deleting one handle > should not remove the other handle from the handle queue if both have > the same protocol installed. > Unless I am missing something, that would not work. The notifier function will call locate_handle_buffer and will retrieve all handles. As a result the subsequent call will return EFI_NOT_FOUND. You've already sent a ptch covering that, the purpose of this one is check that the handler will be clearer from the events list if the protocol gets uninstalled. We could use guid2 but I do prefer habing distinct protocols for every test. > > + if (ret != EFI_SUCCESS) { > > + efi_st_error("could not register event\n"); > > + return EFI_ST_FAILURE; > > + } > > + > > return EFI_ST_SUCCESS; > > } > > > > @@ -121,8 +153,10 @@ static int teardown(void) > > static int execute(void) > > { > > efi_status_t ret; > > - efi_handle_t handle1 = NULL, handle2 = NULL; > > - struct interface interface1, interface2; > > + efi_handle_t handle1 = NULL, handle2 = NULL, handle3 = NULL; > > + struct interface interface1, interface2, interface3; > > + efi_uintn_t handle_count; > > + efi_handle_t *handles; > > > > ret = boottime->install_protocol_interface(&handle1, &guid1, > > EFI_NATIVE_INTERFACE, > > @@ -224,6 +258,29 @@ static int execute(void) > > return EFI_ST_FAILURE; > > } > > > > + ret = boottime->install_protocol_interface(&handle3, &guid3, > > + EFI_NATIVE_INTERFACE, > > + &interface3); > > + if (ret != EFI_SUCCESS) { > > + efi_st_error("could not install interface\n"); > > + return EFI_ST_FAILURE; > > + } > > Please, check the number of invocations of the notify function. > I can add that, but the tests already check that case in detail. > > + > > + ret = boottime->uninstall_multiple_protocol_interfaces > > + (handle3, &guid3, &interface3, NULL); > > + if (ret != EFI_SUCCESS) { > > + efi_st_error("UninstallMultipleProtocolInterfaces failed\n"); > > + return EFI_ST_FAILURE; > > + } > > And here again. We don't expect UninstallMultipleProtocolInterfaces() to > trigger the event. > ditto Thanks /Ilias > Best regards > > Heinrich > > > + > > + ret = boottime->locate_handle_buffer(BY_REGISTER_NOTIFY, NULL, > > + test_uninstall_key, > > + &handle_count, &handles); > > + if (ret != EFI_NOT_FOUND) { > > + efi_st_error("UninstallMultipleProtocolInterfaces failed to > > delete event handles\n"); > > + return EFI_ST_FAILURE; > > + } > > + > > return EFI_ST_SUCCESS; > > } > > > > -- > > 2.39.2 > > >