On Alpha and Integrity server systems, changes the access mode of
the calling process to kernel mode. This service allows a process
to change its access mode to kernel, execute a specified routine,
and then return to the access mode in effect before the call was
issued.
This service accepts 64-bit addresses.
Format
SYS$CMKRNL_64 routin_64 ,arglst_64
C Prototype
int sys$cmkrnl_64 (int (*routin_64)(__unknown_params),
unsigned __int64 *arglst_64);
1 – Arguments
routin_64
OpenVMS usage:procedure
type: procedure value
access: call without stack unwinding
mechanism: by 32- or 64-bit reference
Routine to be executed while the process is in kernel mode. The
routin_64 argument is the 32- or 64-bit address of this routine.
arglst_64
OpenVMS usage:arg_list
type: quadword (unsigned)
access: read only
mechanism: by 32- or 64-bit reference
Quadword argument list to be passed to the routine specified
by the routin_64 argument. The routin_64 argument is the 32- or
64-bit address of this routine.
If the arglst value is nonzero and is not accessible as an
address or if the routine is inaccessible, the service returns
SS$_ACCVIO.
Alpha and Integrity server systems require a pointer to a valid
argument list or a value of 0 in the arglst_64 argument. This
means that the arglst_64 argument, if nonzero, must contain
an accessible virtual address for an argument list, the first
quadword of which must be a number between 0 and 255 specifying
the number of quadwords that follow it on the list.