setjmp.c 406 B

12345678910111213141516171819202122232425262728293031
  1. #include <efi.h>
  2. #include <efilib.h>
  3. EFI_STATUS
  4. efi_main(
  5. EFI_HANDLE image_handle,
  6. EFI_SYSTEM_TABLE *systab
  7. )
  8. {
  9. jmp_buf env;
  10. int rc;
  11. InitializeLib(image_handle, systab);
  12. rc = setjmp(&env);
  13. Print(L"setjmp() = %d\n", rc);
  14. if (rc == 3) {
  15. Print(L"3 worked\n");
  16. longjmp(&env, 0);
  17. return 0;
  18. }
  19. if (rc == 1) {
  20. Print(L"0 got to be one yay\n");
  21. return 0;
  22. }
  23. longjmp(&env, 3);
  24. return 0;
  25. }