| /* SPDX-License-Identifier: GPL-2.0-or-later */ |
| * struct resume_data - data for resume after interrupt |
| /** @jump: longjmp buffer */ |
| /** @code: exception code */ |
| * set_resume() - set longjmp buffer for resuming after exception |
| * By calling this function it is possible to use a long jump to catch an |
| * exception. The caller sets the long jump buffer with set_resume() and then |
| * executes setjmp(). If an exception occurs, the code will return to the |
| * setjmp caller(). The exception code will be returned in @data->code. |
| * After the critical operation call set_resume(NULL) so that an exception in |
| * another part of the code will not accidently invoke the long jump. |
| * // This example shows how to use set_resume(). |
| * struct resume_data resume; |
| * ret = setjmp(resume.jump); |
| * printf("An exception %ld occurred\n", resume.code); |
| * // Do what might raise an exception here. |
| * @data: pointer to structure with longjmp address |
| * Return: 0 before an exception, 1 after an exception occurred |
| void set_resume(struct resume_data *data); |