diff options
author | Shao Miller <shao.miller@yrdsb.edu.on.ca> | 2010-01-23 22:12:27 -0500 |
---|---|---|
committer | Marty Connor <mdc@etherboot.org> | 2010-01-24 07:54:42 -0500 |
commit | 112a3f2de281a2afb23ced2082d555720de7c9b0 (patch) | |
tree | 50f91813ae58ed102fa4b7a47bd9f90f9d99732c /src/doc | |
parent | 5efc2fcb602864e82de2cd7414e3828f589034e5 (diff) | |
download | ipxe-112a3f2de281a2afb23ced2082d555720de7c9b0.tar.gz |
[pxe] Introduce PXE exit hook for NBP chaining
It might be the case that we wish to chain to an NBP without
being "in the way". We now implement a hook in our exit path
for gPXE *.*pxe build targets. The hook is a pointer to a
SEG16:OFF16 which we try to jump to during exit. By default,
this pointer results in the usual exit path.
We also implement the "pxenv_file_exit_hook" PXE API routine
to allow the user to specify an alternate SEG16:OFF16 to jump
to during exit.
Unfortunately, this additional PXE extension has a cost
in code size. Fortunately, a look at the size difference
for a gPXE .rom build target shows zero size difference
after compression.
The routine is documented in doc/pxe_extensions as follows:
FILE EXIT HOOK
Op-Code: PXENV_FILE_EXIT_HOOK (00e7h)
Input: Far pointer to a t_PXENV_FILE_EXIT_HOOK parameter
structure that has been initialized by the caller.
Output: PXENV_EXIT_SUCCESS or PXENV_EXIT_FAILURE must be
returned in AX. The Status field in the parameter
structure must be set to one of the values represented
by the PXENV_STATUS_xxx constants.
Description:Modify the exit path to jump to the specified code.
Only valid for pxeprefix-based builds.
typedef struct s_PXENV_FILE_EXIT_HOOK {
PXENV_STATUS_t Status;
SEGOFF16_t Hook;
} t_PXENV_FILE_EXIT_HOOK;
Set before calling API service:
Hook: The SEG16:OFF16 of the code to jump to.
Returned from API service:
Status: See PXENV_STATUS_xxx constants.
Requested-by: H. Peter Anvin <hpa@zytor.com>
Signed-off-by: Shao Miller <shao.miller@yrdsb.edu.on.ca>
Signed-off-by: Marty Connor <mdc@etherboot.org>
Diffstat (limited to 'src/doc')
-rw-r--r-- | src/doc/pxe_extensions | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/src/doc/pxe_extensions b/src/doc/pxe_extensions index 92269cfc5..8ff14a95b 100644 --- a/src/doc/pxe_extensions +++ b/src/doc/pxe_extensions @@ -277,3 +277,36 @@ Provider: Set to 0x45585067 ("gPXE"). Another implementation of this APIMask: Bitmask of supported API functions (one bit for each function in the range 00e0h to 00ffh). Flags: Set to zero, reserved for future use. + + + + +FILE EXIT HOOK + +Op-Code: PXENV_FILE_EXIT_HOOK (00e7h) + +Input: Far pointer to a t_PXENV_FILE_EXIT_HOOK parameter + structure that has been initialized by the caller. + +Output: PXENV_EXIT_SUCCESS or PXENV_EXIT_FAILURE must be + returned in AX. The Status field in the parameter + structure must be set to one of the values represented + by the PXENV_STATUS_xxx constants. + +Description: Modify the exit path to jump to the specified code. + Only valid for pxeprefix-based builds. + +typedef struct s_PXENV_FILE_EXIT_HOOK { + PXENV_STATUS_t Status; + SEGOFF16_t Hook; +} t_PXENV_FILE_EXIT_HOOK; + + +Set before calling API service: + +Hook: The SEG16:OFF16 of the code to jump to. + + +Returned from API service: + +Status: See PXENV_STATUS_xxx constants. |