$PREFETCHOFF (ObjectScript)
Synopsis
$PREFETCHOFF(gref,gref2)
Arguments
Argument | Description |
---|---|
gref | Optional — A global reference. |
gref2 | Optional — A global reference used to establish a range. |
Description
$PREFETCHOFF turns off the pre-fetching of global nodes established by $PREFETCHON for the current process.
There are three forms of $PREFETCHOFF:
-
$PREFETCHOFF() turns off all pre-fetching established for the current process.
-
$PREFETCHOFF(gref) turns off pre-fetching of the gref node and all of its descendents. The gref value must correspond exactly to the $PREFETCHON value.
-
$PREFETCHOFF(gref,gref2) turns off pre-fetching of the nodes in the range gref through gref2. gref and gref2 must be nodes of the same global. The gref and gref2 values must correspond exactly to the $PREFETCHON values. You cannot turn off part of a range of values.
Upon successful completion, $PREFETCHOFF() returns 0. It returns 0 even if there were no pre-fetches to turn off.
Upon successful completion, $PREFETCHOFF(gref) and $PREFETCHOFF(gref,gref2) return a string of six integers separated by commas. These six values are: number of blocks prefetched, number of I/Os performed, number of prefetch operations, milliseconds of prefetch disk time, background job: number of blocks prefetched, and background job: number of I/Os performed.
Upon failure, all forms of $PREFETCHOFF return -1. $PREFETCHOFF(gref) and $PREFETCHOFF(gref,gref2) return -1 if there is no corresponding $PREFETCHON that exactly matches the specified global or range of globals, or if the specified prefetch global or range of globals has already been turned off.
Arguments
gref
A global reference, either a global or a process-private global. The global does not need to be defined at the time that the pre-fetch is turned off.
You can specify this global using @ indirection. Refer to the Indirection Operator reference page.
You cannot specify a structured system variable name (SSVN) for this argument.
gref2
A global reference used to establish a range with gref. Therefore, gref2 must be a global node lower in the same global tree as gref.
You can specify this global using @ indirection. Refer to the Indirection Operator reference page.
Examples
The following example establishes two pre-fetches, then turns them off individually:
SET ret=$PREFETCHON(^a)
IF ret=1 { WRITE !,"prefetch established" }
ELSE { WRITE !,"prefetch not established" }
SET ret2=$PREFETCHON(^b)
IF ret2=1 { WRITE !,"prefetch established" }
ELSE { WRITE !,"prefetch not established" }
SET retoff=$PREFETCHOFF(^a)
IF retoff'=-1 { WRITE !,"prefetch turned off. Values:",retoff }
ELSE { WRITE !,"prefetch not turned off" }
SET retoff2=$PREFETCHOFF(^b)
IF retoff2'=-1 { WRITE !,"prefetch turned off. Values:",retoff2 }
ELSE { WRITE !,"prefetch not turned off" }
The following example establishes two pre-fetches, then turns off all pre-fetches for the current process:
SET ret=$PREFETCHON(^a)
IF ret=1 { WRITE !,"prefetch established" }
ELSE { WRITE !,"prefetch not established" }
SET ret2=$PREFETCHON(^b)
IF ret2=1 { WRITE !,"prefetch established" }
ELSE { WRITE !,"prefetch not established" }
SET retoff=$PREFETCHOFF()
IF retoff=0 { WRITE !,"all prefetches turned off" }
ELSE { WRITE !,"prefetch not turned off" }
See Also
-
$PREFETCHON function