warp executes
command with optional
args, or
sh(1) if
command is omitted. All processes executed by
command
are warped in the same time frame. Time progresses for
command and its children at the rate of
factor
times the system clock. Any files created by
command or its children will appear newer than
date to
command
and its children, but will actually be in the normal time frame for non-warped commands.
Processes are warped by intercepting system calls with a dll that is preloaded at process startup before main()
is called. The interception mechanism may involve the environment on some systems; in those cases commands like
env(1) that clear the enviroment before execution may defeat the warp
intercepts. The intercepted system calls are:
alarm
fstat
getitimer
gettimeofday
lstat
poll
select
setitimer
stat
time
times
utime
utimes
Also intercepted are the _ and _libc_ name permutations of the calls, as well as any 32-bit and 64-bit
versions, and the abominable System V x versions of the
stat(2) family. warp ignores calls not present in a
particular host system. In addition, warp only works on dynamically linked executables that have neither set-uid
set-uid nor set-gid permissions. It may not have the intended effect on programs written in a language or linked with a
language runtime that hides or mangles system call library symbols, or that directly emit system call instruction
sequences rather than using the corresponding library functions, or that dynamically link libraries outside of the
scope of the warp intercepts.
Multi-process client-server applications may misbehave if the warp environment between the related processes is
not kept in sync.
warp is implemented by three components: the
warp script, located on
$PATH; the
warp dll
(shared library), located either on
$PATH or in one of the
../lib* directories on
$PATH, depending
on local compilation system conventions; and the
ast date(1)
command, located on
$PATH, that supports conversion to/from
time_t values at the shell level. Systems
like
sgi.mips3 that support multiple a.out formats may have multiple versions of the
warp dll. In all
cases the
warp script handles the dll search.