GDSX Manual

Design and Development
Extended General Device Support (GDSX) Manual134303
2-10
Overview of GDSX Processing
2. Calls the USER^INIT^CONFIG^PARAMS user exit.
3. Opens the $RECEIVE file for the GDSX process.
4. Calls the PROCESS^ASSIGNS user exit once for each ASSIGN command entered
from a TACL process before GDSX was started. If no such commands were
entered, this user exit is not called.
5. Calls the PROCESS^USER^PARAMS user exit once for each USERPARAM
defined in PARAM commands entered from a TACL process before GDSX was
started. If no such commands were entered, this user exit is not called.
6. Calls the USER^VERSION user exit.
7. Allocates memory for control blocks, memory pools, stack images, checkpointed
buffers, EMS log messages, and so on.
8. Initializes monitor and listener system tasks. Starts the listener task. If GDSX was
run as a process pair, a backup task is started.
9. Calls the USER^INITIALIZE user exit.
10. Starts the monitor task.
11. If GDSX is run as a process pair, the backup task starts the backup process, and in
the backup process TSCODE calls user exits in the following order:
a. USER^INIT^CONFIG^PARAMS
b. USER^VERSION
c. USER^INITIALIZE
12. If GDSX is run as a process pair, in the primary process TSCODE checkpoints data
to the backup, then calls USER^BACKUP.
When GDSX receives an open message for a file from an external process (for example,
a TCP dynamically opening a terminal), a user task is created. The listener task creates
an open system task to process the external open, and the task opens the requested
subdevice. Any errors encountered during the open are passed back to the external
process. If the open proceeds without error, the open task is relaunched as a user task
(either a DEVICE^HANDLER task or a LINE^HANDLER task).
User tasks never exit back to the procedure that first called them. Instead, they execute
in a perpetual loop, and when they require TSCODE services, they call an appropriate
TSCODE service routine (see Section 8). These service routines provide facilities
similar to those provided by the operating system, yet allow TSCODE to keep track of
each internal I/O operation and to ensure that every I/O operation is handled correctly at
completion time.
When a user task calls one of these routines, control is transferred to the TSCODE
kernel. TSCODE either passes the procedure call on to the operating system or
performs the requested function internally, returning immediately to the user task.
In other cases the routine has to wait for some external event (for example, the
completion of I/O). The service routine then transfers control to the kernel, which