1
0

Source code upload

This commit is contained in:
calmsacibis995
2022-09-29 17:59:04 +03:00
parent 72fa9da3d7
commit 8fc8fa8089
33399 changed files with 11964078 additions and 0 deletions

112
eoe/Makefile Normal file
View File

@@ -0,0 +1,112 @@
#! smake
#
# Makefile for irix ism
#
# The main targets at the top level are:
#
# default:this performs a bootstrap (headers and exports) then
# builds all of the software in place. No rawidb is generated and
# targets are not installed anywhere. No ism image is generated
#
# headers:install all headers. This should always be run without RAWIDB set.
#
# exports:builds and installs all libraries and data files that are required
# to build the rest of the ism. This should always be run without
# RAWIDB set.
#
# install:builds and installs the entire ism. 'headers' and 'exports'
# must be run previous to 'install'. With RAWIDB set this will
# generate the rawidb for the ism. Without RAWIDB set, all the
# ism objects will be installed in $ROOT
#
# rawidb:executes 'install' with RAWIDB set to the file that the ism image
# generation makefile (in build/) expects. As with 'install'
# 'headers' and 'exports' must be run beforehand.
#
# ism:descends into the build directory and performs the steps to generate
# the finalidb. At this point images may be generated.
# 'rawidb' must have already been run.
#
# images: descends into the build directory and builds ism images.
# 'rawidb' and 'ism' must have been run previously.
#
# clean:removes .o's
# clobber:removes all non-source. The effective of 'clobber' can be checked
# by running p_check -w after running 'clober'
# rmtargets:removes TARGETS only
#
# since we define commondefs, etc they are referenced from their source
# we also cannot include ismcommondefs here since it includes commondefs
# So, don't use this makefile as a template!
#
RULESDIR=include/makerules
include $(RULESDIR)/commondefs
RELEASEDEFS=$(RULESDIR)/releasedefs
COMMONRULES=$(RULESDIR)/commonrules
SUBDIRS= include lib cmd man build relnotes books
COMMONPREF=eoe
HEADERS_SUBDIRS=include lib cmd
EXPORTS_SUBDIRS=lib cmd
SRC!=pwd
IDBFILE=${SRC}/build/IDB
ISM_NAME=eoe
#ifndef SRC_PRD
default:headers exports $(_FORCE)
#else
default: $(_FORCE)
#endif
$(SUBDIRS_MAKERULE)
$(COMMONTARGS) install:$(COMMONPREF)$$@ $(_FORCE)
$(SUBDIRS_MAKERULE)
# Since this ism defines ismcommonrules we must assume it isn't installed yet!
include $(RULESDIR)/ismcommonrules
#
# INSTALL rules for transitional IRIX ism installation
# This rule needs to do any replaces rules and removal
# of binaries that have changed location
# Also handles any temprorary linking to maintain compatibility
#
$(COMMONPREF)install:
SRC=$(SRC) $(INSTALL) -F /etc -lns ../usr/sbin/prfld prfld
SRC=$(SRC) $(INSTALL) -F /etc -lns ../usr/sbin/prfdc prfdc
SRC=$(SRC) $(INSTALL) -F /etc -lns ../usr/sbin/prfpr prfpr
SRC=$(SRC) $(INSTALL) -F /etc -lns ../usr/sbin/prfsnap prfsnap
SRC=$(SRC) $(INSTALL) -F /etc -lns ../usr/sbin/prfstat prfstat
SRC=$(SRC) $(INSTALL) -F /usr/bin -lns ../lib/iaf/scheme login
SRC=$(SRC) $(INSTALL) -F /usr/bsd -lns ../bin/more more
SRC=$(SRC) $(INSTALL) -F /usr/bsd -lns ../lib/more.help more.help
SRC=$(SRC) $(INSTALL) -F /usr/bsd -lns ../bin/script script
SRC=$(SRC) $(INSTALL) -F /usr/lib -lns ../share/lib/terminfo terminfo
SRC=$(SRC) $(INSTALL) -idb 'exitop("rm -fr $$rbase/etc/xutmp $$rbase/etc/xwtmp $$rbase/var/sysgen/master.d/master.c $$rbase/bin/rsh")' -dir /
headers:$(_FORCE)
$(HEADERS_SUBDIRS_MAKERULE)
exports:$(_FORCE)
$(EXPORTS_SUBDIRS_MAKERULE)
#
# This top level doesn't need to do anything special for these targets
#
$(COMMONPREF)default $(COMMONPREF)clean $(COMMONPREF)clobber $(COMMONPREF)rmtargets:
$(SUBDIRS):$(_FORCE)
cd $@; $(MAKE)
rawidb:$(_FORCE)
@RAWIDB=$(IDBFILE); export RAWIDB ; \
if [ -f $$RAWIDB ] ; then mv $$RAWIDB $$RAWIDB.prev ; fi ;\
echo "RAWIDB=$$RAWIDB SRC=$(SRC) $(MAKE) install" ;\
$(MAKE) SRC=$(SRC) install
ism:$(_FORCE)
cd build; $(MAKE) buildism
images:$(_FORCE)
cd build; $(MAKE) buildimages

BIN
eoe/books/CPR_OG/0front.doc Normal file

Binary file not shown.

View File

@@ -0,0 +1,9 @@
<!-- Produced by version 3.13 (01/04/96) of SGI Frame/SGML translator -->
<FRONTMATTER><TITLEPAGE><TITLE>IRIX Checkpoint and Restart<SUPERSCRIPT>&trade;</SUPERSCRIPT> Operation Guide</TITLE><DOCNUMBER>Document Number 007-3236-003</DOCNUMBER></TITLEPAGE>
<CREDITSPAGE><CONTRIBUTORS>CONTRIBUTORS<NAMES>Written by Bill Tuthill</NAMES><NAMES>Engineering contributions by Ken Beck, Jack Jia, and Weibao Wu</NAMES></CONTRIBUTORS>
<COPYRIGHT>&copy; 1997-1998, Silicon Graphics, Inc.&mdash; All Rights Reserved</COPYRIGHT><PARAGRAPH>The contents of this document may not be copied or duplicated in any form, in whole or in part, without the prior written permission of Silicon Graphics, Inc.</PARAGRAPH>
<TECHNICAL>RESTRICTED RIGHTS LEGEND</TECHNICAL><PARAGRAPH>Use, duplication, or disclosure of the technical data contained in this document by the Government is subject to restrictions as set forth in subdivision (c) (1) (ii) of the Rights in Technical Data and Computer Software clause at DFARS 52.227-7013 and/or in similar or successor clauses in the FAR, or in the DOD or NASA FAR Supplement. Unpublished rights reserved under the Copyright Laws of the United States. Contractor/manufacturer is Silicon Graphics, Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94043-1389.</PARAGRAPH>
<PARAGRAPH>OpenGL, Silicon Graphics, and the Silicon Graphics logo are registered trademarks, and CHALLENGEarray, IRIS InSight, IRIX, IRIX Checkpoint and Restart, IRIX CPR, POWER CHALLENGEarray, and XFS are trademarks of Silicon Graphics, Inc.MIPS is a registered trademark, and R10000 is a trademark of MIPS Technologies, Inc.</PARAGRAPH>
<PARAGRAPH>Cisco is a registered trademark of Cisco Systems, Inc. Informix is a registered trademark of Informix Software, Inc. Motif is a registered trademark of the Open Software Foundation. NFS is a registered trademark of Sun Microsystems, Inc. Oracle is a registered trademark of Oracle Corporation. POSIX is a registered trademark of IEEE, Inc. Sybase is a registered trademark of Sybase, Inc. UNIX is a registered trademark in the United States and other countries, licensed exclusively through X/Open Company Ltd. X Window System is a trademark of the Massachusetts Institute of Technology. </PARAGRAPH>
</CREDITSPAGE>
</FRONTMATTER>

BIN
eoe/books/CPR_OG/0intro.doc Normal file

Binary file not shown.

View File

@@ -0,0 +1,71 @@
<!-- Produced by version 3.13 (01/04/96) of SGI Frame/SGML translator -->
<INTRODUCTION><TITLE>About This Guide</TITLE><PARAGRAPH>IRIX Checkpoint and Restart (IRIX CPR) is a facility for saving the state of running processes, and for later resuming execution where it left off. Based on the POSIX 1003.1m standard, this facility was initially implemented in IRIX release 6.4. </PARAGRAPH>
<PARAGRAPH>This <DOCTITLE>IRIX Checkpoint and Restart Operation Guide</DOCTITLE> describes how to use and administer IRIX CPR, and how to program checkpointing applications. </PARAGRAPH>
<SECTION1 LBL="" HELPID = ""><TITLE>Intended Audience</TITLE><PARAGRAPH>This document is intended for anyone who needs to checkpoint and restart processes, including users, administrators, and application programmers.<INDEXTARGET ID="0intro1"><!-- POSTPROCESSDATA: 0intro1|audience type intended audience --></PARAGRAPH>
</SECTION1>
<SECTION1 LBL="" HELPID = ""><TITLE>What This Guide Contains</TITLE><PARAGRAPH>Here is an overview of the material in this book: <INDEXTARGET ID="0intro2"><!-- POSTPROCESSDATA: 0intro2|content overview overview of contents --></PARAGRAPH>
<BULLETLIST><BULLET><PARAGRAPH><XREF IDREF="51170" TYPE="TITLE">Chapter&nbsp;1, &ldquo;Using Checkpoint and Restart,&rdquo;</XREF> explains how to checkpoint and restart a process, and how to set CPR control options.</PARAGRAPH>
</BULLET>
<BULLET><PARAGRAPH><XREF IDREF="60915" TYPE="TITLE">Chapter&nbsp;2, &ldquo;Administering Checkpoint and Restart,&rdquo;</XREF> describes how to install and administer CPR, and how to configure state files.</PARAGRAPH>
</BULLET>
<BULLET><PARAGRAPH><XREF IDREF="85437" TYPE="TITLE">Chapter&nbsp;3, &ldquo;Programming Checkpoint and Restart,&rdquo;</XREF> talks about how to program checkpoints into applications.</PARAGRAPH>
</BULLET>
</BULLETLIST>
</SECTION1>
<SECTION1 LBL="" HELPID = ""><TITLE>Resources for Further Information</TITLE><PARAGRAPH>The <REFPAGE>cpr(1)</REFPAGE> reference page describes the usage and options of the <COMMAND>cpr</COMMAND> command. The <REFPAGE>ckpt_create(3) </REFPAGE>reference page documents the CPR programming interface; <REFPAGE>ckpt_setup(3)</REFPAGE>, <REFPAGE>ckpt_restart(3)</REFPAGE>, <REFPAGE>ckpt_stat(3)</REFPAGE>, and <REFPAGE>ckpt_remove(3)</REFPAGE> are links to the same page.</PARAGRAPH>
<PARAGRAPH>The <REFPAGE>atcheckpoint(3C)</REFPAGE> reference page describes how to set up checkpoint and restart event handlers; <REFPAGE>atrestart(3C)</REFPAGE> is a link to that page.</PARAGRAPH>
<PARAGRAPH>The internal Web site http://taco.engr.sgi.com/CPR/ is worth visiting for updates about the product. There is no external Web site available yet.<INDEXTARGET ID="0intro3"><!-- POSTPROCESSDATA: 0intro3|Web pages about PCP Internet resources --></PARAGRAPH>
</SECTION1>
<SECTION1 LBL="" HELPID = ""><TITLE>Conventions Used in This Guide</TITLE><PARAGRAPH>The table below lists typographic conventions used in this guide. <INDEXTARGET ID="0intro4"><!-- POSTPROCESSDATA: 0intro4|typographic conventions --></PARAGRAPH>
<TABLE COLUMNS="2"><TABLEHEADING><CELL LEFT="0" WIDTH="141"><PARAGRAPH>Purpose </PARAGRAPH>
</CELL>
<CELL LEFT="150" WIDTH="243"><PARAGRAPH>Example</PARAGRAPH>
</CELL>
</TABLEHEADING>
<TABLEBODY><ROW><CELL LEFT="0" WIDTH="141"><PARAGRAPH>Names of shell commands</PARAGRAPH>
</CELL>
<CELL LEFT="150" WIDTH="243"><PARAGRAPH>The <COMMAND>cpr </COMMAND>command is a command-line interface for CPR.</PARAGRAPH>
</CELL>
</ROW>
<ROW><CELL LEFT="0" WIDTH="141"><PARAGRAPH>Command-line options</PARAGRAPH>
</CELL>
<CELL LEFT="150" WIDTH="243"><PARAGRAPH>The <CMDLINEOPT>-c</CMDLINEOPT> option checkpoints a process, and <CMDLINEOPT>-r</CMDLINEOPT> restarts it.</PARAGRAPH>
</CELL>
</ROW>
<ROW><CELL LEFT="0" WIDTH="141"><PARAGRAPH>System calls and library routines</PARAGRAPH>
</CELL>
<CELL LEFT="150" WIDTH="243"><PARAGRAPH>Processes can checkpoint themselves with <FUNCTION>ckpt_create()</FUNCTION>.</PARAGRAPH>
</CELL>
</ROW>
<ROW><CELL LEFT="0" WIDTH="141"><PARAGRAPH>Filenames and pathnames</PARAGRAPH>
</CELL>
<CELL LEFT="150" WIDTH="243"><PARAGRAPH>Statefile attributes are read from the <FILENAME>$HOME/.cpr</FILENAME> file.</PARAGRAPH>
</CELL>
</ROW>
<ROW><CELL LEFT="0" WIDTH="141"><PARAGRAPH>User input (variables in italic)</PARAGRAPH>
</CELL>
<CELL LEFT="150" WIDTH="243"><PARAGRAPH><USERINPUT>cpr -c </USERINPUT>
<VARIABLE></VARIABLE><VARIABLE>statefile</VARIABLE>
<USERINPUT></USERINPUT><USERINPUT> -p </USERINPUT>
<VARIABLE></VARIABLE><VARIABLE>processID</VARIABLE></PARAGRAPH>
</CELL>
</ROW>
<ROW><CELL LEFT="0" WIDTH="141"><PARAGRAPH>Exact quotes of computer output</PARAGRAPH>
</CELL>
<CELL LEFT="150" WIDTH="243"><PARAGRAPH><SCREENDISPLAY>state10-19: Permission denied.</SCREENDISPLAY></PARAGRAPH>
</CELL>
</ROW>
<ROW><CELL LEFT="0" WIDTH="141"><PARAGRAPH>Titles of manuals</PARAGRAPH>
</CELL>
<CELL LEFT="150" WIDTH="243"><PARAGRAPH>Refer to <DOCTITLE>IRIX Admin: System Configuration and Operation</DOCTITLE>.</PARAGRAPH>
</CELL>
</ROW>
<ROW><CELL LEFT="0" WIDTH="141"><PARAGRAPH>A term defined in the glossary</PARAGRAPH>
</CELL>
<CELL LEFT="150" WIDTH="243"><PARAGRAPH>A <ITALICS>DSO</ITALICS> (dynamic shared object) is linkable at runtime.</PARAGRAPH>
</CELL>
</ROW>
</TABLEBODY>
</TABLE>
</SECTION1>
</INTRODUCTION>

BIN
eoe/books/CPR_OG/1user.doc Normal file

Binary file not shown.

277
eoe/books/CPR_OG/1user.sgm Normal file
View File

@@ -0,0 +1,277 @@
<!-- Produced by version 3.13 (01/04/96) of SGI Frame/SGML translator -->
<CHAPTER LBL="1"><TITLE><XREFTARGET ID="51170">Using Checkpoint and Restart</TITLE><PARAGRAPH>IRIX Checkpoint and Restart (CPR) is a facility for saving a running process or set of processes and, at some later time, restarting the saved process or processes from the point already reached, without starting all over again. The checkpoint image is saved in a set of disk files, and restarted by reading saved state from these files to resume execution.<INDEXTARGET ID="1user1"><!-- POSTPROCESSDATA: 1user1|checkpoint and restart, defined --></PARAGRAPH>
<PARAGRAPH>The <COMMAND>cpr</COMMAND> command provides a command-line interface for checkpointing, restarting checkpointed processes, checking the status of checkpoint and restart operations, and deleting files that contain images of checkpointed processes.<INDEXTARGET ID="1user2"><!-- POSTPROCESSDATA: 1user2|<COMMAND>cpr</COMMAND> command --></PARAGRAPH>
<PARAGRAPH>Checkpointing is useful for halting and continuing resource-intensive programs that take a long time to run. IRIX CPR can help when you need to:</PARAGRAPH>
<BULLETLIST><BULLET><PARAGRAPH>improve a system's load balancing and scheduling</PARAGRAPH>
</BULLET>
<BULLET><PARAGRAPH>run complex simulation or modelling applications</PARAGRAPH>
</BULLET>
<BULLET><PARAGRAPH>replace hardware for high-availability or failsafe applications</PARAGRAPH>
</BULLET>
</BULLETLIST>
<PARAGRAPH>Processes can continue to run after checkpoint, and can be checkpointed multiple times.</PARAGRAPH>
<SECTION1 LBL="" HELPID = ""><TITLE>Definition of Terms</TITLE><PARAGRAPH>A <ITALICS>statefile</ITALICS> is a directory containing information about a process or set of processes (including the names of open files and system objects). Statefiles contain all available information about a running process, to enable restart. The new process(es) should behave just as if the old process(es) had continued. Statefiles are stored as files inside a directory, and are protected by normal IRIX security mechanisms.<INDEXTARGET ID="1user3"><!-- POSTPROCESSDATA: 1user3|statefile, defined --></PARAGRAPH>
<PARAGRAPH>A <ITALICS>checkpoint owner</ITALICS> is the owner of all checkpointed processes and the resulting statefiles. Only the checkpoint owner or superuser is permitted to perform a checkpoint. If targeted processes have multiple owners, only the superuser is permitted to checkpoint them. Only the checkpoint owner or superuser can restart checkpointed process(es) from a statefile. If the superuser performed a checkpoint, only the superuser can restart it.<INDEXTARGET ID="1user4"><!-- POSTPROCESSDATA: 1user4|checkpoint owner, defined --></PARAGRAPH>
<PARAGRAPH>A <ITALICS>process group</ITALICS> is a set of processes that constitute a logical job&mdash;they share the same process group ID. For example, modern UNIX shells arrange pipelined programs into a process group, so they all can be suspended and managed with the shell's job control facilities. You can determine the process group ID using the <CMDLINEOPT>-j</CMDLINEOPT> option of the <COMMAND>ps</COMMAND> command; see <REFPAGE>ps(1)</REFPAGE>. Programmers can change the process group ID using the <FUNCTION>setpgid()</FUNCTION> system call; see <REFPAGE>setpgid(2)</REFPAGE>.<INDEXTARGET ID="1user5"><!-- POSTPROCESSDATA: 1user5|process group, defined --></PARAGRAPH>
<PARAGRAPH>A <ITALICS>process session</ITALICS> is a set of processes started from the same physical or logical terminal. Such processes share the same session ID. You can determine the process group ID and the session ID (SID) of any process by giving the <CMDLINEOPT>-j</CMDLINEOPT> option to the <COMMAND>ps</COMMAND> command; see <REFPAGE>ps(1)</REFPAGE>. Programmers can change the session ID using the <FUNCTION>setsid()</FUNCTION> system call; see <REFPAGE>setsid(2)</REFPAGE>.<INDEXTARGET ID="1user6"><!-- POSTPROCESSDATA: 1user6|process session, defined --></PARAGRAPH>
<PARAGRAPH>An <ITALICS>IRIX array session </ITALICS>is a set of conceptually related processes running on different nodes in an array. Support is provided by the array services daemon, which knows about array configuration and provides functions for describing and administering the processes of a single job. The principal use of array services is to run jobs that are large enough to span two or more machines.<INDEXTARGET ID="1user7"><!-- POSTPROCESSDATA: 1user7|IRIX array session, defined array session, defined --></PARAGRAPH>
<PARAGRAPH>A <ITALICS>process hierarchy </ITALICS>is the set of all child processes with a common parent. The process hierarchy is identified by giving the process ID of the parent process. A process session is one example of a process hierarchy, but by no means the only example.<INDEXTARGET ID="1user8"><!-- POSTPROCESSDATA: 1user8|process hierarchy, defined --></PARAGRAPH>
<PARAGRAPH>A <ITALICS>share group</ITALICS> is a group of processes created from a common ancestor by <FUNCTION>sproc()</FUNCTION> system calls; see sproc(2). The <FUNCTION>sproc()</FUNCTION> call is like <FUNCTION>fork()</FUNCTION>, except that after <FUNCTION>sproc()</FUNCTION>, the new child process can share the virtual address space of the parent process. The parent and child each have their own program counter value and stack pointer, but text and data space are visible to both processes. This provides a mechanism for building parallel programs.<INDEXTARGET ID="1user9"><!-- POSTPROCESSDATA: 1user9|sproc share group, defined share group, defined --></PARAGRAPH>
<SECTION2 LBL="" HELPID = ""><TITLE>Verifying eoe.sw.cpr</TITLE><PARAGRAPH>To verify that CPR runs on your system, check that the eoe.sw.cpr subsystem is installed:<INDEXTARGET ID="1user10"><!-- POSTPROCESSDATA: 1user10|eoe.sw.cpr subsystem --></PARAGRAPH>
<CODE>
$ <USERINPUT>versions eoe.sw.cpr</USERINPUT>&space;
I = Installed, R = Removed
&space; Name Date Description
I eoe 09/28/96 IRIX Execution Environment, 6.3
I eoe.sw 09/14/96 IRIX Execution Environment Software
I eoe.sw.cpr 09/14/96 Checkpoint and Restart
</CODE>
<PARAGRAPH>If no CPR subsystem is installed, see <XREF IDREF="41739" TYPE="TITLE">&ldquo;Installing eoe.sw.cpr&rdquo;</XREF> for instructions on installing CPR.</PARAGRAPH>
</SECTION2>
</SECTION1>
<SECTION1 LBL="" HELPID = ""><TITLE>Checkpointing Processes</TITLE><PARAGRAPH>To checkpoint a set of processes (one process or more), employ the <CMDLINEOPT>-c</CMDLINEOPT> option of the <INDEXTARGET ID="1user11"><!-- POSTPROCESSDATA: 1user11|-c option (checkpoint) --><COMMAND>cpr</COMMAND> command, providing a <FILENAME>statefile</FILENAME> name, and specifying a process ID with the <CMDLINEOPT>-p</CMDLINEOPT> option. For example, to checkpoint process 111 into statefile <INDEXTARGET ID="1user12"><!-- POSTPROCESSDATA: 1user12|-p option (process ID) --><FILENAME>ckptSep7</FILENAME>, type this command:<INDEXTARGET ID="1user13"><!-- POSTPROCESSDATA: 1user13|checkpointing processes --></PARAGRAPH>
<CODE>
$ <USERINPUT>cpr -c ckptSep7 -p 1111</USERINPUT>
</CODE>
<PARAGRAPH>To checkpoint all processes in a process group, type the process group ID (for example, 123) followed by the :GID modifier:<INDEXTARGET ID="1user14"><!-- POSTPROCESSDATA: 1user14|GID modifier --></PARAGRAPH>
<CODE>
$ <USERINPUT>cpr -c </USERINPUT><VARIABLE>statefile</VARIABLE><USERINPUT>&space;-p 123:GID</USERINPUT>
</CODE>
<PARAGRAPH>To checkpoint all processes in a process session, type the process session ID (for example, 345) followed by the :SID modifier:<INDEXTARGET ID="1user15"><!-- POSTPROCESSDATA: 1user15|SID modifier --></PARAGRAPH>
<CODE>
$ <USERINPUT>cpr -c </USERINPUT><VARIABLE>statefile</VARIABLE><USERINPUT>&space;-p 345:SID</USERINPUT>
</CODE>
<PARAGRAPH>To checkpoint all processes in an IRIX array session, type the array session ID (for example, 0x8000abcd00001111) followed by the :ASH modifier:<INDEXTARGET ID="1user16"><!-- POSTPROCESSDATA: 1user16|ASH modifier --></PARAGRAPH>
<CODE>
$ <USERINPUT>cpr -c </USERINPUT><VARIABLE>statefile</VARIABLE><USERINPUT>&space;-p 0x8000abcd00001111:ASH</USERINPUT>
</CODE>
<PARAGRAPH>To checkpoint all processes in a process hierarchy, type the parent process ID (for example, 567) followed by the :HID modifier:<INDEXTARGET ID="1user17"><!-- POSTPROCESSDATA: 1user17|HID modifier --></PARAGRAPH>
<CODE>
$ <USERINPUT>cpr -c </USERINPUT><VARIABLE>statefile</VARIABLE><USERINPUT>&space;-p 567:HID</USERINPUT>
</CODE>
<PARAGRAPH>To checkpoint all processes in an <FUNCTION>sproc()</FUNCTION> share group, type the share group ID (for example, 789) followed by the :SGP modifier:<INDEXTARGET ID="1user18"><!-- POSTPROCESSDATA: 1user18|SGP modifier --></PARAGRAPH>
<CODE>
$ <USERINPUT>cpr -c </USERINPUT><VARIABLE>statefile</VARIABLE><USERINPUT>&space;-p 789:SGP</USERINPUT>
</CODE>
<PARAGRAPH>It is possible to combine process designators using the comma separator, as in the following example. All processes are recorded in the same <FILENAME>statefile</FILENAME>.</PARAGRAPH>
<CODE>
$ <USERINPUT>cpr -c ckptSep8 -p 1113,1225,1397:HID</USERINPUT>
</CODE>
<SECTION2 LBL="" HELPID = ""><TITLE>Naming the Checkpoint Image</TITLE><PARAGRAPH>You can place the <FILENAME>statefile</FILENAME> anywhere, provided you have write permission for the target directory, and provided there is enough disk space to store the checkpoint images. You might want to include the date as part of the <FILENAME>statefile</FILENAME> name, or you might want to number <FILENAME>statefiles</FILENAME> consecutively. The <CMDLINEOPT>-f</CMDLINEOPT> option forces overwrite of an existing <FILENAME>statefile</FILENAME>.<INDEXTARGET ID="1user19"><!-- POSTPROCESSDATA: 1user19|-f option (force overwrite) --></PARAGRAPH>
</SECTION2>
<SECTION2 LBL="" HELPID = ""><TITLE>Job Control Shells</TITLE><PARAGRAPH>The C shell (<COMMAND>csh</COMMAND>), Korn shell (<COMMAND>ksh</COMMAND> or, after IRIX 6.3, <COMMAND>sh</COMMAND>), Tops C shell (<COMMAND>tcsh</COMMAND>), and GNU shell (<COMMAND>bash</COMMAND>) all support job control. The Bourne shell (<INDEXTARGET ID="1user20"><!-- POSTPROCESSDATA: 1user20|C shell Korn shell --><COMMAND>bsh</COMMAND>, formerly <COMMAND>sh</COMMAND>) does not. Jobs can be suspended with <INDEXTARGET ID="1user21"><!-- POSTPROCESSDATA: 1user21|Bourne shell --><SCREENDISPLAY>Ctrl+Z</SCREENDISPLAY>, backgrounded with the <COMMAND>bg</COMMAND> built-in command, or foregrounded with <COMMAND>fg</COMMAND>. All job control shells provide the <COMMAND>jobs</COMMAND> built-in command with an <CMDLINEOPT>-l</CMDLINEOPT> option to list process ID numbers, and a <CMDLINEOPT>-p</CMDLINEOPT> option to show the process group ID of a job.<INDEXTARGET ID="1user22"><!-- POSTPROCESSDATA: 1user22|job control shells shells and job control --></PARAGRAPH>
</SECTION2>
</SECTION1>
<SECTION1 LBL="" HELPID = ""><TITLE>Restarting Processes</TITLE><PARAGRAPH>To restart a set of processes (one process or more), employ the <CMDLINEOPT>-r </CMDLINEOPT>option of the <INDEXTARGET ID="1user23"><!-- POSTPROCESSDATA: 1user23|-r option (restart) --><COMMAND>cpr</COMMAND> command, providing just the <FILENAME>statefile</FILENAME> name. For example, to restart the set of processes checkpointed in <FILENAME>ckptSep7</FILENAME>, type this command:<INDEXTARGET ID="1user24"><!-- POSTPROCESSDATA: 1user24|restarting processes --></PARAGRAPH>
<CODE>
$ <USERINPUT>cpr -j -r ckptSep7 </USERINPUT>
</CODE>
<PARAGRAPH>Use the <CMDLINEOPT>-j</CMDLINEOPT> option if you want to perform interactive job control after restart. Otherwise, the process group restored belongs to <COMMAND>init</COMMAND>, effectively disabling job control.<INDEXTARGET ID="1user25"><!-- POSTPROCESSDATA: 1user25|-j option (interactive job control) --></PARAGRAPH>
<PARAGRAPH>You may restart more than one <FILENAME>statefile</FILENAME> with the same <COMMAND>cpr</COMMAND> command. If a restart involves more than one process, all restarts must succeed before any process is allowed to run; otherwise all restarts fail. Restart failure can occur for any of the following reasons:<INDEXTARGET ID="1user26"><!-- POSTPROCESSDATA: 1user26|restart failure, reasons failure to restart, reasons --></PARAGRAPH>
<HANGLIST><HANGPAIR><HANGITEM>unavailable PID </HANGITEM>
<HANGBODY><PARAGRAPH>&lbreak;The original process ID is not available (already in use), and the option to allow ANY process ID was not in effect.</PARAGRAPH>
</HANGBODY>
</HANGPAIR>
<HANGPAIR><HANGITEM>component unavailable </HANGITEM>
<HANGBODY><PARAGRAPH>&lbreak;Application binaries or libraries are no longer available on the system, and neither the REPLACE nor SUBSTITUTE option was in effect.</PARAGRAPH>
</HANGBODY>
</HANGPAIR>
<HANGPAIR><HANGITEM>security and data integrity </HANGITEM>
<HANGBODY><PARAGRAPH>&lbreak;The user lacks proper permission to restart the <FILENAME>statefile</FILENAME>, or the restart will destroy or replace data without proper authorization. Only the checkpoint owner and the superuser may restart a set of processes.</PARAGRAPH>
</HANGBODY>
</HANGPAIR>
<HANGPAIR><HANGITEM>resource limitation</HANGITEM>
<HANGBODY><PARAGRAPH> &lbreak;System resources such as disk space, memory (swap space), or number of processes allowed, ran out during restart.</PARAGRAPH>
</HANGBODY>
</HANGPAIR>
<HANGPAIR><HANGITEM>other fatal failure </HANGITEM>
<HANGBODY><PARAGRAPH>&lbreak;Some important part of a process restart failed for unknown reasons.</PARAGRAPH>
</HANGBODY>
</HANGPAIR>
</HANGLIST>
<SECTION2 LBL="" HELPID = ""><TITLE>Persistence of Statefiles</TITLE><PARAGRAPH>The <FILENAME>statefile</FILENAME> remains unchanged after restart&mdash;<COMMAND>cpr</COMMAND> does not delete it automatically. To free disk space, use the <CMDLINEOPT>-D</CMDLINEOPT> option of <COMMAND>cpr</COMMAND>; see the section <XREF IDREF="40587" TYPE="TITLE">&ldquo;Deleting Statefiles.&rdquo;</XREF>&space;<INDEXTARGET ID="1user27"><!-- POSTPROCESSDATA: 1user27|persistence of statefiles statefile persistence --></PARAGRAPH>
</SECTION2>
<SECTION2 LBL="" HELPID = ""><TITLE>Job Control Option</TITLE><PARAGRAPH>If a checkpoint is issued against an interactive process or a group of processes rooted at an interactive process, it can be restarted interactively with the <CMDLINEOPT>-j</CMDLINEOPT> option. This option makes processes interactive and job-controllable. The restarted processes run in the foreground, even the original ones ran in the background. Users may issue job control signals to background the process if desired. An interactive job is defined as a process with a controlling terminal; see <REFPAGE>termio(7)</REFPAGE>. Only one controlling terminal is restored even if the original process had multiple controlling terminals.<INDEXTARGET ID="1user28"><!-- POSTPROCESSDATA: 1user28|-j option (interactive job control) --></PARAGRAPH>
</SECTION2>
</SECTION1>
<SECTION1 LBL="" HELPID = ""><TITLE>Querying Checkpoint Status</TITLE><PARAGRAPH>To obtain information about checkpoint status, employ the <CMDLINEOPT>-i </CMDLINEOPT>option of the <INDEXTARGET ID="1user29"><!-- POSTPROCESSDATA: 1user29|-i option (status information) --><COMMAND>cpr</COMMAND> command, providing the <FILENAME>statefile</FILENAME> name. You may query more than one <FILENAME>statefile</FILENAME> at a time. For example, to get information about the set of processes checkpointed in <FILENAME>ckptSep7</FILENAME>, either before or after restart, type this command:<INDEXTARGET ID="1user30"><!-- POSTPROCESSDATA: 1user30|status of checkpoint querying checkpoint status --></PARAGRAPH>
<CODE>
$ <USERINPUT>cpr -i ckptSep7 </USERINPUT>
</CODE>
<PARAGRAPH>This displays information about the <FILENAME>statefile </FILENAME>revision number, process names, credential information for the processes, the current working directory, open file information, the time when the checkpoint was done, and so forth.</PARAGRAPH>
</SECTION1>
<SECTION1 LBL="" HELPID = ""><TITLE><XREFTARGET ID="40587">Deleting Statefiles</TITLE><PARAGRAPH>To delete a <FILENAME>statefile</FILENAME> and its associated open files and system objects, use the <CMDLINEOPT>-D </CMDLINEOPT>option of the <INDEXTARGET ID="1user31"><!-- POSTPROCESSDATA: 1user31|-D option (delete statefile) --><COMMAND>cpr</COMMAND> command, providing a <FILENAME>statefile</FILENAME> name. You may delete more than one <FILENAME>statefile</FILENAME> at a time. For example, to delete the file <FILENAME>ckptSep7</FILENAME>, type this command:<INDEXTARGET ID="1user32"><!-- POSTPROCESSDATA: 1user32|deleting statefiles statefile deletion --></PARAGRAPH>
<CODE>
$ <USERINPUT>cpr -D ckptSep7 </USERINPUT>
</CODE>
<PARAGRAPH>Only the checkpoint owner and the superuser may delete a <FILENAME>statefile</FILENAME> directory. Once a checkpoint statefile has been deleted, restart is no longer possible.</PARAGRAPH>
</SECTION1>
<SECTION1 LBL="" HELPID = ""><TITLE>Graphical Interface&mdash;cview</TITLE><PARAGRAPH>The <COMMAND>cview</COMMAND> command brings up a graphical interface for CPR and provides access to all features of the <INDEXTARGET ID="1user33"><!-- POSTPROCESSDATA: 1user33|<COMMAND>cview</COMMAND> command --><COMMAND>cpr</COMMAND> command. Online help is available. The checkpoint control panel, shown in <INDEXTARGET ID="1user34"><!-- POSTPROCESSDATA: 1user34|graphical user interface, <COMMAND>cview</COMMAND> --><XREF IDREF="50722" TYPE="GRAPHIC">Figure&nbsp;1-1</XREF>, displays a list of processes that may be checkpointed.</PARAGRAPH>
<PARAGRAPH><FIGURE><GRAPHIC FILE="checkpoint.gif" POSITION="INLINE" SCALE="FALSE"><CAPTION LBL="1-1"><PREFIX>Figure 1-1 </PREFIX><XREFTARGET ID="50722">Checkpoint Control Panel (<COMMAND>cview</COMMAND>)</CAPTION>
</FIGURE>
</PARAGRAPH>
<PARAGRAPH>Checkpoint options may be set in step II, and are explained in the section <XREF IDREF="59841" TYPE="TITLE">&ldquo;Checkpoint and Restart Attributes.&rdquo;</XREF> Click the right tab at the bottom to switch panels.</PARAGRAPH>
<PARAGRAPH>The restart control panel, shown in <XREF IDREF="78584" TYPE="GRAPHIC">Figure&nbsp;1-2</XREF>, displays a list of statefiles that may be restarted. The buttons near the bottom query checkpoints and delete statefiles.</PARAGRAPH>
<PARAGRAPH><FIGURE><GRAPHIC FILE="restart.gif" POSITION="INLINE" SCALE="FALSE"><CAPTION LBL="1-2"><PREFIX>Figure 1-2 </PREFIX><XREFTARGET ID="78584">Restart Control Panel (<COMMAND>cview</COMMAND>)</CAPTION>
</FIGURE>
</PARAGRAPH>
</SECTION1>
<SECTION1 LBL="" HELPID = ""><TITLE><XREFTARGET ID="59841">Checkpoint and Restart Attributes</TITLE><PARAGRAPH>The <COMMAND>cpr</COMMAND> command reads an attribute file at start-up time to set checkpoint configuration and control restart behavior. Typical defaults are given in the <FILENAME>/etc/cpr_proto</FILENAME> sample file. You can control CPR behavior by creating a similar <INDEXTARGET ID="1user35"><!-- POSTPROCESSDATA: 1user35|/etc/cpr_proto sample file attribute file, CPR --><FILENAME>.cpr</FILENAME> attribute file in your home directory (if $HOME is not set, <COMMAND>cpr</COMMAND> consults the password entry). The CPR attribute file consists of one or more CKPT attribute definitions, each in the following format:<INDEXTARGET ID="1user36"><!-- POSTPROCESSDATA: 1user36|.cpr attribute file $HOME/.cpr attribute file --><INDEXTARGET ID="1user37"><!-- POSTPROCESSDATA: 1user37|CKPT attribute definitions --></PARAGRAPH>
<CODE>
CKPT IDtype IDvalue {
&space; policy: instance: action
&space; ...
}
</CODE>
<PARAGRAPH>Possible values for <VARIABLE>IDtype</VARIABLE>&space;are similar to process ID modifiers for the <INDEXTARGET ID="1user38"><!-- POSTPROCESSDATA: 1user38|IDtype modifier options --><CMDLINEOPT>-c</CMDLINEOPT> option of <COMMAND>cpr</COMMAND>, and are shown in <XREF IDREF="66931" TYPE="TABLE">Table&nbsp;1-1</XREF>. <VARIABLE>IDvalue</VARIABLE>&space;specifies the process ID or process set ID.<INDEXTARGET ID="1user39"><!-- POSTPROCESSDATA: 1user39|IDvalue process set ID --></PARAGRAPH>
<TABLE COLUMNS="2"><CAPTION LBL="1-1"><PREFIX>Table 1-1 </PREFIX><XREFTARGET ID="66931">IDtype Modifier Options</CAPTION>
<TABLEHEADING><CELL LEFT="0" WIDTH="30"><PARAGRAPH>IDtype</PARAGRAPH>
</CELL>
<CELL LEFT="35" WIDTH="225"><PARAGRAPH>Process Type Designation</PARAGRAPH>
</CELL>
</TABLEHEADING>
<TABLEBODY><ROW><CELL LEFT="0" WIDTH="30"><PARAGRAPH>PID</PARAGRAPH>
</CELL>
<CELL LEFT="35" WIDTH="225"><PARAGRAPH>UNIX process ID or POSIX thread ID.</PARAGRAPH>
</CELL>
</ROW>
<ROW><CELL LEFT="0" WIDTH="30"><PARAGRAPH>GID</PARAGRAPH>
</CELL>
<CELL LEFT="35" WIDTH="225"><PARAGRAPH>UNIX process group ID; see <REFPAGE>setpgrp(2)</REFPAGE>.</PARAGRAPH>
</CELL>
</ROW>
<ROW><CELL LEFT="0" WIDTH="30"><PARAGRAPH>SID</PARAGRAPH>
</CELL>
<CELL LEFT="35" WIDTH="225"><PARAGRAPH>UNIX process session ID; see <REFPAGE>setsid(2)</REFPAGE>.</PARAGRAPH>
</CELL>
</ROW>
<ROW><CELL LEFT="0" WIDTH="30"><PARAGRAPH>ASH</PARAGRAPH>
</CELL>
<CELL LEFT="35" WIDTH="225"><PARAGRAPH>IRIX array session ID; see <REFPAGE>array_sessions(5)</REFPAGE>.</PARAGRAPH>
</CELL>
</ROW>
<ROW><CELL LEFT="0" WIDTH="30"><PARAGRAPH>HID</PARAGRAPH>
</CELL>
<CELL LEFT="35" WIDTH="225"><PARAGRAPH>Process hierarchy (tree) rooted at the given process ID.</PARAGRAPH>
</CELL>
</ROW>
<ROW><CELL LEFT="0" WIDTH="30"><PARAGRAPH>SGP</PARAGRAPH>
</CELL>
<CELL LEFT="35" WIDTH="225"><PARAGRAPH>IRIX <FUNCTION>sproc()</FUNCTION> shared group; see <REFPAGE>sproc(2)</REFPAGE>.</PARAGRAPH>
</CELL>
</ROW>
<ROW><CELL LEFT="0" WIDTH="30"><PARAGRAPH>*</PARAGRAPH>
</CELL>
<CELL LEFT="35" WIDTH="225"><PARAGRAPH>A wild card for anything.</PARAGRAPH>
</CELL>
</ROW>
</TABLEBODY>
</TABLE>
<PARAGRAPH>The <VARIABLE>policy </VARIABLE>lines inside the CKPT block specify default actions for CPR to take. Possible values for <VARIABLE>policy</VARIABLE>&space;are shown in <INDEXTARGET ID="1user40"><!-- POSTPROCESSDATA: 1user40|policy names and actions --><XREF IDREF="79618" TYPE="TABLE">Table&nbsp;1-2</XREF>. </PARAGRAPH>
<TABLE COLUMNS="2"><CAPTION LBL="1-2"><PREFIX>Table 1-2 </PREFIX><XREFTARGET ID="79618">Policy Names and Actions</CAPTION>
<TABLEHEADING><CELL LEFT="0" WIDTH="54"><PARAGRAPH>Policy Name</PARAGRAPH>
</CELL>
<CELL LEFT="60" WIDTH="220"><PARAGRAPH>Domain of Action</PARAGRAPH>
</CELL>
</TABLEHEADING>
<TABLEBODY><ROW><CELL LEFT="0" WIDTH="54"><PARAGRAPH>FILE</PARAGRAPH>
</CELL>
<CELL LEFT="60" WIDTH="220"><PARAGRAPH>Policies for handling open files.</PARAGRAPH>
</CELL>
</ROW>
<ROW><CELL LEFT="0" WIDTH="54"><PARAGRAPH>WILL</PARAGRAPH>
</CELL>
<CELL LEFT="60" WIDTH="220"><PARAGRAPH>Actions on the original process after checkpoint.</PARAGRAPH>
</CELL>
</ROW>
<ROW><CELL LEFT="0" WIDTH="54"><PARAGRAPH>CDIR</PARAGRAPH>
</CELL>
<CELL LEFT="60" WIDTH="220"><PARAGRAPH>Policy on the original working directory; see <REFPAGE>chdir(2)</REFPAGE>.</PARAGRAPH>
</CELL>
</ROW>
<ROW><CELL LEFT="0" WIDTH="54"><PARAGRAPH>RDIR</PARAGRAPH>
</CELL>
<CELL LEFT="60" WIDTH="220"><PARAGRAPH>Policy on the original root directory; see <REFPAGE>chroot(2)</REFPAGE>.</PARAGRAPH>
</CELL>
</ROW>
<ROW><CELL LEFT="0" WIDTH="54"><PARAGRAPH>FORK</PARAGRAPH>
</CELL>
<CELL LEFT="60" WIDTH="220"><PARAGRAPH>Policy on original process ID.</PARAGRAPH>
</CELL>
</ROW>
</TABLEBODY>
</TABLE>
<SECTION2 LBL="" HELPID = ""><TITLE>FILE Policy</TITLE><PARAGRAPH>The FILE policy is the only one that takes an optional <VARIABLE>instance</VARIABLE> field. This field specifies files that have a unique disposition, other than the default action. For example, in one case you want to replace a file, but in another case you want to append to a file. The <VARIABLE>instance</VARIABLE> field is enclosed in double quotes and may contain wildcards. For example, <SCREENDISPLAY>/tmp/*</SCREENDISPLAY> identifies all files in the <FILENAME>/tmp</FILENAME> directory, and <SCREENDISPLAY>/*</SCREENDISPLAY> identifies all files in the system.<INDEXTARGET ID="1user41"><!-- POSTPROCESSDATA: 1user41|FILE policy action keywords --></PARAGRAPH>
<PARAGRAPH>The following <VARIABLE>action</VARIABLE> keywords are available for the FILE policy:</PARAGRAPH>
<HANGLIST><HANGPAIR><HANGITEM>MERGE</HANGITEM>
<HANGBODY><PARAGRAPH>No explicit file save at checkpoint. Upon restart, reopen the file and seek to the previous offset. This is the default file disposition. It may be used for files that are not modified after checkpoint, or for files where it is acceptable to overwrite changes made between checkpoint and restart time, particularly past the saved offset point. If programs seek before writing, changes preceding the offset point could be overwritten as well.<INDEXTARGET ID="1user42"><!-- POSTPROCESSDATA: 1user42|MERGE action keyword --></PARAGRAPH>
</HANGBODY>
</HANGPAIR>
<HANGPAIR><HANGITEM>IGNORE </HANGITEM>
<HANGBODY><PARAGRAPH>No explicit file save at checkpoint. Upon restart, reopen the file as it was originally opened, at offset zero (even if originally opened for append). If the file was originally opened for writing, as with the <FUNCTION>fopen()</FUNCTION> &ldquo;w&rdquo; or &ldquo;a&rdquo; flag, this action has the effect of overwriting the entire file.<INDEXTARGET ID="1user43"><!-- POSTPROCESSDATA: 1user43|IGNORE action keyword --></PARAGRAPH>
</HANGBODY>
</HANGPAIR>
<HANGPAIR><HANGITEM>APPEND </HANGITEM>
<HANGBODY><PARAGRAPH>No explicit file save at checkpoint. Upon restart, append to the end of the file. This disposition is good for log files.<INDEXTARGET ID="1user44"><!-- POSTPROCESSDATA: 1user44|APPEND action keyword --></PARAGRAPH>
</HANGBODY>
</HANGPAIR>
<HANGPAIR><HANGITEM>REPLACE </HANGITEM>
<HANGBODY><PARAGRAPH>Explicitly save the file at checkpoint. Upon restart, replace the original file with the saved one. Any changes made to the original file between checkpoint and restart time are overwritten by the saved file.<INDEXTARGET ID="1user45"><!-- POSTPROCESSDATA: 1user45|REPLACE action keyword --></PARAGRAPH>
</HANGBODY>
</HANGPAIR>
<HANGPAIR><HANGITEM>SUBSTITUTE</HANGITEM>
<HANGBODY><PARAGRAPH>Explicitly save the file at checkpoint. Upon restart, reopen the saved file as an anonymous substitution for the original file. This is similar to the REPLACE mode except that the original file remains untouched, unless specifically altered by the program.<INDEXTARGET ID="1user46"><!-- POSTPROCESSDATA: 1user46|SUBSTITUTE action keyword --></PARAGRAPH>
</HANGBODY>
</HANGPAIR>
</HANGLIST>
</SECTION2>
<SECTION2 LBL="" HELPID = ""><TITLE>WILL Policy</TITLE><PARAGRAPH>The following <VARIABLE>action</VARIABLE> keywords are available for the WILL policy:<INDEXTARGET ID="1user47"><!-- POSTPROCESSDATA: 1user47|WILL policy action keywords --></PARAGRAPH>
<HANGLIST><HANGPAIR><HANGITEM>EXIT</HANGITEM>
<HANGBODY><PARAGRAPH>The original process exits after checkpoint. This is the default action.<INDEXTARGET ID="1user48"><!-- POSTPROCESSDATA: 1user48|EXIT action keyword --></PARAGRAPH>
</HANGBODY>
</HANGPAIR>
<HANGPAIR><HANGITEM>KILL</HANGITEM>
<HANGBODY><PARAGRAPH>Same as above. Has the same effect as the <INDEXTARGET ID="1user49"><!-- POSTPROCESSDATA: 1user49|KILL action keyword --><COMMAND>cpr</COMMAND>&space;<CMDLINEOPT>-k</CMDLINEOPT> option.<INDEXTARGET ID="1user50"><!-- POSTPROCESSDATA: 1user50|-k option (kill process) --></PARAGRAPH>
</HANGBODY>
</HANGPAIR>
<HANGPAIR><HANGITEM>CONT</HANGITEM>
<HANGBODY><PARAGRAPH>The original process continues to run after checkpoint. Has the same effect as the <INDEXTARGET ID="1user51"><!-- POSTPROCESSDATA: 1user51|CONT action keyword --><COMMAND>cpr</COMMAND>&space;<CMDLINEOPT>-g</CMDLINEOPT> option.<INDEXTARGET ID="1user52"><!-- POSTPROCESSDATA: 1user52|-g option (go continue) --></PARAGRAPH>
</HANGBODY>
</HANGPAIR>
</HANGLIST>
</SECTION2>
<SECTION2 LBL="" HELPID = ""><TITLE>CDIR or RDIR Policy</TITLE><PARAGRAPH>The following <VARIABLE>action</VARIABLE> keywords are available for the CDIR and RDIR policies:<INDEXTARGET ID="1user53"><!-- POSTPROCESSDATA: 1user53|CDIR policy action keywords RDIR policy action keywords --></PARAGRAPH>
<HANGLIST><HANGPAIR><HANGITEM>REPLACE </HANGITEM>
<HANGBODY><PARAGRAPH>Set the current working directory (CDIR) or the root directory (RDIR) to those of the original process. This is the default action.<INDEXTARGET ID="1user54"><!-- POSTPROCESSDATA: 1user54|REPLACE action keyword --></PARAGRAPH>
</HANGBODY>
</HANGPAIR>
<HANGPAIR><HANGITEM>IGNORE </HANGITEM>
<HANGBODY><PARAGRAPH>Ignore the current working directory (CDIR) or the root directory (RDIR) of the original process, and restart processes based on the current working directory or the root directory of the new process environment.<INDEXTARGET ID="1user55"><!-- POSTPROCESSDATA: 1user55|IGNORE action keyword --></PARAGRAPH>
</HANGBODY>
</HANGPAIR>
</HANGLIST>
</SECTION2>
<SECTION2 LBL="" HELPID = ""><TITLE>FORK Policy</TITLE><PARAGRAPH>The following <VARIABLE>action</VARIABLE> keywords are available for the FORK policy:<INDEXTARGET ID="1user56"><!-- POSTPROCESSDATA: 1user56|FORK policy action keywords --></PARAGRAPH>
<HANGLIST><HANGPAIR><HANGITEM>ORIGINAL</HANGITEM>
<HANGBODY><PARAGRAPH>Do a special <FUNCTION>fork()</FUNCTION> to recover the original process ID. This is the default action.<INDEXTARGET ID="1user57"><!-- POSTPROCESSDATA: 1user57|ORIGINAL action keyword --></PARAGRAPH>
</HANGBODY>
</HANGPAIR>
<HANGPAIR><HANGITEM>ANY</HANGITEM>
<HANGBODY><PARAGRAPH>This says it is acceptable for the application to have any process ID as its underlying process if the original process ID is already taken by another running process. In other words, the application itself, internally and in its relationship to other processes, is PID-unaware. If a set of processes is PID-unaware, the ANY action can be specified to avoid PID collisions.<INDEXTARGET ID="1user58"><!-- POSTPROCESSDATA: 1user58|ANY action keyword --></PARAGRAPH>
</HANGBODY>
</HANGPAIR>
</HANGLIST>
<PARAGRAPH>There is no attribute equivalent to the <COMMAND>cpr</COMMAND>&space;<CMDLINEOPT>-u</CMDLINEOPT> option for operating system upgrade.<INDEXTARGET ID="1user59"><!-- POSTPROCESSDATA: 1user59|-u option (upgrade OS) --></PARAGRAPH>
</SECTION2>
<SECTION2 LBL="" HELPID = ""><TITLE>Example Attribute File</TITLE><PARAGRAPH>The <FILENAME>$HOME/cpr</FILENAME> file specifies a user's CPR default attributes. Here is an example of a custom <INDEXTARGET ID="1user60"><!-- POSTPROCESSDATA: 1user60|.cpr attribute file attribute file, CPR --><FILENAME>.cpr</FILENAME> attribute file:<INDEXTARGET ID="1user61"><!-- POSTPROCESSDATA: 1user61|.cpr example $HOME/.cpr example --></PARAGRAPH>
<CODE>
CKPT PID 1111 {
&space; FILE: "/tmp/*": REPLACE
&space; WILL CONT
&space; FORK ANY
}
</CODE>
<PARAGRAPH>This saves and restores all <FILENAME>/tmp</FILENAME> files, allows the process to continue after checkpoint, and permits process ID substitution if needed.</PARAGRAPH>
</SECTION2>
</SECTION1>
</CHAPTER>

BIN
eoe/books/CPR_OG/2admin.doc Normal file

Binary file not shown.

293
eoe/books/CPR_OG/2admin.sgm Normal file
View File

@@ -0,0 +1,293 @@
<!-- Produced by version 3.13 (01/04/96) of SGI Frame/SGML translator -->
<CHAPTER LBL="2"><TITLE><XREFTARGET ID="60915">Administering Checkpoint and Restart</TITLE><SECTION1 LBL="" HELPID = ""><TITLE>Responsibilities of the Administrator</TITLE><PARAGRAPH>IRIX Checkpoint and Restart (CPR) adds the following responsibilities to the system administrator's already long list:<INDEXTARGET ID="2admin1"><!-- POSTPROCESSDATA: 2admin1|responsibilities of administrator system administrator responsibilities --></PARAGRAPH>
<BULLETLIST><BULLET><PARAGRAPH>install CPR software on server systems as required</PARAGRAPH>
</BULLET>
<BULLET><PARAGRAPH>help users employ CPR on server systems and workstations</PARAGRAPH>
</BULLET>
<BULLET><PARAGRAPH>prevent statefiles from filling up available disk space</PARAGRAPH>
</BULLET>
<BULLET><PARAGRAPH>delete, or encourage users to delete, unneeded old statefiles</PARAGRAPH>
</BULLET>
</BULLETLIST>
</SECTION1>
<SECTION1 LBL="" HELPID = ""><TITLE><XREFTARGET ID="41739">Installing eoe.sw.cpr</TITLE><PARAGRAPH>The subsystems that make up CPR are listed in <INDEXTARGET ID="2admin2"><!-- POSTPROCESSDATA: 2admin2|eoe.sw.cpr subsystem --><XREF IDREF="70036" TYPE="TABLE">Table&nbsp;2-1</XREF>. </PARAGRAPH>
<TABLE COLUMNS="2"><CAPTION LBL="2-1"><PREFIX>Table 2-1 </PREFIX><XREFTARGET ID="70036">CPR Product Subsystems</CAPTION>
<TABLEHEADING><CELL LEFT="0" WIDTH="72"><PARAGRAPH>Subsystem Name</PARAGRAPH>
</CELL>
<CELL LEFT="80" WIDTH="169"><PARAGRAPH>Contents</PARAGRAPH>
</CELL>
</TABLEHEADING>
<TABLEBODY><ROW><CELL LEFT="0" WIDTH="72"><PARAGRAPH>eoe.sw.cpr</PARAGRAPH>
</CELL>
<CELL LEFT="80" WIDTH="169"><PARAGRAPH>Checkpoint and restart software.</PARAGRAPH>
</CELL>
</ROW>
<ROW><CELL LEFT="0" WIDTH="72"><PARAGRAPH>eoe.man.cpr</PARAGRAPH>
</CELL>
<CELL LEFT="80" WIDTH="169"><PARAGRAPH>CPR reference manual pages.</PARAGRAPH>
</CELL>
</ROW>
<ROW><CELL LEFT="0" WIDTH="72"><PARAGRAPH>eoe.books.cpr</PARAGRAPH>
</CELL>
<CELL LEFT="80" WIDTH="169"><PARAGRAPH>This guide as an IRIS InSight document.</PARAGRAPH>
</CELL>
</ROW>
</TABLEBODY>
</TABLE>
<PARAGRAPH>If CPR is not already installed, follow this procedure to install the software:<INDEXTARGET ID="2admin3"><!-- POSTPROCESSDATA: 2admin3|installing checkpoint and restart --></PARAGRAPH>
<ORDEREDLIST><LIST><PARAGRAPH>Load the IRIX software distribution CD-ROM.<INDEXTARGET ID="2admin4"><!-- POSTPROCESSDATA: 2admin4|IRIX software distribution CDROM CDROM containing IRIX --></PARAGRAPH>
</LIST>
<LIST><PARAGRAPH>On the server, become superuser and invoke the <COMMAND>inst </COMMAND>command, specifying the location of the CD-ROM software distribution:</PARAGRAPH>
<CODE>
$ <USERINPUT>/bin/su -</USERINPUT>&space;
Password:
# <USERINPUT>inst -f /CDROM/dist </USERINPUT>
</CODE>
</LIST>
<LIST><PARAGRAPH>Prevent installation of all default subsystems using the <COMMAND>keep </COMMAND>subcommand:<INDEXTARGET ID="2admin5"><!-- POSTPROCESSDATA: 2admin5|<COMMAND>inst</COMMAND> command --></PARAGRAPH>
<CODE>
Inst> <USERINPUT>keep *</USERINPUT>
</CODE>
<PARAGRAPH>For additional information on <COMMAND>inst</COMMAND>, see the<DOCTITLE>&space;IRIX Admin: Software Installation and Licensing Guide</DOCTITLE>, or the <REFPAGE>inst(1M)</REFPAGE> reference page.</PARAGRAPH>
</LIST>
<LIST><PARAGRAPH>Make subsystem selections. To install CPR software, the reference manual pages, and the CPR manuals for IRIS InSight, enter these commands:</PARAGRAPH>
<CODE>
Inst> <USERINPUT>install eoe.*.cpr </USERINPUT>
Inst> <USERINPUT>list i</USERINPUT>
Inst> <USERINPUT>go</USERINPUT>&space;
</CODE>
<PARAGRAPH>The <COMMAND>list </COMMAND>subcommand with the <CMDLINEOPT>i</CMDLINEOPT> argument displays all the subsystems marked for installation. The <COMMAND>go</COMMAND> subcommand starts installation, which takes some time.</PARAGRAPH>
<PARAGRAPH>For additional information on available subsystems, see the <DOCTITLE>IRIX Release Notes</DOCTITLE>.</PARAGRAPH>
</LIST>
<LIST><PARAGRAPH>Ensure that the following line exists in the <FILENAME>/var/sysgen/system/irix.sm</FILENAME> file (change <SCREENDISPLAY>cprstub</SCREENDISPLAY> to <SCREENDISPLAY>cpr</SCREENDISPLAY> if necessary):</PARAGRAPH>
<CODE>
USE: cpr
</CODE>
</LIST>
</ORDEREDLIST>
</SECTION1>
<SECTION1 LBL="" HELPID = ""><TITLE>Managing Checkpoint Images</TITLE><PARAGRAPH>Because of their potential size and longevity, checkpoint images (statefiles) are one aspect of CPR where intervention by the system administrator may be required.</PARAGRAPH>
<SECTION2 LBL="" HELPID = ""><TITLE>Statefile Location and Content</TITLE><PARAGRAPH>The statefile can exist anywhere on a filesystem where the user has write permission, provided there is enough disk space to store it. Statefiles tend to be slightly larger than their checkpointed process.<INDEXTARGET ID="2admin6"><!-- POSTPROCESSDATA: 2admin6|statefile location and content --></PARAGRAPH>
<PARAGRAPH>As the system administrator, you might want to create a policy saying that checkpoint images stored in temporary directories (such as <FILENAME>/tmp</FILENAME> or <FILENAME>/var/spool</FILENAME>) are not guaranteed to remain there. If users want to preserve a statefile indefinitely, they should place it in a permanent directory that they own themselves, such as their home directory.</PARAGRAPH>
<PARAGRAPH>Checkpoint images contain much information about a process, including process set IDs, copies of user data and stack memory, kernel execution states, signal vectors, a list of open files and devices, pipeline setup, shared memory, array job states, and so on. </PARAGRAPH>
</SECTION2>
<SECTION2 LBL="" HELPID = ""><TITLE>Monitoring a Checkpoint</TITLE><PARAGRAPH>To obtain information about a statefile directory, run the <COMMAND>cpr</COMMAND> command with the <CMDLINEOPT>-i </CMDLINEOPT>option:<INDEXTARGET ID="2admin7"><!-- POSTPROCESSDATA: 2admin7|-i option (status information) --></PARAGRAPH>
<CODE>
$ <USERINPUT>cpr -i </USERINPUT><VARIABLE>statefile</VARIABLE><USERINPUT>&space;... </USERINPUT>
</CODE>
<PARAGRAPH>This displays information about the statefile revision number, process names, credential information for the processes, the current working directory, open file information, the time when the checkpoint was done, and so forth.<INDEXTARGET ID="2admin8"><!-- POSTPROCESSDATA: 2admin8|monitoring a checkpoint information about statefiles --></PARAGRAPH>
<PARAGRAPH>There is no automated way to tell if a user has restarted a statefile or not. You need to ask.</PARAGRAPH>
</SECTION2>
<SECTION2 LBL="" HELPID = ""><TITLE>Removing Statefiles</TITLE><PARAGRAPH>First check with the checkpoint owner to request that they remove unneeded statefiles. If there is no reply, and checkpoints are overflowing disk space, look for the oldest statefiles, especially ones in a series, as the best candidates for removal.<INDEXTARGET ID="2admin9"><!-- POSTPROCESSDATA: 2admin9|removing statefiles --></PARAGRAPH>
<PARAGRAPH>To delete an entire statefile directory, run the <COMMAND>cpr</COMMAND> command with the <CMDLINEOPT>-D</CMDLINEOPT> option:<INDEXTARGET ID="2admin10"><!-- POSTPROCESSDATA: 2admin10|-D option (delete statefile) --></PARAGRAPH>
<CODE>
$ <USERINPUT>cpr -D </USERINPUT><VARIABLE>statefile</VARIABLE><USERINPUT>&space;... </USERINPUT>
</CODE>
<PARAGRAPH>Only the checkpoint owner and the superuser may delete a statefile. Once a checkpoint has been deleted, it cannot be restarted until the statefile is restored from backups.</PARAGRAPH>
</SECTION2>
<SECTION2 LBL="" HELPID = ""><TITLE>Disabling User Checkpoints</TITLE><PARAGRAPH>If you want to restrict user access to CPR, or if some users abuse the facility by leaving around large statefile directories, you can follow this procedure:<INDEXTARGET ID="2admin11"><!-- POSTPROCESSDATA: 2admin11|disabling user checkpoints preventing checkpoint usage --></PARAGRAPH>
<ORDEREDLIST><LIST><PARAGRAPH>Create a &ldquo;cpr&rdquo; group in the CPR server's <FILENAME>/etc/group</FILENAME> file, listing the users who should have access to CPR.<INDEXTARGET ID="2admin12"><!-- POSTPROCESSDATA: 2admin12|group cpr, creating users in cpr group --></PARAGRAPH>
<CODE>
cpr::100:<VARIABLE>user1</VARIABLE>,<VARIABLE>user2</VARIABLE>,<VARIABLE>user3</VARIABLE>,<VARIABLE>user4</VARIABLE>,<VARIABLE>user5</VARIABLE>,<VARIABLE>user6</VARIABLE>&space;
</CODE>
</LIST>
<LIST><PARAGRAPH>Make the <COMMAND>cpr</COMMAND> command group &ldquo;cpr&rdquo; and mode 4750.</PARAGRAPH>
<CODE>
# <USERINPUT>chgrp cpr /usr/sbin/cpr</USERINPUT>&space;
# <USERINPUT>chmod 4750 /usr/sbin/cpr</USERINPUT>&space;
</CODE>
</LIST>
</ORDEREDLIST>
<PARAGRAPH>To temporarily disable CPR, make the <FILENAME>/usr/sbin/cpr</FILENAME> command 000 mode. To permanently shut off CPR, use the <COMMAND>inst</COMMAND> command to remove the eoe.sw.cpr subsystem.</PARAGRAPH>
</SECTION2>
</SECTION1>
<SECTION1 LBL="" HELPID = ""><TITLE>Checkpointable Objects</TITLE><PARAGRAPH>The following system objects are checkpoint safe. See <XREF IDREF="63883" TYPE="TITLE">&ldquo;Checkpoint-Safe Objects&rdquo;</XREF> for complete coverage of checkpoint safety.<INDEXTARGET ID="2admin13"><!-- POSTPROCESSDATA: 2admin13|checkpointable objects --></PARAGRAPH>
<BULLETLIST><BULLET><PARAGRAPH>UNIX processes, process groups, terminal control sessions, IRIX array sessions, process hierarchies, <FUNCTION>sproc()</FUNCTION> groups (see <REFPAGE>sproc(2)</REFPAGE>), and random process sets</PARAGRAPH>
</BULLET>
<BULLET><PARAGRAPH>all user memory area, including user stack and data regions</PARAGRAPH>
</BULLET>
<BULLET><PARAGRAPH>system states, including process and user information, signal disposition and signal mask, scheduling information, owner credentials, accounting data, resource limits, current directory, root directory, locked memory, and user semaphores</PARAGRAPH>
</BULLET>
<BULLET><PARAGRAPH>system calls, if applications handle return values and error numbers correctly, although slow system calls may return partial results</PARAGRAPH>
</BULLET>
<BULLET><PARAGRAPH>undelivered and queued signals are saved at checkpoint and delivered at restart</PARAGRAPH>
</BULLET>
<BULLET><PARAGRAPH>open files (including NFS-mounted files), mapped files, file locks, and inherited file descriptors; this includes open pipes with pipeline data</PARAGRAPH>
</BULLET>
<BULLET><PARAGRAPH>special files <FILENAME>/dev/tty</FILENAME>, <FILENAME>/dev/console</FILENAME>, <FILENAME>/dev/zero</FILENAME>, <FILENAME>/dev/null</FILENAME>, and <REFPAGE>ccsync(7M)</REFPAGE></PARAGRAPH>
</BULLET>
<BULLET><PARAGRAPH>System V shared memory (but the original shared memory ID is not restored); see shmop(2)</PARAGRAPH>
</BULLET>
<BULLET><PARAGRAPH>jobs started with CHALLENGEarray services, provided they have a unique ASH number; see <REFPAGE>array_services(5)</REFPAGE></PARAGRAPH>
</BULLET>
<BULLET><PARAGRAPH>applications using the <FUNCTION>prctl()</FUNCTION> PR_ATTACHADDR option; see <REFPAGE>prctl(2)</REFPAGE></PARAGRAPH>
</BULLET>
<BULLET><PARAGRAPH>applications using <FUNCTION>blockproc()</FUNCTION> and <FUNCTION>unblockproc()</FUNCTION>; see <REFPAGE>blockproc(2)</REFPAGE></PARAGRAPH>
</BULLET>
<BULLET><PARAGRAPH>the Power Fortran join synchronization accelerator; see <REFPAGE>ccsync(7M)</REFPAGE></PARAGRAPH>
</BULLET>
<BULLET><PARAGRAPH>R10000 counters; see <REFPAGE>libperfex(3C)</REFPAGE> and <REFPAGE>perfex(1)</REFPAGE></PARAGRAPH>
</BULLET>
</BULLETLIST>
</SECTION1>
<SECTION1 LBL="" HELPID = ""><TITLE>Non-Checkpointable Objects</TITLE><PARAGRAPH>The following system objects are not checkpoint safe. See <XREF IDREF="95268" TYPE="TITLE">&ldquo;Limitations and Caveats&rdquo;</XREF> for more complete coverage of unsupported system objects.<INDEXTARGET ID="2admin14"><!-- POSTPROCESSDATA: 2admin14|non-checkpointable objects --></PARAGRAPH>
<BULLETLIST><BULLET><PARAGRAPH>network socket connections; see <REFPAGE>socket(2)</REFPAGE></PARAGRAPH>
</BULLET>
<BULLET><PARAGRAPH>X terminals and X11 client sessions</PARAGRAPH>
</BULLET>
<BULLET><PARAGRAPH>special devices such as tape drivers and CD-ROM</PARAGRAPH>
</BULLET>
<BULLET><PARAGRAPH>files opened with setuid credential that cannot be reestablished</PARAGRAPH>
</BULLET>
<BULLET><PARAGRAPH>System V semaphores and messages (as opposed to System V shared memory); see <REFPAGE>semop(2)</REFPAGE> and <REFPAGE>msgop(2)</REFPAGE></PARAGRAPH>
</BULLET>
</BULLETLIST>
</SECTION1>
<SECTION1 LBL="" HELPID = ""><TITLE>Troubleshooting</TITLE><PARAGRAPH>This section provides a guide to various error messages that could appear during checkpoint and restart operations, and what these messages might indicate.</PARAGRAPH>
<SECTION2 LBL="" HELPID = ""><TITLE>Failure to Checkpoint</TITLE><PARAGRAPH>Checkpointing can fail for any of the reasons shown in <INDEXTARGET ID="2admin15"><!-- POSTPROCESSDATA: 2admin15|troubleshooting checkpoint checkpoint failure messages failure to checkpoint, reasons --><XREF IDREF="29441" TYPE="TABLE">Table&nbsp;2-2</XREF>. </PARAGRAPH>
<TABLE COLUMNS="2"><CAPTION LBL="2-2"><PREFIX>Table 2-2 </PREFIX><XREFTARGET ID="29441">Checkpoint Failure Messages</CAPTION>
<TABLEHEADING><CELL LEFT="0" WIDTH="105"><PARAGRAPH>Error Message</PARAGRAPH>
</CELL>
<CELL LEFT="110" WIDTH="273"><PARAGRAPH>Problem Indicated</PARAGRAPH>
</CELL>
</TABLEHEADING>
<TABLEBODY><ROW><CELL LEFT="0" WIDTH="105"><PARAGRAPH>Permission denied</PARAGRAPH>
</CELL>
<CELL LEFT="110" WIDTH="273"><PARAGRAPH>Search permission denied on a pathname component of statefile.</PARAGRAPH>
</CELL>
</ROW>
<ROW><CELL LEFT="0" WIDTH="105"><PARAGRAPH>Resource busy</PARAGRAPH>
</CELL>
<CELL LEFT="110" WIDTH="273"><PARAGRAPH>A resource required by the target process is in use by the system.</PARAGRAPH>
</CELL>
</ROW>
<ROW><CELL LEFT="0" WIDTH="105"><PARAGRAPH>Checkpoint error</PARAGRAPH>
</CELL>
<CELL LEFT="110" WIDTH="273"><PARAGRAPH>An uncheckpointable resource is associated with the target process.</PARAGRAPH>
</CELL>
</ROW>
<ROW><CELL LEFT="0" WIDTH="105"><PARAGRAPH>File exists</PARAGRAPH>
</CELL>
<CELL LEFT="110" WIDTH="273"><PARAGRAPH>The pathname designated by statefile already exists.</PARAGRAPH>
</CELL>
</ROW>
<ROW><CELL LEFT="0" WIDTH="105"><PARAGRAPH>Invalid argument</PARAGRAPH>
</CELL>
<CELL LEFT="110" WIDTH="273"><PARAGRAPH>An invalid argument was passed to a function call.</PARAGRAPH>
</CELL>
</ROW>
<ROW><CELL LEFT="0" WIDTH="105"><PARAGRAPH>Too many symbolic links</PARAGRAPH>
</CELL>
<CELL LEFT="110" WIDTH="273"><PARAGRAPH>A symbolic link loop occurred during pathname resolution.</PARAGRAPH>
</CELL>
</ROW>
<ROW><CELL LEFT="0" WIDTH="105"><PARAGRAPH>No such file or directory</PARAGRAPH>
</CELL>
<CELL LEFT="110" WIDTH="273"><PARAGRAPH>The pathname to statefile is nonexistent.</PARAGRAPH>
</CELL>
</ROW>
<ROW><CELL LEFT="0" WIDTH="105"><PARAGRAPH>Not a directory</PARAGRAPH>
</CELL>
<CELL LEFT="110" WIDTH="273"><PARAGRAPH>A component of the path prefix is not a directory.</PARAGRAPH>
</CELL>
</ROW>
<ROW><CELL LEFT="0" WIDTH="105"><PARAGRAPH>Filename too long</PARAGRAPH>
</CELL>
<CELL LEFT="110" WIDTH="273"><PARAGRAPH>The pathname to statefile exceeds the maximum length allowed.</PARAGRAPH>
</CELL>
</ROW>
<ROW><CELL LEFT="0" WIDTH="105"><PARAGRAPH>No space left on device</PARAGRAPH>
</CELL>
<CELL LEFT="110" WIDTH="273"><PARAGRAPH>Space remaining on disk is insufficient for the statefile.</PARAGRAPH>
</CELL>
</ROW>
<ROW><CELL LEFT="0" WIDTH="105"><PARAGRAPH>Operation not permitted</PARAGRAPH>
</CELL>
<CELL LEFT="110" WIDTH="273"><PARAGRAPH>The calling process does not have appropriate privileges.</PARAGRAPH>
</CELL>
</ROW>
<ROW><CELL LEFT="0" WIDTH="105"><PARAGRAPH>Read-only file system</PARAGRAPH>
</CELL>
<CELL LEFT="110" WIDTH="273"><PARAGRAPH>The requested statefile would reside on a read-only filesystem.</PARAGRAPH>
</CELL>
</ROW>
<ROW><CELL LEFT="0" WIDTH="105"><PARAGRAPH>No such process</PARAGRAPH>
</CELL>
<CELL LEFT="110" WIDTH="273"><PARAGRAPH>The process or process group specified by ID does not exist.</PARAGRAPH>
</CELL>
</ROW>
</TABLEBODY>
</TABLE>
</SECTION2>
<SECTION2 LBL="" HELPID = ""><TITLE>Failure to Restart</TITLE><PARAGRAPH>Restart can fail for any of the reasons shown in <INDEXTARGET ID="2admin16"><!-- POSTPROCESSDATA: 2admin16|troubleshooting restart restart failure messages failure to restart, reasons --><XREF IDREF="13781" TYPE="TABLE">Table&nbsp;2-3</XREF>. </PARAGRAPH>
<TABLE COLUMNS="2"><CAPTION LBL="2-3"><PREFIX>Table 2-3 </PREFIX><XREFTARGET ID="13781">Restart Failure Messages</CAPTION>
<TABLEHEADING><CELL LEFT="0" WIDTH="140"><PARAGRAPH>Error Message</PARAGRAPH>
</CELL>
<CELL LEFT="145" WIDTH="245"><PARAGRAPH>Problem Indicated</PARAGRAPH>
</CELL>
</TABLEHEADING>
<TABLEBODY><ROW><CELL LEFT="0" WIDTH="140"><PARAGRAPH>Permission denied</PARAGRAPH>
</CELL>
<CELL LEFT="145" WIDTH="245"><PARAGRAPH>Search permission denied on a path component of statefile.</PARAGRAPH>
</CELL>
</ROW>
<ROW><CELL LEFT="0" WIDTH="140"><PARAGRAPH>Resource temporarily unavailable</PARAGRAPH>
</CELL>
<CELL LEFT="145" WIDTH="245"><PARAGRAPH>Total number of processes for user exceeds system limit.</PARAGRAPH>
</CELL>
</ROW>
<ROW><CELL LEFT="0" WIDTH="140"><PARAGRAPH>Checkpoint error</PARAGRAPH>
</CELL>
<CELL LEFT="145" WIDTH="245"><PARAGRAPH>An unrestartable resource is associated with target process.</PARAGRAPH>
</CELL>
</ROW>
<ROW><CELL LEFT="0" WIDTH="140"><PARAGRAPH>Resource deadlock avoided</PARAGRAPH>
</CELL>
<CELL LEFT="145" WIDTH="245"><PARAGRAPH>Attempted locking of a system resource would have resulted
in a deadlock situation.</PARAGRAPH>
</CELL>
</ROW>
<ROW><CELL LEFT="0" WIDTH="140"><PARAGRAPH>Invalid argument</PARAGRAPH>
</CELL>
<CELL LEFT="145" WIDTH="245"><PARAGRAPH>An invalid argument was passed to the function call.</PARAGRAPH>
</CELL>
</ROW>
<ROW><CELL LEFT="0" WIDTH="140"><PARAGRAPH>Too many symbolic links</PARAGRAPH>
</CELL>
<CELL LEFT="145" WIDTH="245"><PARAGRAPH>A symbolic link loop occurred during pathname resolution.</PARAGRAPH>
</CELL>
</ROW>
<ROW><CELL LEFT="0" WIDTH="140"><PARAGRAPH>Filename too long</PARAGRAPH>
</CELL>
<CELL LEFT="145" WIDTH="245"><PARAGRAPH>The pathname to statefile exceeds the maximum length.</PARAGRAPH>
</CELL>
</ROW>
<ROW><CELL LEFT="0" WIDTH="140"><PARAGRAPH>No such file or directory</PARAGRAPH>
</CELL>
<CELL LEFT="145" WIDTH="245"><PARAGRAPH>The pathname to statefile is nonexistent.</PARAGRAPH>
</CELL>
</ROW>
<ROW><CELL LEFT="0" WIDTH="140"><PARAGRAPH>Not enough space</PARAGRAPH>
</CELL>
<CELL LEFT="145" WIDTH="245"><PARAGRAPH>Restarting the target process requires more memory than
allowed by the hardware or by available swap space.</PARAGRAPH>
</CELL>
</ROW>
<ROW><CELL LEFT="0" WIDTH="140"><PARAGRAPH>Not a directory</PARAGRAPH>
</CELL>
<CELL LEFT="145" WIDTH="245"><PARAGRAPH>A component of the path prefix is not a directory.</PARAGRAPH>
</CELL>
</ROW>
<ROW><CELL LEFT="0" WIDTH="140"><PARAGRAPH>Operation not permitted</PARAGRAPH>
</CELL>
<CELL LEFT="145" WIDTH="245"><PARAGRAPH>The real user ID of the calling process does not match the real
user ID of one or more processes recorded in the checkpoint,
or the calling process does not have appropriate privileges to
restart one or more of the target processes.</PARAGRAPH>
</CELL>
</ROW>
</TABLEBODY>
</TABLE>
</SECTION2>
</SECTION1>
</CHAPTER>

BIN
eoe/books/CPR_OG/3prog.doc Normal file

Binary file not shown.

286
eoe/books/CPR_OG/3prog.sgm Normal file
View File

@@ -0,0 +1,286 @@
<!-- Produced by version 3.13 (01/04/96) of SGI Frame/SGML translator -->
<CHAPTER LBL="3"><TITLE><XREFTARGET ID="85437">Programming Checkpoint and Restart</TITLE><PARAGRAPH>This chapter describes how to write applications that checkpoint and restart processes gracefully. Code samples are provided, and code fragments at the end of the chapter show sample usage of IRIX CPR library routines.</PARAGRAPH>
<PARAGRAPH>For applications with checkpoint-unsafe objects, the principal programming concern is setting up event handlers to perform clean-up at checkpoint time, and to restore network sockets, graphic state, tape I/O, and CD-ROM status (and so on) at restart time.</PARAGRAPH>
<SECTION1 LBL="" HELPID = ""><TITLE>Design of Checkpoint and Restart</TITLE><PARAGRAPH>This section describes some design issues that governed the implementation of CPR.<INDEXTARGET ID="3prog1"><!-- POSTPROCESSDATA: 3prog1|design of checkpoint and restart --></PARAGRAPH>
<SECTION2 LBL="" HELPID = ""><TITLE>POSIX Compliance</TITLE><PARAGRAPH>IRIX Checkpoint and Restart is based on POSIX 1003.1m draft 11, and was initially implemented in IRIX release 6.4. Because POSIX draft standards often change radically from inception to approval, the interfaces in IRIX release 6.5 are not guaranteed to be fully compliant, nor can Silicon Graphics make any assurance that they will conform to the POSIX 1003.1m standard when it is eventually approved.<INDEXTARGET ID="3prog2"><!-- POSTPROCESSDATA: 3prog2|POSIX 1003.1m standard --></PARAGRAPH>
</SECTION2>
<SECTION2 LBL="" HELPID = ""><TITLE>IRIX Extensions</TITLE><PARAGRAPH>The <COMMAND>cpr</COMMAND> command is not specified in POSIX 1003.1m draft 11. It is an IRIX specific command provided for the convenience of customers; see <REFPAGE>cpr(1)</REFPAGE>. The POSIX draft standard covers only the programming interfaces for checkpoint and restart.<INDEXTARGET ID="3prog3"><!-- POSTPROCESSDATA: 3prog3|extensions to CPR in IRIX IRIX extensions to CPR --></PARAGRAPH>
<PARAGRAPH>The <FUNCTION>ckpt_stat()</FUNCTION> function, which returns information about the status of checkpoint statefiles, is not specified in POSIX 1003.1m draft 11; see ckpt_stat(3). The <INDEXTARGET ID="3prog4"><!-- POSTPROCESSDATA: 3prog4|<FUNCTION>ckpt_stat()</FUNCTION> library routine --><FUNCTION>ckpt_setup()</FUNCTION> function specified in the POSIX draft is unimplemented; when applications call this routine, it is a no-op.<INDEXTARGET ID="3prog5"><!-- POSTPROCESSDATA: 3prog5|<FUNCTION>ckpt_setup()</FUNCTION> library routine --></PARAGRAPH>
</SECTION2>
</SECTION1>
<SECTION1 LBL="" HELPID = ""><TITLE>Programming Issues</TITLE><PARAGRAPH>This section describes the CPR library interfaces and signals, and shows how to write programs that set up event handlers using <FUNCTION>atcheckpoint()</FUNCTION> to prepare for a checkpoint, and using <FUNCTION>atrestart()</FUNCTION> to restore non-checkpointable system objects at restart time. See <XREF IDREF="95268" TYPE="TITLE">&ldquo;Limitations and Caveats&rdquo;</XREF> for a list of non-checkpointable objects.</PARAGRAPH>
<SECTION2 LBL="" HELPID = ""><TITLE>CPR Library Interfaces</TITLE><PARAGRAPH>Application interfaces for adding CPR event handlers are contained the C library, and are listed below. For more information, see <INDEXTARGET ID="3prog6"><!-- POSTPROCESSDATA: 3prog6|library routine atcheckpoint() --><REFPAGE>atcheckpoint(3C)</REFPAGE>.</PARAGRAPH>
<BULLETLIST><BULLET><PARAGRAPH><FUNCTION>atcheckpoint()<INDEXTARGET ID="3prog7"><!-- POSTPROCESSDATA: 3prog7|<FUNCTION>atcheckpoint()</FUNCTION> library routine --></FUNCTION>&mdash;add an event handler function for checkpointing</PARAGRAPH>
</BULLET>
<BULLET><PARAGRAPH><FUNCTION>atrestart()<INDEXTARGET ID="3prog8"><!-- POSTPROCESSDATA: 3prog8|<FUNCTION>atrestart()</FUNCTION> library routine --></FUNCTION>&mdash;add an event handler function for restarting</PARAGRAPH>
</BULLET>
</BULLETLIST>
<PARAGRAPH>The checkpoint and restart library interfaces are contained in the <FILENAME>libcpr.so</FILENAME>&space;dynamic shared object (DSO). When using this library, include the <INDEXTARGET ID="3prog9"><!-- POSTPROCESSDATA: 3prog9|libcpr.so DSO --><INDEXTARGET ID="3prog10"><!-- POSTPROCESSDATA: 3prog10|DSO libcpr.so --><FILENAME>&lt;ckpt.h></FILENAME>&space;header file:<INDEXTARGET ID="3prog11"><!-- POSTPROCESSDATA: 3prog11|&lt;ckpt.h> header file --></PARAGRAPH>
<CODE>
#include &lt;ckpt.h>
</CODE>
<PARAGRAPH>The available library routines are listed below. For more information, see <INDEXTARGET ID="3prog12"><!-- POSTPROCESSDATA: 3prog12|library routines ckpt_* --><REFPAGE>ckpt_create(3)</REFPAGE>.</PARAGRAPH>
<BULLETLIST><BULLET><PARAGRAPH><FUNCTION>ckpt_create()<INDEXTARGET ID="3prog13"><!-- POSTPROCESSDATA: 3prog13|<FUNCTION>ckpt_create()</FUNCTION> library routine --></FUNCTION>&mdash;checkpoint a process or set of processes into statefiles</PARAGRAPH>
</BULLET>
<BULLET><PARAGRAPH><FUNCTION>ckpt_restart()<INDEXTARGET ID="3prog14"><!-- POSTPROCESSDATA: 3prog14|<FUNCTION>ckpt_restart()</FUNCTION> library routine --></FUNCTION>&mdash;resume execution of checkpointed process or process group</PARAGRAPH>
</BULLET>
<BULLET><PARAGRAPH><FUNCTION>ckpt_stat()<INDEXTARGET ID="3prog15"><!-- POSTPROCESSDATA: 3prog15|<FUNCTION>ckpt_stat()</FUNCTION> library routine --></FUNCTION>&mdash;retrieve status information about a checkpoint statefile</PARAGRAPH>
</BULLET>
<BULLET><PARAGRAPH><FUNCTION>ckpt_remove()<INDEXTARGET ID="3prog16"><!-- POSTPROCESSDATA: 3prog16|<FUNCTION>ckpt_remove()</FUNCTION> library routine --></FUNCTION>&mdash;delete a checkpoint statefile directory</PARAGRAPH>
</BULLET>
<BULLET><PARAGRAPH><FUNCTION>ckpt_setup()<INDEXTARGET ID="3prog17"><!-- POSTPROCESSDATA: 3prog17|<FUNCTION>ckpt_setup()</FUNCTION> library routine --></FUNCTION>&mdash;control checkpoint creation attributes (currently a no-op)</PARAGRAPH>
</BULLET>
</BULLETLIST>
<PARAGRAPH>In the discussion below, <ITALICS>set of processes</ITALICS> can mean one process, or a group of processes.</PARAGRAPH>
</SECTION2>
<SECTION2 LBL="" HELPID = ""><TITLE>SIGCKPT and SIGRESTART</TITLE><PARAGRAPH>When a program (such as the <COMMAND>cpr</COMMAND> command) calls <FUNCTION>ckpt_create()</FUNCTION> to create a checkpoint, that function sends a SIGCKPT signal to the set of processes specified by the checkpoint ID argument to <INDEXTARGET ID="3prog18"><!-- POSTPROCESSDATA: 3prog18|SIGCKPT signal --><FUNCTION>ckpt_create()</FUNCTION>. Applications add an event handler to catch SIGCKPT if they need to restore non-checkpointable objects such as network sockets, graphic state, or file pointers to CD-ROM. The default action is to ignore SIGCKPT.</PARAGRAPH>
<PARAGRAPH>After sending a SIGCKPT signal, <FUNCTION>ckpt_create()</FUNCTION> waits for the application to finish its signal handling, before CPR proceeds with further checkpoint activities after SIGCKPT. At restart time, the first thing <FUNCTION>ckpt_restart()</FUNCTION> runs is the application's SIGRESTART signal handler, if one exists. This implies that checkpoint and restart can &ldquo;get stuck&rdquo; in the SIGCKPT and SIGRESTART handling routines.</PARAGRAPH>
<PARAGRAPH>When a program calls <FUNCTION>ckpt_restart() </FUNCTION>to resume execution from a checkpoint, the restart function sends a SIGRESTART signal to the set of processes checkpointed in the statefile specified by the <INDEXTARGET ID="3prog19"><!-- POSTPROCESSDATA: 3prog19|SIGRESTART signal --><VARIABLE>path </VARIABLE>argument to <FUNCTION>ckpt_restart()</FUNCTION>. Applications add an event handler to catch SIGRESTART if they need to restore non-checkpointable objects such as sockets, graphic state, or CD-ROM files. The default action is to ignore SIGRESTART.</PARAGRAPH>
</SECTION2>
<SECTION2 LBL="" HELPID = ""><TITLE>Adding Event Handlers</TITLE><PARAGRAPH>The SIGCKPT and SIGRESTART signals are not intended to be handled directly by an application. Instead, CPR provides two C library functions that allow applications to establish a list of functions for handling checkpoint and restart events.</PARAGRAPH>
<PARAGRAPH>The <FUNCTION>atcheckpoint()</FUNCTION> routine takes one parameter&mdash;the name of your application's checkpoint handling function&mdash;and adds this function to the list of functions that get called upon receipt of SIGCKPT. Similarly, the <FUNCTION>atrestart()</FUNCTION> routine registers the specified callback function for execution upon receipt of SIGRESTART.</PARAGRAPH>
<PARAGRAPH>These functions are recommended for use during initialization when applications expect to be checkpointed but contain checkpoint-unsafe objects. An application may register multiple checkpoint event handlers to be called when checkpoint occurs, and multiple restart event handlers to be called when restart occurs.</PARAGRAPH>
<PARAGRAPH>At checkpoint time and at restart time, registered functions are called in the same order as the first-in-first-out order of their registration with <FUNCTION>atcheckpoint()</FUNCTION> or <FUNCTION>atrestart()</FUNCTION> respectively. This is an important consideration for applications that need to register multiple callback handlers for checkpoint or restart events.</PARAGRAPH>
<CAUTION><PREFIX>Caution</PREFIX>If applications catch the SIGCKPT and SIGRESTART signals directly, it could undo all of the automatic CPR signal handler registration provided by <FUNCTION>atcheckpoint()</FUNCTION> and <FUNCTION>atrestart()</FUNCTION>, including CPR signal handlers that some libraries may reserve without the application programmer's knowledge.</CAUTION>
</SECTION2>
<SECTION2 LBL="" HELPID = ""><TITLE>Preparing for Checkpoint</TITLE><PARAGRAPH>If an application needs to restore network sockets, graphic state, tape I/O, CD-ROM mounts, or some other non-checkpointable system object, it should set up automatic checkpoint and restart event handlers using the recommended library routines.</PARAGRAPH>
<PARAGRAPH>The following sample code calls <FUNCTION>atcheckpoint()</FUNCTION> and <FUNCTION>atrestart() </FUNCTION>to set up functions for handling checkpoint and restart events. It is possible for this setup to fail on operating systems that do not (yet) support CPR.</PARAGRAPH>
<CODE><CAPTION LBL="3-1"><PREFIX>Example 3-1 </PREFIX>Checkpoint and Restart Event Handling</CAPTION>#include &lt;stdlib.h>
#include &lt;ckpt.h>
extern void ckptSocket(void);
extern void ckptXserver(void);
extern void restartSocket(void);
extern void restartXserver(void);
main(int argc, char *argv[])
{
&space; int err = 0;
&space; if ((atcheckpoint(ckptSocket) == -1) ||
&space; (atcheckpoint(ckptXserver) == -1) ||
&space; (atrestart(restartSocket) == -1) ||
&space; (atrestart(restartXserver) == -1))
&space; perror("Cannot setup checkpoint and restart handling");
&space; /*
&space; * processing ...
&space; */
&space; exit(0);
}
</CODE>
</SECTION2>
<SECTION2 LBL="" HELPID = ""><TITLE>Handling a Checkpoint</TITLE><PARAGRAPH>Suppose your program mounts an ISO 9660 format CD-ROM, from which it reads data as a basis for more complex processing. Since the CD-ROM is not a checkpointable object, your program needs to record the file pointer position, close all open files on CD-ROM, and perhaps unmount the CD-ROM device.<INDEXTARGET ID="3prog20"><!-- POSTPROCESSDATA: 3prog20|CDROM checkpointing --><INDEXTARGET ID="3prog21"><!-- POSTPROCESSDATA: 3prog21|handling a checkpoint SIGCKPT signal --></PARAGRAPH>
<PARAGRAPH>The following sample code marks the current file position in the open <VARIABLE>cdFile</VARIABLE>, saves it for restoration at restart time, closes <VARIABLE>cdFile</VARIABLE>, and unmounts the CD-ROM.</PARAGRAPH>
<CODE><CAPTION LBL="3-2"><PREFIX>Example 3-2 </PREFIX>Routine to Handle Checkpoint</CAPTION>#include &lt;sys/types.h>
#include &lt;sys/mount.h>
#include &lt;stdio.h>
extern char *cdFile;
extern FILE fpCD;
long cdOffset;
catchCKPT()
{
&space; cdOffset = ftell(fpCD);
&space; fclose(fpCD);
&space; umount("/CDROM");
&space; exit(0);
}
</CODE>
<NOTE><PREFIX>Note</PREFIX>The checkpoint event handler should return directly to its calling routine&mdash;it must not contain any <FUNCTION>sigsetjmp()</FUNCTION> or <FUNCTION>siglongjmp()</FUNCTION> code.</NOTE>
<SECTION3 LBL="" HELPID = ""><TITLE>Checkpoint Time-outs</TITLE><PARAGRAPH>For programs that must wait for some external condition before exiting the checkpoint event handling function, it might be wise to set a time-out. For example, if a program is waiting for data to arrive over a TCP socket that must be shut down before checkpoint, and the data never arrive, the program should not wait forever.<INDEXTARGET ID="3prog22"><!-- POSTPROCESSDATA: 3prog22|timeouts for checkpointing --></PARAGRAPH>
<PARAGRAPH>The <FUNCTION>alarm()</FUNCTION> system call sends a SIGALRM signal to the calling program after a specified number of seconds. Since the default action for SIGALRM is for the program to exit, put this call near the top of the checkpoint handling routines to set a one-minute time-out.<INDEXTARGET ID="3prog23"><!-- POSTPROCESSDATA: 3prog23|<FUNCTION>alarm()</FUNCTION> system call --></PARAGRAPH>
<CODE><CAPTION LBL="3-3"><PREFIX>Example 3-3 </PREFIX>Setting an Alarm in Callback</CAPTION>extern int sock; /* file descriptor for socket */
catchCKPT()
{
&space; alarm(60);
&space; close(sock);
&space; alarm(0);
}
</CODE>
</SECTION3>
</SECTION2>
<SECTION2 LBL="" HELPID = ""><TITLE>Handling a Restart</TITLE><PARAGRAPH>Suppose your program that unmounted the ISO 9660 CD-ROM at checkpoint time is restarted with the <COMMAND>cpr</COMMAND> command. Now it needs to ensure that the CD-ROM is mounted, reopen the formerly active file, and seek to the previous file offset position. Once it accomplishes all that, your program is ready to continue reading data from the CD-ROM.<INDEXTARGET ID="3prog24"><!-- POSTPROCESSDATA: 3prog24|handling a restart SIGRESTART signal --></PARAGRAPH>
<PARAGRAPH>The following sample code waits for the CD-ROM to become mounted, then reopens the <VARIABLE>cdFile</VARIABLE>, and seeks to the remembered offset position in <VARIABLE>cdFile</VARIABLE>.</PARAGRAPH>
<CODE><CAPTION LBL="3-4"><PREFIX>Example 3-4 </PREFIX>Routine to Handle Restart</CAPTION>#include &lt;unistd.h>
#include &lt;stdio.h>
extern char *cdFile;
extern FILE fpCD;
extern long cdOffset;
catchRESTART()
{
&space; while (access("/CDROM/data", R_OK) == -1) {
&space; perror("please insert CDROM");
&space; sleep(60);
&space; }
&space; if ((fpCD = fopen(cdFile, "r")) == NULL)
&space; perror("cannot open cdFile"), exit(1);
&space; if (fseek(fpCD, cdOffset, SEEK_SET))
&space; perror("cannot seek to cdOffset"), exit(1);
&space; /*
&space; * etc. */
}
</CODE>
<NOTE><PREFIX>Note</PREFIX>The restart event handler should return directly to its calling routine&mdash;it must not contain any <FUNCTION>sigsetjmp()</FUNCTION> or <FUNCTION>siglongjmp()</FUNCTION> code.</NOTE>
</SECTION2>
</SECTION1>
<SECTION1 LBL="" HELPID = ""><TITLE>Checkpoint and Restart of System Objects</TITLE><PARAGRAPH>Due to the nature of UNIX process checkpoint and restart, it is hard, if not impossible, to claim that everything that an original process owns or connects with can be restored. The following list defines what is clearly supported (checkpoint safe), and what limitations are known to exist. For items not listed, application writers and customers must decide what is checkpoint-safe.</PARAGRAPH>
<SECTION2 LBL="" HELPID = ""><TITLE><XREFTARGET ID="63883">Checkpoint-Safe Objects</TITLE><PARAGRAPH>All known checkpoint-safe entities are listed below.<INDEXTARGET ID="3prog25"><!-- POSTPROCESSDATA: 3prog25|checkpoint-safe objects --></PARAGRAPH>
<SECTION3 LBL="" HELPID = ""><TITLE>Supported Process Groupings</TITLE><PARAGRAPH>CPR works on UNIX processes, process groups, terminal control sessions, array sessions, process hierarchies (trees of processes started from a common ancestor), POSIX threads (see <REFPAGE>pthreads(5)</REFPAGE>), IRIX <FUNCTION>sproc()</FUNCTION> share groups (see <REFPAGE>sproc(2)</REFPAGE>), and random process sets.<INDEXTARGET ID="3prog26"><!-- POSTPROCESSDATA: 3prog26|process groupings, safe --></PARAGRAPH>
</SECTION3>
<SECTION3 LBL="" HELPID = ""><TITLE>User Memory</TITLE><PARAGRAPH>All user memory regions are saved and restored, including user stack and data regions. Note that user text, without being saved at checkpoint time, is remapped directly at restart from the application binaries and libraries. However, by using REPLACE as the file disposition default, even user texts can be saved. The saved texts may not replace the originals if the originals are not changed after the checkpoint. Locked memory regions are restored to remain locked at restart.<INDEXTARGET ID="3prog27"><!-- POSTPROCESSDATA: 3prog27|memory, safe user memory, safe --></PARAGRAPH>
</SECTION3>
<SECTION3 LBL="" HELPID = ""><TITLE>System States in Kernel</TITLE><PARAGRAPH>Most of the important kernel states are restored at restart to be identical to the original ones, such as basic process and user information, signal disposition and signal mask, scheduling information, owner credentials, accounting data, resource limits, current working directory, root directory, user semaphores (see <REFPAGE>usnewsema(3P)</REFPAGE>), and so on.<INDEXTARGET ID="3prog28"><!-- POSTPROCESSDATA: 3prog28|kernel states, safe --></PARAGRAPH>
</SECTION3>
<SECTION3 LBL="" HELPID = ""><TITLE>System Calls</TITLE><PARAGRAPH>All system calls are checkpoint safe as long as the applications are handling the system call returns and error numbers correctly. Fast system calls are allowed to finish before checkpoint proceeds. Slow system calls are interrupted and may return to the calling routine with partial results. Applications using system calls that can return partial results need to check for and be prepared to deal with partial results. Slow system calls with no results are transparently reissued at restart.<INDEXTARGET ID="3prog29"><!-- POSTPROCESSDATA: 3prog29|system calls, safe --></PARAGRAPH>
<PARAGRAPH>A number of selected system calls are handled individually. The <FUNCTION>sleep()</FUNCTION> system call is reissued for the amount of time remaining at checkpoint time; see <REFPAGE>sleep(3C)</REFPAGE>. Restart of the <FUNCTION>alarm()</FUNCTION> system call is similar&mdash;the remainder of time recorded at checkpoint elapses before it times out; see <REFPAGE>alarm(2)</REFPAGE>.</PARAGRAPH>
</SECTION3>
<SECTION3 LBL="" HELPID = ""><TITLE>SIgnals</TITLE><PARAGRAPH>Undelivered signals and queued signals are saved at checkpoint and delivered at restart.<INDEXTARGET ID="3prog30"><!-- POSTPROCESSDATA: 3prog30|signals, safe --></PARAGRAPH>
</SECTION3>
<SECTION3 LBL="" HELPID = ""><TITLE><XREFTARGET ID="26794">Open Files and Devices</TITLE><PARAGRAPH>Processes with regular open files or mapped files, including NFS mounted files, can be checkpointed and restarted without many restrictions as long as users choose the correct file disposition in the CPR attribute file, as described in the section <XREF IDREF="59841" TYPE="TITLE">&ldquo;Checkpoint and Restart Attributes&rdquo;</XREF>.<INDEXTARGET ID="3prog31"><!-- POSTPROCESSDATA: 3prog31|files and devices, safe devices and files, safe --></PARAGRAPH>
<PARAGRAPH>All file locks are also restored at restart. If the file regions that the restarting process needs to lock have already been locked by another process, CPR tries to acquire the locks a few times before it aborts the restart.</PARAGRAPH>
<PARAGRAPH>Supported special files are <FILENAME>/dev/tty</FILENAME>, <FILENAME>/dev/console</FILENAME>, <FILENAME>/dev/zero</FILENAME>, <FILENAME>/dev/null</FILENAME>, and <REFPAGE>ccsync(7M)</REFPAGE>.<INDEXTARGET ID="3prog32"><!-- POSTPROCESSDATA: 3prog32|special devices, safe --></PARAGRAPH>
<PARAGRAPH>Inherited file descriptors are restored at restart. Applications using R10000 counters through the <FILENAME>/proc</FILENAME> interface are checkpoint safe, provided the <FILENAME>/proc</FILENAME> file descriptor is closed.</PARAGRAPH>
</SECTION3>
<SECTION3 LBL="" HELPID = ""><TITLE>Open Pipes</TITLE><PARAGRAPH>Applications with SVR3 or SVR4 pipes open can be checkpointed and restarted without restrictions. Pipeline data and streams pipe message modes are also saved and restored.<INDEXTARGET ID="3prog33"><!-- POSTPROCESSDATA: 3prog33|pipes and pipe data, safe --></PARAGRAPH>
</SECTION3>
<SECTION3 LBL="" HELPID = ""><TITLE>Shared Memory and Semaphores</TITLE><PARAGRAPH>Applications using SVR4 shared memory can be checkpointed and restarted; see <REFPAGE>shmop(2)</REFPAGE>. The original shared memory ID (<VARIABLE>shmid</VARIABLE>) is now restored&mdash;this was not the case in the IRIX 6.4 release.<INDEXTARGET ID="3prog34"><!-- POSTPROCESSDATA: 3prog34|System V shared memory, safe --></PARAGRAPH>
<PARAGRAPH>Applications using POSIX semaphores, or shared arena semaphores and locks, can be checkpointed and restarted; see <REFPAGE>psema(D3X)</REFPAGE> or <REFPAGE>usinit(3P)</REFPAGE>, respectively.</PARAGRAPH>
</SECTION3>
<SECTION3 LBL="" HELPID = ""><TITLE>Application Licensing</TITLE><PARAGRAPH>Applications using node-lock licenses (one license per machine) are generally safe for checkpoint and restart. Applications using floating licenses may be safe for checkpoint and restart, depending on the license library implementation. In IRIX 6.5 and later, the FLEXlm library includes <FUNCTION>atcheckpoint()</FUNCTION> and <FUNCTION>atrestart()</FUNCTION> event handlers.</PARAGRAPH>
<PARAGRAPH>If your license library employs open-and-warm sockets without CPR-aware handlers, you should do one of the following:</PARAGRAPH>
<BULLETLIST><BULLET><PARAGRAPH>Add <FUNCTION>atcheckpoint()</FUNCTION> and <FUNCTION>atrestart()</FUNCTION> event handlers to your application. The <FUNCTION>atcheckpoint()</FUNCTION> handler should disconnect license checking, and the <FUNCTION>atrestart()</FUNCTION> handler should reconnect license checking.</PARAGRAPH>
</BULLET>
<BULLET><PARAGRAPH>Ask your license software vendor to add similar handlers to their license library.</PARAGRAPH>
</BULLET>
</BULLETLIST>
</SECTION3>
<SECTION3 LBL="" HELPID = ""><TITLE>Network Applications Using Array Services</TITLE><PARAGRAPH>Jobs started with POWER CHALLENGEarray or CHALLENGEarray services can be checkpointed and restarted, provided the jobs have a unique ASH (array session handle) number; see <REFPAGE>array_services(5)</REFPAGE>. Array services jobs may use several methods to generate a new ASH, including calling <FUNCTION>newarraysess()</FUNCTION>; see <REFPAGE>newarraysess(2)</REFPAGE>. </PARAGRAPH>
<PARAGRAPH>During an array checkpoint, a checkpoint server is responsible for starting, monitoring, and synchronizing all checkpoint clients running on its different machines based on the given ASH. Statefiles are saved locally on each machine for all processes with the given ASH running on that machine. Restart occurs in a similar fashion, with the restart server synchronizing with all local restart clients to restore all processes on different machines.<INDEXTARGET ID="3prog35"><!-- POSTPROCESSDATA: 3prog35|array services, safe --></PARAGRAPH>
<PARAGRAPH>An interactive array job with a controlling terminal on a given machine has to be checkpointed and restarted from that very same machine. Otherwise the controlling terminal cannot be restored.</PARAGRAPH>
</SECTION3>
<SECTION3 LBL="" HELPID = ""><TITLE>Other Supported Functionality</TITLE><PARAGRAPH>Applications using <FUNCTION>blockproc()</FUNCTION> and <FUNCTION>unblockproc()</FUNCTION> are checkpoint safe; see <REFPAGE>blockproc(2)</REFPAGE>.<INDEXTARGET ID="3prog36"><!-- POSTPROCESSDATA: 3prog36|blockproc, safe unblockproc, safe --></PARAGRAPH>
<PARAGRAPH>Memory regions added by calling <FUNCTION>prctl()</FUNCTION> with the PR_ATTACHADDR argument can be safely checkpointed and restarted; see <REFPAGE>prctl(2)</REFPAGE>.<INDEXTARGET ID="3prog37"><!-- POSTPROCESSDATA: 3prog37|prctl, safe PR_ATTACHADDR, safe --></PARAGRAPH>
<PARAGRAPH>The Power Fortran join synchronization accelerator is checkpoint safe; see <REFPAGE>ccsync(7M)</REFPAGE>.<INDEXTARGET ID="3prog38"><!-- POSTPROCESSDATA: 3prog38|ccsync, safe Power Fortran join accelerator, safe --></PARAGRAPH>
<PARAGRAPH>Applications using R10000 counters are checkpoint safe; see <REFPAGE>libperfex(3C)</REFPAGE> or <REFPAGE>perfex(1)</REFPAGE>.<INDEXTARGET ID="3prog39"><!-- POSTPROCESSDATA: 3prog39|R10000 counters, safe perfex library routines, safe --></PARAGRAPH>
</SECTION3>
<SECTION3 LBL="" HELPID = ""><TITLE>Compatibility Between Releases</TITLE><PARAGRAPH>A statefile checkpointed in any current release will most likely be able to restart in future releases, owing to the object-oriented architecture of the CPR implementation.</PARAGRAPH>
<PARAGRAPH>With certain limitations, an object of system functionality available in any current release will be remapped to some new replacement object at restart if the original object becomes obsolete in a future release.<INDEXTARGET ID="3prog40"><!-- POSTPROCESSDATA: 3prog40|release compatibility compatibility of releases --></PARAGRAPH>
</SECTION3>
</SECTION2>
<SECTION2 LBL="" HELPID = ""><TITLE><XREFTARGET ID="95268">Limitations and Caveats</TITLE><PARAGRAPH>Various CPR restrictions and warnings are listed below.<INDEXTARGET ID="3prog41"><!-- POSTPROCESSDATA: 3prog41|checkpoint-unsafe objects --></PARAGRAPH>
<SECTION3 LBL="" HELPID = ""><TITLE>SVR4 Semaphores and Messages</TITLE><PARAGRAPH>Applications using SVR4 semaphores, or SVR4 messages, cannot be checkpointed and restarted; see <REFPAGE>semop(2)</REFPAGE> or <REFPAGE>msgop(2)</REFPAGE>, respectively.<INDEXTARGET ID="3prog42"><!-- POSTPROCESSDATA: 3prog42|System V semaphores, unsafe System V messages, unsafe --></PARAGRAPH>
</SECTION3>
<SECTION3 LBL="" HELPID = ""><TITLE>Networking Socket Connections</TITLE><PARAGRAPH>Generally speaking, an application with open socket connections (see <REFPAGE>socket(2)</REFPAGE>) should not be checkpointed and restarted without special CPR-aware signal handling code. An application needs to catch SIGCKPT and SIGRESTART, and run signal handlers to disconnect any open socket before checkpoint, and reconnect the socket after restart.<INDEXTARGET ID="3prog43"><!-- POSTPROCESSDATA: 3prog43|socket connections, unsafe network sockets, unsafe --></PARAGRAPH>
<PARAGRAPH>Since the MPI (message passing interface) library uses sockets for network connections to the array services daemon <COMMAND>arrayd</COMMAND>, it is generally not possible to checkpoint MPI code. For more information, refer to the <DOCTITLE>MPI and PVM User's Guide</DOCTITLE>, or see <REFPAGE>mpi(5)</REFPAGE>.</PARAGRAPH>
</SECTION3>
<SECTION3 LBL="" HELPID = ""><TITLE>Other Special Devices</TITLE><PARAGRAPH>Any device or special file not listed in section <XREF IDREF="26794" TYPE="TITLE">&ldquo;Open Files and Devices&rdquo;</XREF> as a checkpoint-safe device can be considered not supported for checkpoint and restart. This includes tape, CD-ROM, and other special real or pseudo devices. Again, applications need to close these devices before checkpoint by catching SIGCKPT, and reopen them after restart by catching SIGRESTART.<INDEXTARGET ID="3prog44"><!-- POSTPROCESSDATA: 3prog44|special devices, unsafe --></PARAGRAPH>
</SECTION3>
<SECTION3 LBL="" HELPID = ""><TITLE>Graphics</TITLE><PARAGRAPH>X terminals, and other kinds of graphics terminals, are not supported. Applications with these devices open have to be CPR-aware and do proper clean-up by catching SIGCKPT and SIGRESTART and calling appropriate signal handling routines. (This is similar to how socket connections should be handled.)<INDEXTARGET ID="3prog45"><!-- POSTPROCESSDATA: 3prog45|graphics state, unsafe --></PARAGRAPH>
</SECTION3>
<SECTION3 LBL="" HELPID = ""><TITLE>Miscellaneous Restrictions</TITLE><PARAGRAPH>Applications with open directories cannot be properly checkpointed; see <REFPAGE>directory(3C)</REFPAGE>.</PARAGRAPH>
<PARAGRAPH>A potential problem exists with <FUNCTION>setuid()</FUNCTION> programs. When restarting resources such as file descriptors, locks acquired with a different (especially higher) privilege may not succeed. For example, a root process may first open some files, and then call <FUNCTION>setuid(</FUNCTION><VARIABLE>guest</VARIABLE><FUNCTION>)</FUNCTION>. If this process is checkpointed after <FUNCTION>setuid()</FUNCTION>, the corresponding restart fails because the files opened by root cannot be accessed by guest. Similar restrictions apply for a non-root process' inherited resources, such as file descriptors from a privileged process.<INDEXTARGET ID="3prog46"><!-- POSTPROCESSDATA: 3prog46|setuid restrictions --></PARAGRAPH>
</SECTION3>
</SECTION2>
</SECTION1>
<SECTION1 LBL="" HELPID = ""><TITLE>Saving State With ckpt_create()</TITLE><PARAGRAPH>The <FUNCTION>ckpt_create()</FUNCTION> function checkpoints a process or set of processes into a statefile. The following code shows sample usage of the <FUNCTION>ckpt_create()</FUNCTION> function.<INDEXTARGET ID="3prog47"><!-- POSTPROCESSDATA: 3prog47|<FUNCTION>ckpt_create()</FUNCTION> library routine --></PARAGRAPH>
<CODE><CAPTION LBL="3-5"><PREFIX>Example 3-5 </PREFIX>Sample Usage of ckpt_create() Function</CAPTION>#include &lt;ckpt.h>
static int
do_checkpoint(ckpt_id_t id, u_long type, char *pathname)
{
&space; int rc;
&space; printf("Checkpointing id %d (type %s) to directory %s\n",
&space; id, ckpt_type_str(CKPT_REAL_TYPE(type)), pathname);
&space; if ((rc = ckpt_create(pathname, id, type, 0, 0)) != 0) {
&space; printf("Failed to checkpoint process %lld\n", id);
&space; return (rc);
&space; }
&space; return (0);
}
</CODE>
<PARAGRAPH>The global variable <VARIABLE>cpr_flags</VARIABLE>, defined in <FILENAME>&lt;ckpt.h></FILENAME>, permits programmers to specify checkpoint-related options. The following flags may be bitwise ORed into <VARIABLE>cpr_flags</VARIABLE> before a call to <FUNCTION>ckpt_create()</FUNCTION>:</PARAGRAPH>
<HANGLIST><HANGPAIR><HANGITEM>CKPT_CHECKPOINT_CONT</HANGITEM>
<HANGBODY><PARAGRAPH>&lbreak;Have checkpoint target processes continue running after this checkpoint is finished. This overrides the default WILL policy, and the WILL policy specified in a user's CPR attribute file.</PARAGRAPH>
</HANGBODY>
</HANGPAIR>
<HANGPAIR><HANGITEM>CKPT_CHECKPOINT_KILL</HANGITEM>
<HANGBODY><PARAGRAPH>&lbreak;Kill checkpoint target processes after this checkpoint is finished. This is the default WILL policy, but overrides a CONT setting in a user's CPR attribute file.</PARAGRAPH>
</HANGBODY>
</HANGPAIR>
<HANGPAIR><HANGITEM>CKPT_CHECKPOINT_UPGRADE</HANGITEM>
<HANGBODY><PARAGRAPH>&lbreak;Use this flag only when issuing a checkpoint immediately before an operating system upgrade. This forces a save of all executable files and DSO libraries used by the current processes, so that target processes can be restarted in an upgraded environment. This flag must be used again if restarted processes are again checkpointed in the new environment.</PARAGRAPH>
</HANGBODY>
</HANGPAIR>
<HANGPAIR><HANGITEM>CKPT_OPENFILE_DISTRIBUTE</HANGITEM>
<HANGBODY><PARAGRAPH>&lbreak;Instead of saving open files under <FILENAME>statefile</FILENAME>, save open files in the same directory where they reside, and assign a unique name to identify them. For example, if a checkpointed process had the <FILENAME>/etc/passwd</FILENAME> file open with this flag set, the open file would be saved in <FILENAME>/etc/passwd.ckpt.pidXXX</FILENAME>. Although security could be a concern, this mode is useful when disk space is at a premium.</PARAGRAPH>
</HANGBODY>
</HANGPAIR>
</HANGLIST>
<PARAGRAPH>Since <VARIABLE>cpr_flags</VARIABLE> is a process-wide global variable, make sure to reset or clear flags appropriately before a second call to <FUNCTION>ckpt_create()</FUNCTION>.</PARAGRAPH>
</SECTION1>
<SECTION1 LBL="" HELPID = ""><TITLE>Resuming With ckpt_restart()</TITLE><PARAGRAPH>The <FUNCTION>ckpt_restart()</FUNCTION> function resumes execution of a checkpointed process or processes. The following code shows sample usage of the <FUNCTION>ckpt_restart()</FUNCTION> function.<INDEXTARGET ID="3prog48"><!-- POSTPROCESSDATA: 3prog48|<FUNCTION>ckpt_restart()</FUNCTION> library routine --></PARAGRAPH>
<CODE><CAPTION LBL="3-6"><PREFIX>Example 3-6 </PREFIX>Sample Usage of ckpt_restart() Function</CAPTION>#include &lt;ckpt.h>
static int
do_restart(char *path)
{
&space; printf("Restarting processes from directory %s\n", path);
&space; if (ckpt_restart(path, 0, 0) &lt; 0) {
&space; printf("Restart %s failed\n", path);
&space; return (-1);
&space; }
}
</CODE>
<PARAGRAPH>The global variable <VARIABLE>cpr_flags</VARIABLE>, defined in <FILENAME>&lt;ckpt.h></FILENAME>, permits programmers to specify restart-related options. The following flag may be bitwise ORed into <VARIABLE>cpr_flags</VARIABLE> before a call to <FUNCTION>ckpt_restart()</FUNCTION>:</PARAGRAPH>
<HANGLIST><HANGPAIR><HANGITEM>CKPT_RESTART_INTERACTIVE</HANGITEM>
<HANGBODY><PARAGRAPH>&lbreak;Make a process or group of processes interactive (that is, subject to UNIX job-control), if the original processes were interactive. The calling process or the calling process' group leader becomes the group leader of restarted processes, but the original process group ID cannot be restored. Without this flag, the default is to restart target processes as an independent process group with the original group ID restored.</PARAGRAPH>
</HANGBODY>
</HANGPAIR>
</HANGLIST>
<PARAGRAPH>Since <VARIABLE>cpr_flags</VARIABLE> is a process-wide global variable, make sure to reset or clear flags appropriately before a second call to <FUNCTION>ckpt_restart()</FUNCTION>.</PARAGRAPH>
</SECTION1>
<SECTION1 LBL="" HELPID = ""><TITLE>Checking Status With ckpt_stat()</TITLE><PARAGRAPH>The <FUNCTION>ckpt_stat()</FUNCTION> function retrieves status information about a checkpoint statefile. The following code shows sample usage of the <FUNCTION>ckpt_stat()</FUNCTION> function.<INDEXTARGET ID="3prog49"><!-- POSTPROCESSDATA: 3prog49|<FUNCTION>ckpt_stat()</FUNCTION> library routine --></PARAGRAPH>
<CODE><CAPTION LBL="3-7"><PREFIX>Example 3-7 </PREFIX>Sample Usage of ckpt_stat() Function</CAPTION>#include &lt;ckpt.h>
static int
ckpt_info(char *path)
{
&space; ckpt_stat_t *sp, *sp_next;
&space; int rc;
&space; if ((rc = ckpt_stat(path, &amp;sp)) != 0) {
&space; printf("Cannot get information on CPR file %s\n", path);
&space; return (rc);
&space; }
&space; printf("\nInformation About Statefile %s (%s):\n",
&space; path, rev_to_str(sp->cs_revision));
&space; while (sp) {
&space; printf(" Process:\t\t%s\n", sp->cs_psargs);
&space; printf(" PID,PPID:\t\t%d,%d\n", sp->cs_pid, sp->cs_ppid);
&space; printf(" PGRP,SID:\t\t%d,%d\n", sp->cs_pgrp, sp->cs_sid);
&space; printf(" Working at dir:\t%s\n", sp->cs_cdir);
&space; printf(" Num of Openfiles:\t%d\n", sp->cs_nfiles);
&space; printf(" Checkpointed @\t%s\n", ctime(&amp;sp->cs_stat.st_mtime));
&space; sp_next = sp->cs_next;
&space; free(sp);
&space; sp = sp_next;
&space; }
&space; return (0);
}
</CODE>
</SECTION1>
<SECTION1 LBL="" HELPID = ""><TITLE>Removing Checkpoints With ckpt_remove()</TITLE><PARAGRAPH>The <FUNCTION>ckpt_remove()</FUNCTION> function deletes a checkpoint statefile directory.</PARAGRAPH>
<PARAGRAPH>The following code shows sample usage of the <FUNCTION>ckpt_remove()</FUNCTION> function.<INDEXTARGET ID="3prog50"><!-- POSTPROCESSDATA: 3prog50|<FUNCTION>ckpt_remove()</FUNCTION> library routine --></PARAGRAPH>
<CODE><CAPTION LBL="3-8"><PREFIX>Example 3-8 </PREFIX>Sample Usage of ckpt_remove() Function</CAPTION>#include &lt;ckpt.h>
static int
do_remove(char *path)
{
&space; int rc = 0;
&space; if ((rc = ckpt_remove(path)) != 0) {
&space; printf("Remove checkpoint statefile %s failed\n", path);
&space; return (rc);
&space; }
}
</CODE>
</SECTION1>
<SECTION1 LBL="" HELPID = ""><TITLE>Preparing Checkpoints With ckpt_setup()</TITLE><PARAGRAPH>This function, described in the POSIX draft standard, is implemented as a no-op.</PARAGRAPH>
<PARAGRAPH>The following code shows the current implementation of the <FUNCTION>ckpt_create()</FUNCTION> function.<INDEXTARGET ID="3prog51"><!-- POSTPROCESSDATA: 3prog51|<FUNCTION>ckpt_setup()</FUNCTION> library routine --></PARAGRAPH>
<CODE><CAPTION LBL="3-9"><PREFIX>Example 3-9 </PREFIX>Implementation of ckpt_setup() Function</CAPTION>int ckpt_setup(struct ckpt_args *args[], size_t nargs)
{
&space; return(0);
}
</CODE>
</SECTION1>
</CHAPTER>

BIN
eoe/books/CPR_OG/Ahelp.doc Normal file

Binary file not shown.

145
eoe/books/CPR_OG/Ahelp.sgm Normal file
View File

@@ -0,0 +1,145 @@
<!-- Produced by version 3.13 (01/04/96) of SGI Frame/SGML translator -->
<APPENDIX LBL="A"><TITLE>Online Help</TITLE><PARAGRAPH>This appendix contains help screens accessible from the <COMMAND>cview</COMMAND> window's Help menu.</PARAGRAPH>
<SECTION1 LBL="" HELPID = "overview"><TITLE>Overview</TITLE><PARAGRAPH>IRIX Checkpoint and Restart (CPR) is a facility for saving a running process or set of processes and, at some later time, restarting the saved process(es) from the point already reached. A checkpoint image is saved in a directory, and restarted by reading saved state from this directory to resume execution.</PARAGRAPH>
<PARAGRAPH>The <COMMAND>cview</COMMAND> window provides a graphical user interface for checkpointing, restarting checkpoints, querying checkpoint status, and deleting statefiles. Two tabs at the bottom of the <COMMAND>cview</COMMAND> window select either the checkpoint or restart control panel.</PARAGRAPH>
</SECTION1>
<SECTION1 LBL="" HELPID = "howToChkpt"><TITLE>How to Checkpoint</TITLE><PARAGRAPH>Under the STEP I button, select a process or set of processes from the list. To checkpoint a process group, a session group, an IRIX array session, a process hierarchy, or an <BOLD>sproc</BOLD> shared group, select a category from the Individual Process drop-down menu. In the filename field below, enter the name of a directory for storing the statefile.</PARAGRAPH>
<PARAGRAPH>Click the STEP II button if you want to change checkpoint options, such as whether to exit or continue the process, or control open file and mapped file dispositions.</PARAGRAPH>
<PARAGRAPH>Click the STEP III OK button to initiate the checkpoint, or the Cancel Checkpoint button to discontinue.</PARAGRAPH>
</SECTION1>
<SECTION1 LBL="" HELPID = "howToRestart"><TITLE>How to Restart</TITLE><PARAGRAPH>Click the Restart Control Panel tab at the bottom of the <COMMAND>cview</COMMAND> window.</PARAGRAPH>
<PARAGRAPH>From the scrolling list of files and directories, select a statefile to restart. Note that all files and directories are shown, not just statefile directories. If a statefile is located somewhere besides your home directory, change directories using the icon finder at the top.</PARAGRAPH>
<PARAGRAPH>Select any options you want, such as whether to retain the original process ID, whether to restore the original working directory, or whether to restore the original root directory.</PARAGRAPH>
<PARAGRAPH>Click the OK Go Restart button to initiate restart.</PARAGRAPH>
</SECTION1>
<SECTION1 LBL="" HELPID = "howToQuery"><TITLE>Querying a Statefile</TITLE><PARAGRAPH>Click the Restart Control Panel tab at the bottom of the <COMMAND>cview</COMMAND> window.</PARAGRAPH>
<PARAGRAPH>From the scrolling list of files and directories, select a statefile to query. Note that all files and directories are shown, not just statefile directories. If a statefile is located somewhere besides your home directory, change directories using the icon finder at the top.</PARAGRAPH>
<PARAGRAPH>At the bottom of the <COMMAND>cview</COMMAND> window, click the Tell Me More About This Statefile button.</PARAGRAPH>
</SECTION1>
<SECTION1 LBL="" HELPID = "howToDelete"><TITLE>Deleting a Statefile</TITLE><PARAGRAPH>Click the Restart Control Panel tab at the bottom of the <COMMAND>cview</COMMAND> window.</PARAGRAPH>
<PARAGRAPH>From the scrolling list of files and directories, select a statefile to delete. Note that all files and directories are shown, not just statefile directories. If a statefile is located somewhere besides your home directory, change directories using the icon finder at the top.</PARAGRAPH>
<PARAGRAPH>At the bottom of the <COMMAND>cview</COMMAND> window, click the Remove This Statefile button.</PARAGRAPH>
</SECTION1>
<SECTION1 LBL="" HELPID = "emptyLabel1"><TITLE>Checkpoint Widgets</TITLE><SECTION2 LBL="" HELPID = "step1"><TITLE>Step I Button</TITLE><PARAGRAPH>Click this button to poll the system for processes owned by the user listed on the right.</PARAGRAPH>
</SECTION2>
<SECTION2 LBL="" HELPID = "userDP"><TITLE>User Drop Pocket</TITLE><PARAGRAPH>This is the drop pocket for the process owner. </PARAGRAPH>
</SECTION2>
<SECTION2 LBL="" HELPID = "userName"><TITLE>User Name</TITLE><PARAGRAPH>This is the text entry field for the process owner. To look at processes for a different user, type a valid user name into this text entry field, and press Enter or click the STEP I button.</PARAGRAPH>
</SECTION2>
<SECTION2 LBL="" HELPID = "userRcyl"><TITLE>User Recycle</TITLE><PARAGRAPH>This is the recycle button for the process owner. Each time you change the process owner, the recycle list grows, providing a shortcut next time you want to switch process owners.</PARAGRAPH>
</SECTION2>
<SECTION2 LBL="" HELPID = "procList"><TITLE>Process List</TITLE><PARAGRAPH>This is a list of processes on the system owned by the specified user. Column headings indicate the following values:</PARAGRAPH>
<HANGLIST><HANGPAIR><HANGITEM>USER</HANGITEM>
<HANGBODY><PARAGRAPH>user name</PARAGRAPH>
</HANGBODY>
</HANGPAIR>
<HANGPAIR><HANGITEM>PID</HANGITEM>
<HANGBODY><PARAGRAPH>process ID</PARAGRAPH>
</HANGBODY>
</HANGPAIR>
<HANGPAIR><HANGITEM>PPID</HANGITEM>
<HANGBODY><PARAGRAPH>parent process ID</PARAGRAPH>
</HANGBODY>
</HANGPAIR>
<HANGPAIR><HANGITEM>PGID</HANGITEM>
<HANGBODY><PARAGRAPH>process group ID</PARAGRAPH>
</HANGBODY>
</HANGPAIR>
<HANGPAIR><HANGITEM>SID</HANGITEM>
<HANGBODY><PARAGRAPH>session group ID</PARAGRAPH>
</HANGBODY>
</HANGPAIR>
<HANGPAIR><HANGITEM>ASH</HANGITEM>
<HANGBODY><PARAGRAPH>IRIX Array Session ID</PARAGRAPH>
</HANGBODY>
</HANGPAIR>
<HANGPAIR><HANGITEM>COMMAND</HANGITEM>
<HANGBODY><PARAGRAPH> the command string with arguments</PARAGRAPH>
</HANGBODY>
</HANGPAIR>
</HANGLIST>
</SECTION2>
<SECTION2 LBL="" HELPID = "procType"><TITLE>Process Types</TITLE><PARAGRAPH>This drop-down menu controls whether to checkpoint an individual process, a process group, a process session, an IRIX array session, a process hierarchy, or an <BOLD>sproc</BOLD> shared group. Be sure to select a set of processes from the list above that can be checkpointed as the process type you select. Process types are as follows:</PARAGRAPH>
<BULLETLIST><BULLET><PARAGRAPH>UNIX process ID; see <REFPAGE>ps(1)</REFPAGE></PARAGRAPH>
</BULLET>
<BULLET><PARAGRAPH>UNIX process group ID; see <REFPAGE>setpgrp(2)</REFPAGE></PARAGRAPH>
</BULLET>
<BULLET><PARAGRAPH>UNIX process session ID; see <REFPAGE>setsid(2)</REFPAGE></PARAGRAPH>
</BULLET>
<BULLET><PARAGRAPH>IRIX array session ID; see <REFPAGE>array_sessions(5)</REFPAGE></PARAGRAPH>
</BULLET>
<BULLET><PARAGRAPH>Process hierarchy (tree) rooted at the given process ID</PARAGRAPH>
</BULLET>
<BULLET><PARAGRAPH>IRIX <FUNCTION>sproc()</FUNCTION> shared group; see <REFPAGE>sproc(2)</REFPAGE></PARAGRAPH>
</BULLET>
</BULLETLIST>
</SECTION2>
<SECTION2 LBL="" HELPID = "statefile"><TITLE>Statefile Field</TITLE><PARAGRAPH>A statefile is a directory containing information about a process or set of processes, including the names of open files and system objects. Statefiles contain all available information about a running process, to enable restart. Statefiles are stored as files inside a directory, protected by normal IRIX security mechanisms.</PARAGRAPH>
</SECTION2>
<SECTION2 LBL="" HELPID = "statefileDP"><TITLE>Statefile Drop Pocket</TITLE><PARAGRAPH>This is the drop pocket for the statefile name. You may drag a directory icon from another desktop application and drop it here.</PARAGRAPH>
</SECTION2>
<SECTION2 LBL="" HELPID = "statefileName"><TITLE>Statefile Name</TITLE><PARAGRAPH>This is the text entry field for the statefile name. Enter a pathname here, and a statefile directory will be created in the location you specify.</PARAGRAPH>
</SECTION2>
<SECTION2 LBL="" HELPID = "sysUpgr"><TITLE>System Upgrade</TITLE><PARAGRAPH>Click here if you intend to upgrade operating system software before restarting this set of processes. When you checkpoint for system upgrade, CPR saves not only open file and process states, but also any system commands and libraries that are necessary to restart the statefile accurately.</PARAGRAPH>
</SECTION2>
<SECTION2 LBL="" HELPID = "step2"><TITLE>Step II Button</TITLE><PARAGRAPH>This section of the checkpoint control panel sets checkpoint attributes, similar to the attributes controlled by the <COMMAND>cpr</COMMAND> command's <FILENAME>$HOME/.cpr</FILENAME> file. Click this button to display open files and mapped files in the scrolling list below.</PARAGRAPH>
</SECTION2>
<SECTION2 LBL="" HELPID = "willMenu"><TITLE>Exit or Continue</TITLE><PARAGRAPH>This drop-down menu controls whether the selected process(es) exit after checkpointing, or whether they continue running. The default is to exit.</PARAGRAPH>
</SECTION2>
<SECTION2 LBL="" HELPID = "fileAttr"><TITLE>File Dispositions</TITLE><PARAGRAPH>This drop-down menu controls how CPR treats files that the selected process has open at checkpoint time. The five choices are as follows:</PARAGRAPH>
<HANGLIST><HANGPAIR><HANGITEM>MERGE</HANGITEM>
<HANGBODY><PARAGRAPH>No explicit file save at checkpoint. Upon restart, reopen the file and seek to the previous offset. This may be used for files that are not modified after checkpoint, or for files where it is acceptable to overwrite changes made between checkpoint and restart time, particularly past the saved offset point. If programs seek before writing, changes preceding the offset point could be overwritten as well.</PARAGRAPH>
</HANGBODY>
</HANGPAIR>
<HANGPAIR><HANGITEM>IGNORE </HANGITEM>
<HANGBODY><PARAGRAPH>No explicit file save at checkpoint. Upon restart, reopen the file as it was originally opened, at offset zero (even if originally opened for append). If the file was originally opened for writing, as with the <FUNCTION>fopen()</FUNCTION> &ldquo;w&rdquo; or &ldquo;a&rdquo; flag, this action has the effect of overwriting the entire file.</PARAGRAPH>
</HANGBODY>
</HANGPAIR>
<HANGPAIR><HANGITEM>APPEND </HANGITEM>
<HANGBODY><PARAGRAPH>No explicit file save at checkpoint. Upon restart, append to the end of the file. This disposition is good for log files.</PARAGRAPH>
</HANGBODY>
</HANGPAIR>
<HANGPAIR><HANGITEM>REPLACE </HANGITEM>
<HANGBODY><PARAGRAPH>Explicitly save the file at checkpoint. Upon restart, replace the original file with the saved one. Any changes made to the original file between checkpoint and restart time are overwritten by the saved file.</PARAGRAPH>
</HANGBODY>
</HANGPAIR>
<HANGPAIR><HANGITEM>SUBSTITUTE</HANGITEM>
<HANGBODY><PARAGRAPH>Explicitly save the file at checkpoint. Upon restart, reopen the saved file as an anonymous substitution for the original file. This is similar to the REPLACE mode except that the original file remains untouched, unless specifically altered by the program.</PARAGRAPH>
</HANGBODY>
</HANGPAIR>
</HANGLIST>
</SECTION2>
<SECTION2 LBL="" HELPID = "fileList"><TITLE>Open File List</TITLE><PARAGRAPH>After you click the Step II button, this list shows all open files for the selected process(es), and the open file dispositions in effect for each file.</PARAGRAPH>
</SECTION2>
<SECTION2 LBL="" HELPID = "buttonOK"><TITLE>OK Button</TITLE><PARAGRAPH>Click this button to initiate a checkpoint with the options you have selected above.</PARAGRAPH>
</SECTION2>
<SECTION2 LBL="" HELPID = "buttonAbort"><TITLE>Cancel Button</TITLE><PARAGRAPH>Click this button to cancel the checkpoint options you have selected.</PARAGRAPH>
</SECTION2>
<SECTION2 LBL="" HELPID = "tabArea"><TITLE>Tab Controls</TITLE><PARAGRAPH>The <COMMAND>cview</COMMAND> window contains two (2) control panels in one: the Checkpoint Control Panel and Restart Control Panel. Click one of these tabs to select the control panel you want.</PARAGRAPH>
</SECTION2>
</SECTION1>
<SECTION1 LBL="" HELPID = "emptyLabel2"><TITLE>Restart Widgets</TITLE><SECTION2 LBL="" HELPID = "but_ls"><TITLE>List Button</TITLE><PARAGRAPH>Click this button to list files and directories in the pathname displayed just below.</PARAGRAPH>
</SECTION2>
<SECTION2 LBL="" HELPID = "pathDP"><TITLE>Finder Drop Pocket</TITLE><PARAGRAPH>This is the drop pocket for the pathname. You may drag a directory icon from another desktop application and drop it here.</PARAGRAPH>
</SECTION2>
<SECTION2 LBL="" HELPID = "pathName"><TITLE>Finder Pathname</TITLE><PARAGRAPH>This is the text field for the current pathname. To look at files in a different directory, modify the displayed pathname as you wish, and press Enter or click the button above.</PARAGRAPH>
</SECTION2>
<SECTION2 LBL="" HELPID = "pathRcyl"><TITLE>Finder Recycle</TITLE><PARAGRAPH>This is the recycle button for the pathname. Each time you change the pathname, the recycle list grows, providing a shortcut next time you want to switch pathnames.</PARAGRAPH>
</SECTION2>
<SECTION2 LBL="" HELPID = "lsList"><TITLE>Statefile List</TITLE><PARAGRAPH>This is a list of all files in the directory specified in the finder pathname above. File details such as owner and modification time are shown on the right. Select a statefile from this list, or change directories by changing the finder pathname.</PARAGRAPH>
</SECTION2>
<SECTION2 LBL="" HELPID = "forkMenu"><TITLE>Process ID Menu</TITLE><PARAGRAPH>This drop-down menu controls how processes are forked at restart time. The default is to restart using the original process IDs. If this proves impossible, select the Any Process ID option instead.</PARAGRAPH>
</SECTION2>
<SECTION2 LBL="" HELPID = "notWrkngDir"><TITLE>Original Working Directory</TITLE><PARAGRAPH>If you don't care about the working directory for restarted processes, click the checkbox saying &ldquo;Don't restore the original working directory.&rdquo;</PARAGRAPH>
</SECTION2>
<SECTION2 LBL="" HELPID = "notRootDir"><TITLE>Original Root Directory</TITLE><PARAGRAPH>If you don't care about the root directory for restarted processes, click the checkbox saying &ldquo;Don't restore the original root directory.&rdquo;</PARAGRAPH>
</SECTION2>
<SECTION2 LBL="" HELPID = "buttonRestart"><TITLE>Restart Button</TITLE><PARAGRAPH>Click this button to initiate restart from the selected statefile.</PARAGRAPH>
</SECTION2>
<SECTION2 LBL="" HELPID = "buttonQuery"><TITLE>Tell Me More Button</TITLE><PARAGRAPH>Click this button to query the selected statefile for status information.</PARAGRAPH>
</SECTION2>
<SECTION2 LBL="" HELPID = "buttonRemove"><TITLE>Remove Statefile Button</TITLE><PARAGRAPH>Click this button to delete the selected statefile from the filesystem.</PARAGRAPH>
<PARAGRAPH></PARAGRAPH>
</SECTION2>
</SECTION1>
</APPENDIX>

BIN
eoe/books/CPR_OG/CPRog.book Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

241
eoe/books/CPR_OG/Makefile Normal file
View File

@@ -0,0 +1,241 @@
#!smake -r
# Makefile for making a book
#
# Building books and figures:
# To build the print figures for the book issue the command 'make print',
# this must be done in order to populate the print directory with your
# figures - your files must reference the figures from the print
# directory not the orig directory.
# To build the book issue the command 'make book'.
#
# Cleaning up files:
# To remove the master sgml file and books directory use 'make clean_book'.
# To remove the *.sgm files issue 'make clean_sgm'.
# To clean up all the figures use 'make clean_figures'.
# Do this only if you really want to clean up your figures directories and
# you haven't done any figure conversions by hand.
# To clean up everything issue 'make clobber' - this includes the figures.
# Edit this file in the locations specified.
# Location 1: The TITLE, FULL_TITLE, and VERSION Variables
#
# TITLE defines the short title of the book. Please verify the
# short title with your production editor.
#
# This title must be a valid directory name and not contain any special
# characters or a leading '.' Do not have a trailing space on the TITLE line.
#
# FULL_TITLE defines the full title for the book as it should appear
# next to the icon on an InSight bookshelf.
#
# VERSION defines the version number for this release of the product
# and is displayed when the 'Product Info' item off the 'Help' menu is
# selected.
#
# TITLE = SiliconSurf
# FULL_TITLE = "Silicon Surf Help Book"
# VERSION = 1.0
TITLE = CPR_OG
FULL_TITLE = "IRIX Checkpoint and Restart Operation Guide"
VERSION = 007-3236-003, 4/98
include ${ROOT}/usr/include/make/commonbookdefs
# Location 2: The BOOKSHELF, BOOK_LANG, DOC_TYPE, and HIDDEN Variables
#
# The BOOKSHELF variable defines the bookshelf that the book will
# appear on in the Insight library view. Valid entries for SGI
# Tech Pubs are SGI_EndUser (the default), SGI_Developer, and
# SGI_Admin.
#
# The BOOK_ICON variable defines the icon the book will have on the
# bookshelf. The values available are 'sgi_end_user' for End User books
# 'sgi_admin' for Administrator books, 'sgi_developer' for Developer books,
# 'binder' for Support and other "binder" type books, and 'generic' for all
# other books. The default is 'generic'.
#
# The BOOK_LANG variable defines the base language of the book and
# changes translator-defined strings in the book to the specified language.
# The supported values are C (the default), which is English; de for
# German; and fr for French. Case of the letters is important. No other
# values are supported other than C, de, and fr.
#
# The DTD variable defines the Document Type Definition that the
# SGML conforms to. Currently available options are SGIDOC for the
# standard SGI DTD; XHELP for the XHelp DTD; DOCBOOK for the Davenport
# DocBook DTD, and OTHER for any customized DTD. Case of the letters
# is important.
#
# If OTHER is specified on the DTD variable then DTD specific
# stylesheets must be created and placed in a directory called 'styles',
# a booklist.txt file must be created, an EBT specific DTD must be
# created and called TITLE.dtd, and if the files needs a MIF to SGML
# translator then that must be specified on a variable called
# OTHER_TRANSLATOR - specifying any other arguments that that translator
# might need - other than the file to translate.
#
# All other DTD's automatically set up these for you. The default
# is to use the SGIDOC DTD.
#
# The DOC_TYPE variable defines the SGML tag type for the contents of
# the book. All Tech Pubs books are MANUAL (which is the default) while
# CSD Support books should be SUPPORT. No other values are supported.
#
# The SORT_ORDER variable defines the order this book should appear on
# the bookshelf. It is a numeric value that can be used to sort the
# books on a bookshelf. This number should be gotten from your
# production editor. A default of 999 is used if none is specified.
#
# The HIDDEN variable defines whether this book will be displayed when
# this book is accessed via the InSight library browser rather than the
# SGIHelp browser from the application. The default is to keep XHELP
# based books hidden and all other's not hidden.
#
# If you need to define a value other than the default, uncomment the
# appropriate line and define the value.
#
BOOKSHELF = /usr/share/Insight/library/SGI_bookshelves/SGI_Admin
BOOK_ICON = sgi_admin
# BOOK_LANG = C
# DTD = SGIDOC
# DOC_TYPE = MANUAL
# SORT_ORDER = 999
# HIDDEN = FALSE
# Location 3: The BOOK_FILES Variable
#
# List the content files in *CORRECT* order that they appear in the book.
# DO NOT list any generated files (i.e., TOC, LOT, IX, etc).
# Use trailing '\' for continuing onto the next line.
# Don't end the last line of file names with trailing '\'.
# Each line of filenames after the first line should have a leading
# tab character.
#
# BOOK_FILES = front.doc \
# ch1.doc ch2.doc \
# appa.doc appb.doc
BOOK_FILES = 0front.doc 0intro.doc 1user.doc 2admin.doc 3prog.doc Ahelp.doc
# NOTES ON FIGURES:
#
# Every figure you want to appear in paper and online MUST appear
# only once on the following lines.
#
# All figure names must be listed as they appear in the 'orig' directory.
#
# For any composite figures - list each file on the PRINT_BW line.
# Location 4: The PRINT_BW Variable
#
# List the name of each .rgb figure from the orig directory that
# should be converted to black and white in the print directory.
# These figures will be converted to color GIF online.
#
# PRINT_BW = figure1.rgb figure2.rgb
PRINT_BW = checkpoint.rgb restart.rgb
# Location 5: The PRINT_COLOR Variable
#
# List the name of each .rgb figure from the orig directory that should
# be kept in color in the print directory. These figures will be
# converted to color GIF online.
#
# Also list any .rgb figures in the orig directory that have been
# processed to b/w using tobw. Note that such figures will appear
# in black and white online.
#
# If you don't want a figure converted to GIF online, but kept in
# 24-bit RGB, use the RGB variable instead of the PRINT_COLOR variable.
#
# PRINT_COLOR = figure3.rgb figure4.rgb
PRINT_COLOR =
# Location 6: The PostScript Variable
#
# List the name of each PostScript figure in the orig directory that
# should be remain PostScript in the print directory and convert to
# GIF online.
#
# PostScript = figure5.ps figure6.ai
PostScript =
# Location 7: The GIF Variable
#
# List the name of each .gif figure in the orig directory that
# should be kept GIF in both the print and online directories.
#
# GIF = figure7.gif
GIF =
# Location 8: The RGB Variable
#
# List the name of each .rgb figure from the orig directory that
# should be kept 24-bit RGB in both the print and online directories.
#
# RGB = figure8.rgb
RGB =
# Location 9: The XWD Variable
#
# List the name of each .xwd figure from the orig directory that
# should be kept in XWD format in the print directory and converted
# to GIF online.
#
# XWD = figure9.xwd
XWD =
#
# Location 10: The BW Variable
#
# List the name of each .bw figure from the orig directory that
# has already been run through tobw and is referenced in your book
# by it's .bw suffix
#.
# The files should not appear on any of the above PRINT_ lines.
# These images will remain in black and white online as well.
#
# BW = figure10.bw
BW =
# Location 11: The INLINE_MEDIA Variable
#
# List the name of any inline media objects from the orig directory
# that are referenced by your book. These could be movie, audio, and
# Inventor files.
#
# INLINE_MEDIA = movie.mv
INLINE_MEDIA =
# Location 12: The MISC_FILES Variable
#
# List the name of any other files that you want to be installed in the
# figures directory. These files must exist in the orig directory and
# would be files like the hot-spot data files, auxillary files for
# the INLINE_MEDIA files, C program text, and any other files that
# you absoluletly want to have installed with the book.
#
# NOTE: No QA testing will be done with these figures since they may
# not be referenced directly by the SGML source file but rather indirectly
# via other files. These files will be copied down and shipped with the
# book so make sure you don't list any cruft on this line.
#
# NOTE: If you do NOT have any figures that should be copied down - then
# do NOT uncomment this line as an empty definition will break your build.
#
# MISC_FILES = figure1.rgb.hot
# MISC_FILES =
include ${COMMONBOOKRULES}
include ${COMMONPREPRULES}

4
eoe/books/CPR_OG/README Normal file
View File

@@ -0,0 +1,4 @@
Title Checkpoint and Restart Operation Guide
Abbrev CPR_OG
Part# 007-3236-003
Writer Bill Tuthill

View File

@@ -0,0 +1,37 @@
1;CPR_OG;Overview;0;overview;Cview.cview.overview
2;CPR_OG;How to Checkpoint;0;howToChkpt;Cview.cview
2;CPR_OG;How to Restart;0;howToRestart;Cview.cview
2;CPR_OG;Querying a Statefile;0;howToQuery;Cview.cview
2;CPR_OG;Deleting a Statefile;0;howToDelete;Cview.cview
0;CPR_OG;Using the Checkpoint Deck;0;howToChkpt;Cview.cview.deck.deck.checkpoint
0;CPR_OG;Step I Button;0;step1;Cview.cview.deck.deck.checkpoint.but_ps
0;CPR_OG;User Drop Pocket;0;userDP;Cview.cview.deck.deck.checkpoint.finderUid.dropPocket
0;CPR_OG;User Name;0;userName;Cview.cview.deck.deck.checkpoint.finderUid.zbText.text
0;CPR_OG;User Recycle;0;userRcyl;Cview.cview.deck.deck.checkpoint.finderUid.historyBar.historyButton
0;CPR_OG;Process List;0;procList;Cview.cview.deck.deck.checkpoint.scrolledWindow.psList
0;CPR_OG;Process Types;0;procType;Cview.cview.deck.deck.checkpoint.idMenu
0;CPR_OG;Statefile Field;0;statefile;Cview.cview.deck.deck.checkpoint.label2
0;CPR_OG;Statefile Drop Pocket;0;statefileDP;Cview.cview.deck.deck.checkpoint.finderStatef.dropPocket
0;CPR_OG;Statefile Name;0;statefileName;Cview.cview.deck.deck.checkpoint.finderStatef.zbText.text
0;CPR_OG;System Upgrade;0;sysUpgr;Cview.cview.deck.deck.checkpoint.tog_upgrade
0;CPR_OG;Step II Button;0;step2;Cview.cview.deck.deck.checkpoint.but_file
0;CPR_OG;Exit or Continue;0;willMenu;Cview.cview.deck.deck.checkpoint.willMenu
0;CPR_OG;File Dispositions;0;fileAttr;Cview.cview.deck.deck.checkpoint.fileMenu
0;CPR_OG;Open File List;0;fileList;Cview.cview.deck.deck.checkpoint.scrolledWindow1.fileList
0;CPR_OG;OK Button;0;buttonOK;Cview.cview.deck.deck.checkpoint.but_ok
0;CPR_OG;Cancel Button;0;buttonAbort;Cview.cview.deck.deck.checkpoint.but_abort
0;CPR_OG;Tab Controls;0;tabArea;Cview.cview.deck.tabs.tabArea
0;CPR_OG;Using the Restart Deck;0;howToRestart;Cview.cview.deck.deck.restart
0;CPR_OG;List Button;0;but_ls;Cview.cview.deck.deck.restart.but_ls
0;CPR_OG;Finder Drop Pocket;0;pathDP;Cview.cview.deck.deck.restart.finder_statef.dropPocket
0;CPR_OG;Finder Pathname;0;pathName;Cview.cview.deck.deck.restart.finder_statef.zbText.text
0;CPR_OG;Finder Recycle;0;pathRcyl;Cview.cview.deck.deck.restart.finder_statef.historyBar.historyButton
0;CPR_OG;Statefile List;0;lsList;Cview.cview.deck.deck.restart.scrolledWindow.lsList
0;CPR_OG;Process ID Menu;0;forkMenu;Cview.cview.deck.deck.restart.forkMenu
0;CPR_OG;Original Working Directory;0;notWrkngDir;Cview.cview.deck.deck.restart.tog_cdir
0;CPR_OG;Original Root Directory;0;notRootDir;Cview.cview.deck.deck.restart.tog_rdir
0;CPR_OG;Restart Button;0;buttonRestart;Cview.cview.deck.deck.restart.but_restart
0;CPR_OG;Tell Me More Button;0;buttonQuery;Cview.cview.deck.deck.restart.info
0;CPR_OG;Remove Statefile Button;0;buttonRemove;Cview.cview.deck.deck.restart.remove

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

263
eoe/books/Combiner_UG/Makefile Executable file
View File

@@ -0,0 +1,263 @@
#!smake -r
# Makefile for making a book
#
# Building books and figures:
# To build the print figures for the book issue the command 'make print',
# this must be done in order to populate the print directory with your
# figures - your files must reference the figures from the print
# directory not the orig directory.
# To build the book issue the command 'make book'.
#
# Cleaning up files:
# To remove the master sgml file and books directory use 'make clean_book'.
# To remove the *.sgm files issue 'make clean_sgm'.
# To clean up all the figures use 'make clean_figures'.
# Do this only if you really want to clean up your figures directories and
# you haven't done any figure conversions by hand.
# To clean up everything issue 'make clobber' - this includes the figures.
# Edit this file in the locations specified.
# Location 1: The TITLE, FULL_TITLE, and VERSION Variables
#
# TITLE defines the short title of the book. Please verify the
# short title with your production editor.
#
# This title must be a valid directory name and not contain any special
# characters or a leading '.' Do not have a trailing space on the TITLE line.
#
# FULL_TITLE defines the full title for the book as it should appear
# next to the icon on an InSight bookshelf.
#
# VERSION defines the version number for this release of the product
# and is displayed when the 'Product Info' item off the 'Help' menu is
# selected.
#
# TITLE = SiliconSurf
# FULL_TITLE = "Silicon Surf Help Book"
# VERSION = 1.0
TITLE = Combiner_UG
FULL_TITLE = "InfiniteReality Video Format Combiner User's Guide"
VERSION = 007-3279-003, 5/98
include ${ROOT}/usr/include/make/commonbookdefs
# Location 2: The BOOKSHELF, BOOK_LANG, DOC_TYPE, and HIDDEN Variables
#
# The BOOKSHELF variable defines the bookshelf that the book will
# appear on in the Insight library view. Valid entries for SGI
# Tech Pubs are SGI_EndUser (the default), SGI_Developer, and
# SGI_Admin.
#
# The BOOK_ICON variable defines the icon the book will have on the
# bookshelf. The values available are 'sgi_end_user' for End User books
# 'sgi_admin' for Administrator books, 'sgi_developer' for Developer books,
# 'binder' for Support and other "binder" type books, and 'generic' for all
# other books. The default is 'generic'.
#
# The BOOK_LANG variable defines the base language of the book and
# changes translator-defined strings in the book to the specified language.
# The supported values are C (the default), which is English; de for
# German; and fr for French. Case of the letters is important. No other
# values are supported other than C, de, and fr.
#
# The DTD variable defines the Document Type Definition that the
# SGML conforms to. Currently available options are SGIDOC for the
# standard SGI DTD; XHELP for the XHelp DTD; DOCBOOK for the Davenport
# DocBook DTD, and OTHER for any customized DTD. Case of the letters
# is important.
#
# If OTHER is specified on the DTD variable then DTD specific
# stylesheets must be created and placed in a directory called 'styles',
# a booklist.txt file must be created, an EBT specific DTD must be
# created and called TITLE.dtd, and if the files needs a MIF to SGML
# translator then that must be specified on a variable called
# OTHER_TRANSLATOR - specifying any other arguments that that translator
# might need - other than the file to translate.
#
# All other DTD's automatically set up these for you. The default
# is to use the SGIDOC DTD.
#
# The DOC_TYPE variable defines the SGML tag type for the contents of
# the book. All Tech Pubs books are MANUAL (which is the default) while
# CSD Support books should be SUPPORT. No other values are supported.
#
# The SORT_ORDER variable defines the order this book should appear on
# the bookshelf. It is a numeric value that can be used to sort the
# books on a bookshelf. This number should be gotten from your
# production editor. A default of 999 is used if none is specified.
#
# The HIDDEN variable defines whether this book will be displayed when
# this book is accessed via the InSight library browser rather than the
# SGIHelp browser from the application. The default is to keep XHELP
# based books hidden and all other's not hidden.
#
# If you need to define a value other than the default, uncomment the
# appropriate line and define the value.
#
BOOKSHELF = /usr/share/Insight/library/SGI_bookshelves/SGI_Admin
BOOK_ICON = sgi_admin
# BOOK_LANG = C
# DTD = SGIDOC
# DOC_TYPE = MANUAL
# SORT_ORDER = 999
# HIDDEN = FALSE
# Location 3: The BOOK_FILES Variable
#
# List the content files in *CORRECT* order that they appear in the book.
# DO NOT list any generated files (i.e., TOC, LOT, IX, etc).
# Use trailing '\' for continuing onto the next line.
# Don't end the last line of file names with trailing '\'.
# Each line of filenames after the first line should have a leading
# tab character.
#
# BOOK_FILES = front.doc \
# ch1.doc ch2.doc \
# appa.doc appb.doc
BOOK_FILES = cbinr.front.doc cbinr.intro.doc \
cbinr1.doc cbinr2.doc cbinr3.doc \
cbinr4.doc cbinr5.doc cbinra.doc cbinrb.doc vidgloss.doc
# NOTES ON FIGURES:
#
# Every figure you want to appear in paper and online MUST appear
# only once on the following lines.
#
# All figure names must be listed as they appear in the 'orig' directory.
#
# Location 4: The PRINT_BW Variable
#
# List the name of each .rgb figure from the orig directory that
# should be converted to black and white in the print directory.
# These figures will be converted to color GIF online.
#
# PRINT_BW = figure1.rgb figure2.rgb
PRINT_BW = chattribs.rgb \
chattribs.usegamma.rgb \
chattribs1.rgb \
dvp.rgb \
encoder.rgb \
globattribs.rgb gvo.rgb \
main.rgb \
main.tut1.rgb \
main.w.ch0.rgb \
newchan.rgb \
newchan.tut.rgb \
overlap.rgb \
savecombo.rgb \
scr.ex3.rgb \
sirius.rgb \
targethw.rgb
# Location 5: The PRINT_COLOR Variable
#
# List the name of each .rgb figure from the orig directory that should
# be kept in color in the print directory. These figures will be
# converted to color GIF online.
#
# Also list any .rgb figures in the orig directory that have been
# processed to b/w using tobw. Note that such figures will appear
# in black and white online.
#
# If you don't want a figure converted to GIF online, but kept in
# 24-bit RGB, use the RGB variable instead of the PRINT_COLOR variable.
#
# PRINT_COLOR = figure3.rgb figure4.rgb
PRINT_COLOR =
# Location 6: The PostScript Variable
#
# List the name of each PostScript figure in the orig directory that
# should be remain PostScript in the print directory and convert to
# GIF online.
#
# PostScript = figure5.ps figure6.ai
PostScript = encoder.roaming.ai \
filter.width.ai \
framebuffer.ai \
framebuffer.pixeldepth.ai \
rntime.panning.tile.bndaries.ai \
stacked.field.layout.ai
# Location 7: The GIF Variable
#
# List the name of each .gif figure in the orig directory that
# should be kept GIF in both the print and online directories.
#
# GIF = figure7.gif
GIF =
# Location 8: The RGB Variable
#
# List the name of each .rgb figure from the orig directory that
# should be kept 24-bit RGB in both the print and online directories.
#
# RGB = figure8.rgb
RGB =
# Location 9: The XWD Variable
#
# List the name of each .xwd figure from the orig directory that
# should be kept in XWD format in the print directory and converted
# to GIF online.
#
# XWD = figure9.xwd
XWD =
#
# Location 10: The BW Variable
#
# List the name of each .bw figure from the orig directory that
# has already been run through tobw and is referenced in your book
# by it's .bw suffix
#.
# The files should not appear on any of the above PRINT_ lines.
# These images will remain in black and white online as well.
#
# BW = figure10.bw
BW = exitwarng.bw \
save2hw.bw \
textpt.chan.err.bw
# Location 11: The INLINE_MEDIA Variable
#
# List the name of any inline media objects from the orig directory
# that are referenced by your book. These could be movie, audio, and
# Inventor files.
#
# INLINE_MEDIA = movie.mv
INLINE_MEDIA =
# Location 12: The MISC_FILES Variable
#
# List the name of any other files that you want to be installed in the
# figures directory. These files must exist in the orig directory and
# would be files like the hot-spot data files, auxillary files for
# the INLINE_MEDIA files, C program text, and any other files that
# you absoluletly want to have installed with the book.
#
# NOTE: No QA testing will be done with these figures since they may
# not be referenced directly by the SGML source file but rather indirectly
# via other files. These files will be copied down and shipped with the
# book so make sure you don't list any cruft on this line.
#
# NOTE: If you do NOT have any figures that should be copied down - then
# do NOT uncomment this line as an empty definition will break your build.
#
# MISC_FILES = figure1.rgb.hot
# MISC_FILES =
include ${COMMONBOOKRULES}
include ${COMMONPREPRULES}

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,8 @@
<!-- Produced by version 3.14 (11/22/96) of SGI Frame/SGML translator -->
<FRONTMATTER><TITLEPAGE><TITLE>InfiniteReality<SUPERSCRIPT>&trade;</SUPERSCRIPT> Video Format Combiner User's Guide</TITLE><DOCNUMBER>Document Number 007-3279-003</DOCNUMBER></TITLEPAGE>
<CREDITSPAGE><CONTRIBUTORS>CONTRIBUTORS<NAMES>Written by Carolyn Curtis</NAMES><NAMES>Illustrated by Carolyn Curtis, Dany Galgani, and Mark Schwenden</NAMES><NAMES>Production by Linda Rae Sande</NAMES><NAMES>Engineering contributions by Gregory Eitzmann, Shrijeet Mukherjee, Greg Sadowski, and Dave Warren</NAMES></CONTRIBUTORS>
<COPYRIGHT>&copy; 1996 - 1998, Silicon Graphics, Inc.&mdash; All Rights Reserved</COPYRIGHT><PARAGRAPH>The contents of this document may not be copied or duplicated in any form, in whole or in part, without the prior written permission of Silicon Graphics, Inc.</PARAGRAPH>
<TECHNICAL>RESTRICTED RIGHTS LEGEND</TECHNICAL><PARAGRAPH>Use, duplication, or disclosure of the technical data contained in this document by the Government is subject to restrictions as set forth in subdivision (c) (1) (ii) of the Rights in Technical Data and Computer Software clause at DFARS 52.227-7013 and/or in similar or successor clauses in the FAR, or in the DOD or NASA FAR Supplement. Unpublished rights reserved under the Copyright Laws of the United States. Contractor/manufacturer is Silicon Graphics, Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94043-1389.</PARAGRAPH>
<PARAGRAPH>Silicon Graphics, the Silicon Graphics logo, IRIS, IRIX, and ONYX are registered trademarks and InfiniteReality, Origin, POWER Onyx, and Sirius Video are trademarks of Silicon Graphics, Inc. X Window System is a trademark of Massachusetts Institute of Technology.</PARAGRAPH>
</CREDITSPAGE>
</FRONTMATTER>

Binary file not shown.

View File

@@ -0,0 +1,37 @@
<!-- Produced by version 3.14 (11/22/96) of SGI Frame/SGML translator -->
<INTRODUCTION><TITLE>About This Guide</TITLE><PARAGRAPH>The Video Format Combiner is a utility for the InfiniteReality video display subsystem for the Silicon Graphics Onyx or POWER Onyx deskside or rackmount graphics workstation running IRIX 6.5 or later. The display subsystem supports programmable pixel timings to allow the system to drive displays with a wide variety of resolutions, refresh rates, and interlace/noninterlace characteristics. <INDEXTARGET ID="cbinr.intro1"><!-- POSTPROCESSDATA: cbinr.intro1|IRIX version --></PARAGRAPH>
<PARAGRAPH>Each InfiniteReality pipe includes either two or eight video output channels. The Video Format Combiner is the utility that you use to select video output formats for the channels and to group the formats of the individual channels into a combination. You also use the Combiner to define the per-channel and global parameters of the combination.</PARAGRAPH>
<SECTION1 LBL="" HELPID = ""><TITLE>Audience</TITLE><PARAGRAPH>This guide is written for the sophisticated graphics and video user who wishes to develop arrangements of video formats for InfiniteReality capabilities. </PARAGRAPH>
</SECTION1>
<SECTION1 LBL="" HELPID = ""><TITLE>Structure of This Guide</TITLE><PARAGRAPH>This guide contains the following chapters:</PARAGRAPH>
<BULLETLIST><BULLET><PARAGRAPH><XREF IDREF="38888" TYPE="TITLE">Chapter&nbsp;1, &ldquo;InfiniteReality Graphics and the Video Format Combiner Utility,&rdquo;</XREF> introduces the main features of InfiniteReality and of the Combiner graphical user interface.</PARAGRAPH>
</BULLET>
<BULLET><PARAGRAPH><XREF IDREF="40493" TYPE="TEXT"></XREF><XREF IDREF="40493" TYPE="TITLE">Chapter&nbsp;2, &ldquo;Creating and Setting Video Format Combinations,&rdquo;</XREF> explains how to use Combiner features to design video format combinations by selecting channels and specifying attributes.</PARAGRAPH>
</BULLET>
<BULLET><PARAGRAPH><XREF IDREF="65296" TYPE="TITLE">Chapter&nbsp;3, &ldquo;Using the Encoder Channel,&rdquo;</XREF> describes how to use the Combiner Encoder channel, which encodes its own or another channel's pixels to NTSC or PAL for industrial-quality video.</PARAGRAPH>
</BULLET>
<BULLET><PARAGRAPH><XREF IDREF="43212" TYPE="TITLE">Chapter&nbsp;4, &ldquo;Using the Combiner With Hardware Options,&rdquo;</XREF> explains how to configure the Sirius Video, Digital Display Option (DDO), or Graphics to Video Option (GVO) channel that interfaces with an installed Sirius Video, Digital Video Port (DVP), or GVO option board. </PARAGRAPH>
</BULLET>
<BULLET><PARAGRAPH><XREF IDREF="45016" TYPE="TITLE">Chapter&nbsp;5, &ldquo;Combination Considerations,&rdquo;</XREF> gives tips for creating viable video format combinations and explains the Emergency Backup Combination and setting up an analog alpha out channel.</PARAGRAPH>
</BULLET>
<BULLET><PARAGRAPH><XREF IDREF="72738" TYPE="TITLE">Appendix&nbsp;A, &ldquo;Tutorial,&rdquo;</XREF> has example exercises designed to demonstrate some Combiner capabilities.</PARAGRAPH>
</BULLET>
<BULLET><PARAGRAPH><XREF IDREF="85370" TYPE="TITLE">Appendix&nbsp;B, &ldquo;Error Messages,&rdquo;</XREF> presents Video Format Combiner error messages, which appear near the bottom of the Combiner main window, and suggests solutions.</PARAGRAPH>
</BULLET>
</BULLETLIST>
<PARAGRAPH>A glossary and an index complete this guide. </PARAGRAPH>
</SECTION1>
<SECTION1 LBL="" HELPID = ""><TITLE>Other Documentation</TITLE><PARAGRAPH>Besides this manual, have handy the owner's guide(s) for the workstation(s) in your configuration. If you don't have these guides handy, the information is also online in the following locations:</PARAGRAPH>
<BULLETLIST><BULLET><PARAGRAPH>IRIS InSight Library: from the Toolchest, choose Help > Online Books > SGI&nbsp;EndUser or SGI&nbsp;Admin, and select the applicable owner's or hardware guide.</PARAGRAPH>
</BULLET>
<BULLET><PARAGRAPH>Technical Publications Library: if you have access to the Internet, enter the following URL in your Web browser location window:&lbreak;http://techpubs.sgi.com/library/</PARAGRAPH>
</BULLET>
</BULLETLIST>
</SECTION1>
<SECTION1 LBL="" HELPID = ""><TITLE>Conventions</TITLE><PARAGRAPH>In command syntax descriptions and examples, square brackets ( [ ] ) surrounding an argument indicate an optional argument. Variable parameters are in <INDEXTARGET ID="cbinr.intro2"><!-- POSTPROCESSDATA: cbinr.intro2|conventions --><ITALICS>italics</ITALICS>. Replace these variables with the appropriate string or value.</PARAGRAPH>
<PARAGRAPH>In text descriptions, IRIX filenames are in <ITALICS>italics</ITALICS>. </PARAGRAPH>
<PARAGRAPH>Messages and prompts that appear on-screen are shown in <SCREENDISPLAY>fixed-width type</SCREENDISPLAY>. Entries that are to be typed exactly as shown are in <USERINPUT>boldface fixed-width type</USERINPUT>. <INDEXTARGET ID="cbinr.intro3"><!-- POSTPROCESSDATA: cbinr.intro3|conventions --></PARAGRAPH>
<PARAGRAPH>Names of buttons in the Combiner graphical user interface are shown in <ITALICS>italics</ITALICS>. Choices in menus are enclosed in quotation marks.</PARAGRAPH>
<PARAGRAPH>Keyboard combinations are indicated with the plus sign; for example, Ctrl&nbsp;+&nbsp;j means that the Ctrl and j keys are pressed simultaneously.</PARAGRAPH>
</SECTION1>
</INTRODUCTION>

BIN
eoe/books/Combiner_UG/cbinr1.doc Executable file

Binary file not shown.

View File

@@ -0,0 +1,38 @@
<!-- Produced by version 3.14 (11/22/96) of SGI Frame/SGML translator -->
<CHAPTER LBL="1"><TITLE><XREFTARGET ID="38888">InfiniteReality Graphics and the Video Format Combiner Utility</TITLE><HELPTOPIC HELPID = "Cbinr.Overview"><TITLE>Overview</TITLE>
<PARAGRAPH>The InfiniteReality video display subsystem takes rendered images from the raster subsystem digital framebuffer and processes the pixels through digital-to-analog converters (DACs) to generate an analog pixel stream suitable for display on a high-resolution RGB video monitor. The display subsystem supports programmable pixel timings so that the system can drive displays with a wide variety of resolutions, refresh rates, and interlace/noninterlace characteristics. <INDEXTARGET ID="cbinr11"><!-- POSTPROCESSDATA: cbinr11|InfiniteReality graphics --></PARAGRAPH>
<PARAGRAPH>Use the Combiner only with Onyx InfiniteReality or <ITALICS>i</ITALICS>-Station graphics systems. For RealityEngine<SUPERSCRIPT>2</SUPERSCRIPT> and VTX graphics systems, you must use the video out panel or other custom applications.</PARAGRAPH>
<PARAGRAPH>The InfiniteReality hardware includes either two or eight independent video channels in the standard configuration. The second video channel serves a dual role as a standard RGB video channel or as a composite or S-Video encoder. </PARAGRAPH>
<PARAGRAPH>For the InfiniteReality video graphics display subsystem, Silicon Graphics provides a configuration utility, the Video Format Combiner, <INDEXTARGET ID="cbinr12"><!-- POSTPROCESSDATA: cbinr12|Video Format Combiner. <ITALICS>See</ITALICS> Combiner --><INDEXTARGET ID="cbinr13"><!-- POSTPROCESSDATA: cbinr13|Combiner --><INDEXTARGET ID="cbinr14"><!-- POSTPROCESSDATA: cbinr14|<ITALICS>ircombine</ITALICS> --><REFPAGE>ircombine(1G)</REFPAGE>. The Combiner groups video output formats into a <INDEXTARGET ID="cbinr15"><!-- POSTPROCESSDATA: cbinr15|video format combination --><ITALICS>video format combination</ITALICS>&mdash;descriptions of raster sizes and timing to be used on video outputs&mdash; to validate that they operate correctly on the InfiniteReality video display subsystem hardware. The Combiner also configures the underlying graphics framebuffer and instructs the video subsystem to convert digital information stored there into a variety of video signals, or channels, ranging from high-resolution to low-resolution outputs. The output can then be displayed on additional monitors or projection devices, or stored on videotape, in any combination. Output can be genlocked to an external reference signal.</PARAGRAPH>
</HELPTOPIC>
<PARAGRAPH>This chapter discusses</PARAGRAPH>
<BULLETLIST><BULLET><PARAGRAPH><XREF IDREF="28151" TYPE="TITLE">&ldquo;Channel Input and Output&rdquo;</XREF></PARAGRAPH>
</BULLET>
<BULLET><PARAGRAPH><XREF IDREF="50597" TYPE="TITLE">&ldquo;Video Format Combinations&rdquo;</XREF></PARAGRAPH>
</BULLET>
<BULLET><PARAGRAPH><XREF IDREF="77838" TYPE="TITLE">&ldquo;Option Boards&rdquo;</XREF>&space;</PARAGRAPH>
</BULLET>
<BULLET><PARAGRAPH><XREF IDREF="92266" TYPE="TITLE">&ldquo;Programmable Querying of Video Format Combinations&rdquo;</XREF></PARAGRAPH>
</BULLET>
</BULLETLIST>
<NOTE><PREFIX>Note</PREFIX>For more information on <COMMAND>ircombine</COMMAND>, consult its man (reference) page, <REFPAGE>ircombine(1G)</REFPAGE>. </NOTE>
<SECTION1 LBL="" HELPID = "Cbinr.channel"><TITLE><XREFTARGET ID="28151">Channel Input and Output</TITLE><PARAGRAPH>All channels derive their pixels from areas on the raster (framebuffer area). You can use the Combiner to select any area of the screen, or the contents of any window on the screen, as channel input; channels can overlap. A convenience feature allows you to click a specific window on the screen for channel input. You can also copy one channel's format to another. <INDEXTARGET ID="cbinr16"><!-- POSTPROCESSDATA: cbinr16|framebuffer:and raster --></PARAGRAPH>
<PARAGRAPH>InfiniteReality's multichannel feature takes the digital, ordered pixel output from the framebuffer and allows you to specify two to eight separate rectangular areas to be sent from the rectangular framebuffer area managed by the X Window System to independent component RGB video outputs. Each video channel can have its own video timing. This capability is particularly useful for applications such as visual simulation, virtual reality, or entertainment. </PARAGRAPH>
</SECTION1>
<SECTION1 LBL="" HELPID = "Cbinr.VOFcombo"><TITLE><XREFTARGET ID="50597">Video Format Combinations</TITLE><PARAGRAPH>After you set up the channels, you can save them as a video format combination. You can download a video format combination into the hardware as the current video configuration, store it as the default configuration to be used at system power-on or graphics initialization, or save it in a video format combination file. You can create a combination from scratch or by modifying a current or default combination or a previously saved combination. The Combiner software includes sample combinations.<INDEXTARGET ID="cbinr17"><!-- POSTPROCESSDATA: cbinr17|video format combination --></PARAGRAPH>
<PARAGRAPH>Video output combinations include &ldquo;combinations&rdquo; of a single video output format. </PARAGRAPH>
</SECTION1>
<SECTION1 LBL="" HELPID = "Cbinr.SiriusV"><TITLE><XREFTARGET ID="77838">Option Boards</TITLE><PARAGRAPH>The Onyx2 accommodates video option boards: Sirius Video, Digital Video Port (DVP), and Graphics to Video Option (GVO). These options appear as dedicated channels in the Video Format Combiner interface. </PARAGRAPH>
<SECTION2 LBL="" HELPID = ""><TITLE>Sirius Video</TITLE><PARAGRAPH>The Sirius Video option is available for applications that require live video input. Data from the Sirius Video board's two inputs can be blended using incoming alpha-key blending, internal chroma-key generation, or a key generated in real time from InfiniteReality graphics. <INDEXTARGET ID="cbinr18"><!-- POSTPROCESSDATA: cbinr18|Sirius Video --></PARAGRAPH>
<PARAGRAPH>If the Sirius Video option is installed, you can use its dedicated channel for its output. You can configure this Sirius Video channel to use a high-resolution channel as input, set it up to pass pixels through or filter them, and set other options as well. </PARAGRAPH>
<PARAGRAPH>The <DOCTITLE>Sirius Video Programming and Configuration Guide</DOCTITLE> (007-2238-003 or later) describes this option. </PARAGRAPH>
</SECTION2>
<SECTION2 LBL="" HELPID = ""><TITLE>Digital Video Port (DVP) <INDEXTARGET ID="cbinr19"><!-- POSTPROCESSDATA: cbinr19|DVP --></TITLE><PARAGRAPH>The Digital Video Port (DVP) option board provides digital video data from the InfiniteReality framebuffer in raster-scan order, left to right, top to bottom, one pixel at a time, at the pixel clock rate. Pixel data is 36 bits wide (12 bits per RGB component). It can also access 16-bit luminance information. <INDEXTARGET ID="cbinr110"><!-- POSTPROCESSDATA: cbinr110|Digital Video Port. <ITALICS>See</ITALICS> DVP. --></PARAGRAPH>
<PARAGRAPH>If the DVP option is installed, you can use its dedicated channel to set configuration, timing, and so on.</PARAGRAPH>
</SECTION2>
<SECTION2 LBL="" HELPID = ""><TITLE>Graphics-to-Video Option (GVO) <INDEXTARGET ID="cbinr111"><!-- POSTPROCESSDATA: cbinr111|Graphics-to-Video Option. <ITALICS>See</ITALICS> GVO. --><INDEXTARGET ID="cbinr112"><!-- POSTPROCESSDATA: cbinr112|GVO --></TITLE><PARAGRAPH>The Graphics to Video Option (GVO) allows you to output CCIR 601 serial digital video from the graphics frame buffer. GVO by itself is perfect for output of graphics to digital video in real time. This board is a daughtercard installed on a Display Generator (DG) board that has two channels only (DG5-2); the two DG5 channels remain available.</PARAGRAPH>
</SECTION2>
</SECTION1>
<SECTION1 LBL="" HELPID = "Cbinr.VOFcombo.get"><TITLE><XREFTARGET ID="92266">Programmable Querying of Video Format Combinations<INDEXTARGET ID="cbinr113"><!-- POSTPROCESSDATA: cbinr113|video format combination:querying --></TITLE><PARAGRAPH>You can determine the contents of the currently running combination by using the <FILENAME>XSGIvc<INDEXTARGET ID="cbinr114"><!-- POSTPROCESSDATA: cbinr114|XSGIvc X-server extension library --></FILENAME> X-server extension library. This library permits querying of the individual formats and their origins on the framebuffer.</PARAGRAPH>
</SECTION1>
</CHAPTER>

Binary file not shown.

View File

@@ -0,0 +1,407 @@
<!-- Produced by version 3.14 (11/22/96) of SGI Frame/SGML translator -->
<CHAPTER LBL="2"><TITLE><XREFTARGET ID="40493">Creating and Setting Video Format Combinations<XREFTARGET ID="18823">&space;</TITLE><PARAGRAPH>This chapter explains how to use the Video Format Combiner GUI to create and set video format combinations, in these sections:<INDEXTARGET ID="cbinr21"><!-- POSTPROCESSDATA: cbinr21|video format combination --></PARAGRAPH>
<BULLETLIST><BULLET><PARAGRAPH><XREF IDREF="72505" TYPE="TITLE">&ldquo;Loading the Video Format Combiner GUI&rdquo;</XREF></PARAGRAPH>
</BULLET>
<BULLET><PARAGRAPH><XREF IDREF="66871" TYPE="TITLE">&ldquo;Downloading a Video Format Combination&rdquo;</XREF></PARAGRAPH>
</BULLET>
<BULLET><PARAGRAPH><XREF IDREF="48135" TYPE="TITLE">&ldquo;Specifying Channels&rdquo;</XREF></PARAGRAPH>
</BULLET>
<BULLET><PARAGRAPH><XREF IDREF="88224" TYPE="TITLE">&ldquo;Modifying Channel Attributes&rdquo;</XREF></PARAGRAPH>
</BULLET>
<BULLET><PARAGRAPH><XREF IDREF="70537" TYPE="TITLE">&ldquo;Changing Global Attributes for Combinations&rdquo;</XREF></PARAGRAPH>
</BULLET>
<BULLET><PARAGRAPH><XREF IDREF="77902" TYPE="TITLE">&ldquo;Selecting Channels for a Combination&rdquo;</XREF></PARAGRAPH>
</BULLET>
<BULLET><PARAGRAPH><XREF IDREF="98629" TYPE="TITLE">&ldquo;Using the Target Hardware Facility&rdquo;</XREF></PARAGRAPH>
</BULLET>
<BULLET><PARAGRAPH><XREF IDREF="65153" TYPE="TITLE">&ldquo;Saving a Video Format Combination&rdquo;</XREF></PARAGRAPH>
</BULLET>
</BULLETLIST>
<SECTION1 LBL="" HELPID = ""><TITLE><XREFTARGET ID="72505">Loading the Video Format Combiner GUI<INDEXTARGET ID="cbinr22"><!-- POSTPROCESSDATA: cbinr22|Combiner:GUI:loading --></TITLE><PARAGRAPH>To display the Combiner's graphical user interface, type </PARAGRAPH>
<EXAMPLE>
<USERINPUT>/usr/gfx/ircombine -gui<INDEXTARGET ID="cbinr23"><!-- POSTPROCESSDATA: cbinr23|<ITALICS>ircombine</ITALICS> --></USERINPUT>&space;
</EXAMPLE>
<PARAGRAPH>To specify a different display from the current workstation, such as a different pipe of a rackmount system, a remote workstation, or a specific pipe of a remote rackmount system as the target on which to display the combination, use </PARAGRAPH>
<EXAMPLE>
<USERINPUT>/usr/gfx/ircombine -gui -target</USERINPUT>&space;<VARIABLE>displayname</VARIABLE>&space;
<INDEXTARGET ID="cbinr24"><!-- POSTPROCESSDATA: cbinr24|Combiner:GUI:setting display --></EXAMPLE>
<PARAGRAPH><XREF IDREF="32799" TYPE="GRAPHIC">Figure&nbsp;2-1</XREF> shows the main window.</PARAGRAPH>
<!-- RASTERCONVERT: cbinr2.cgm -->
<PARAGRAPH><FIGURE>&space;<GRAPHIC FILE="cbinr2-1.gif" POSITION="INLINE" SCALE="FALSE"><CAPTION LBL="2-1"><PREFIX>Figure 2-1 </PREFIX>Video Format Combiner Main Window<XREFTARGET ID="32799">&space;<INDEXTARGET ID="cbinr25"><!-- POSTPROCESSDATA: cbinr25|Combiner:GUI:main window --></CAPTION>
</FIGURE>
</PARAGRAPH>
<SECTION2 LBL="" HELPID = "Cbinr.managed.area"><TITLE>Managed Area</TITLE><PARAGRAPH>The <INDEXTARGET ID="cbinr26"><!-- POSTPROCESSDATA: cbinr26|managed area --><ITALICS>managed area</ITALICS> is the display surface taking up most of the Combiner main window. It represents the entire raster (framebuffer area); all channels derive their pixels from areas on the raster. The managed area can be redefined.<INDEXTARGET ID="cbinr27"><!-- POSTPROCESSDATA: cbinr27|framebuffer:and managed area --></PARAGRAPH>
</SECTION2>
<SECTION2 LBL="" HELPID = "Cbinr.Bandw.Used"><TITLE>Bandwidth Used Scale</TITLE><PARAGRAPH>The Bandwidth Used scale indicates the percentage of the communication bandwidth between the framebuffer and the video subsystem that the combination is using. In general, as long as the bandwidth used is less than 100 percent, things are fine. However, the bandwidth used is related to the framebuffer memory used to refresh the video channels, which the Reduced Fill scale shows. <INDEXTARGET ID="cbinr28"><!-- POSTPROCESSDATA: cbinr28|Bandwidth Used scale --><INDEXTARGET ID="cbinr29"><!-- POSTPROCESSDATA: cbinr29|bandwidth:<ITALICS>See also</ITALICS> allocation --></PARAGRAPH>
<PARAGRAPH>The Bandwidth Used scale is affected by</PARAGRAPH>
<BULLETLIST><BULLET><PARAGRAPH>the size of each channel (its footprint on the framebuffer, not its output resolution, although the two are related)</PARAGRAPH>
</BULLET>
<BULLET><PARAGRAPH>the Pixel Output Format selected in the channel attribute window; to save bandwidth, avoid choosing 10-bit components and alpha<INDEXTARGET ID="cbinr210"><!-- POSTPROCESSDATA: cbinr210|bandwidth --></PARAGRAPH>
</BULLET>
<BULLET><PARAGRAPH>the number of video channels</PARAGRAPH>
</BULLET>
<BULLET><PARAGRAPH>the Encoder channel being set up in independent mode; dependent mode does not use any extra bandwidth or fill rate</PARAGRAPH>
</BULLET>
</BULLETLIST>
<PARAGRAPH>Adding RM boards does not increase the video bandwidth available in the system.<INDEXTARGET ID="cbinr211"><!-- POSTPROCESSDATA: cbinr211|RM board --></PARAGRAPH>
</SECTION2>
<SECTION2 LBL="" HELPID = "Cbinr.Reduced.Fill"><TITLE>Reduced Fill Scale</TITLE><PARAGRAPH>The Reduced Fill scale indicates the percentage of framebuffer memory cycles used for refreshing the video channels of the combination. In general, reduce the pixel-fill specifications of the framebuffer by this percentage. If the application still meets its spec for depth complexity, number of polygons, and so on when the fill rate of the framebuffer is reduced by the percentage indicated by the Reduced Fill scale, things are fine.<INDEXTARGET ID="cbinr212"><!-- POSTPROCESSDATA: cbinr212|Reduced Fill scale --></PARAGRAPH>
<PARAGRAPH>Adding RM boards amortizes the video-refresh overhead over more boards, so it helps to add RM boards if the video refresh overhead is too high for a particular hardware configuration and application. The Reduced Fill scale is affected by the same factors as the Bandwidth Used scale. </PARAGRAPH>
</SECTION2>
<SECTION2 LBL="" HELPID = "Cbinr.Error.Indic"><TITLE>Error Indicator<INDEXTARGET ID="cbinr213"><!-- POSTPROCESSDATA: cbinr213|Error indicator --></TITLE><PARAGRAPH>If system constraints are violated, the Error indicator displays a message; see <XREF IDREF="85370" TYPE="TITLE">Appendix&nbsp;B, &ldquo;Error Messages.&rdquo;</XREF>error messages in the InfiniteReality Video Format Combiner User's Guide. The Error indicator shows <SCREENDISPLAY>&lt;none></SCREENDISPLAY> for a valid video format combination. </PARAGRAPH>
</SECTION2>
</SECTION1>
<SECTION1 LBL="" HELPID = "Cbinr.VOFcombo.dnload"><TITLE><XREFTARGET ID="66871">Downloading a Video Format Combination <INDEXTARGET ID="cbinr214"><!-- POSTPROCESSDATA: cbinr214|video format combination:downloading --></TITLE><PARAGRAPH>The Combiner software includes sample video format combinations in <INDEXTARGET ID="cbinr215"><!-- POSTPROCESSDATA: cbinr215|video format combination:samples --><FILENAME>/usr/gfx/ucode/KONA/dg4/cmb</FILENAME>. To load one of these or any other combination:</PARAGRAPH>
<BULLETLIST><BULLET><PARAGRAPH>from the Combiner main window, do one of the following:</PARAGRAPH>
<BULLETLISTIND><BULLETIND><PARAGRAPH>press <INDEXTARGET ID="cbinr216"><!-- POSTPROCESSDATA: cbinr216|<ITALICS>Download Combination</ITALICS> --><BUTTON>Download Combination</BUTTON></PARAGRAPH>
</BULLETIND>
<BULLETIND><PARAGRAPH>press <USERINPUT>Ctrl + d</USERINPUT>&space;</PARAGRAPH>
</BULLETIND>
</BULLETLISTIND>
</BULLET>
<BULLET><PARAGRAPH>at the IRIX command prompt, do one of the following:</PARAGRAPH>
<BULLETLISTIND><BULLETIND><PARAGRAPH>enter <INDEXTARGET ID="cbinr217"><!-- POSTPROCESSDATA: cbinr217|<ITALICS>setmon</ITALICS> --><USERINPUT>setmon -n</USERINPUT>&space;<VARIABLE>filename</VARIABLE>&space;</PARAGRAPH>
</BULLETIND>
<BULLETIND><PARAGRAPH>enter <INDEXTARGET ID="cbinr218"><!-- POSTPROCESSDATA: cbinr218|<ITALICS>ircombine</ITALICS> --><USERINPUT>ircombine -source</USERINPUT>&space;<USERINPUT>file</USERINPUT>&space;<VARIABLE>filename</VARIABLE>&space;<USERINPUT>-dest active</USERINPUT>&space;</PARAGRAPH>
</BULLETIND>
<BULLETIND><PARAGRAPH>from a program, call <INDEXTARGET ID="cbinr219"><!-- POSTPROCESSDATA: cbinr219|<BOLD>XSGIvcLoadVideoFormatCombination()</BOLD> --><FUNCTION>XSGIvcLoadVideoFormatCombination()</FUNCTION>&space;</PARAGRAPH>
</BULLETIND>
</BULLETLISTIND>
</BULLET>
</BULLETLIST>
<PARAGRAPH>As you build your own combination, you can test it by saving it, downloading it, adjusting, saving, and downloading it again, until you are satisfied.</PARAGRAPH>
</SECTION1>
<SECTION1 LBL="" HELPID = "Cbinr.channel:spec"><TITLE><XREFTARGET ID="48135">Specifying Channels <INDEXTARGET ID="cbinr220"><!-- POSTPROCESSDATA: cbinr220|video format combination:creating --></TITLE><PARAGRAPH>When you initialize InfiniteReality graphics, or power on the system with InfiniteReality graphics installed, you can load a previously saved combination, as described above, or use the Combiner to define the video output for the Onyx InfiniteReality workstation, regardless of the number of channels you use.</PARAGRAPH>
<PARAGRAPH>To initialize graphics, enter the following; the parentheses are necessary. <INDEXTARGET ID="cbinr221"><!-- POSTPROCESSDATA: cbinr221|initializing graphicsgraphics, initializing --></PARAGRAPH>
<EXAMPLE>
<USERINPUT>(/usr/gfx/stopgfx ; /usr/gfx/startgfx) &amp;</USERINPUT>&space;
</EXAMPLE>
<PARAGRAPH>This section explains</PARAGRAPH>
<BULLETLIST><BULLET><PARAGRAPH><XREF IDREF="14494" TYPE="TITLE">&ldquo;Selecting a Video Format for a Channel&rdquo;</XREF></PARAGRAPH>
</BULLET>
<BULLET><PARAGRAPH><XREF IDREF="69290" TYPE="TITLE">&ldquo;Resizing and Repositioning a Channel&rdquo;</XREF></PARAGRAPH>
</BULLET>
<BULLET><PARAGRAPH><XREF IDREF="50845" TYPE="TITLE">&ldquo;Copying a Channel&rdquo;</XREF></PARAGRAPH>
</BULLET>
<BULLET><PARAGRAPH><XREF IDREF="49096" TYPE="TITLE">&ldquo;Aligning Channels&rdquo;</XREF></PARAGRAPH>
</BULLET>
<BULLET><PARAGRAPH><XREF IDREF="24141" TYPE="TITLE">&ldquo;Associating a Video Channel With an X Window&rdquo;</XREF></PARAGRAPH>
</BULLET>
</BULLETLIST>
<SECTION2 LBL="" HELPID = "Cbinr.channel.VOF"><TITLE><XREFTARGET ID="14494">Selecting a Video Format for a Channel<INDEXTARGET ID="cbinr222"><!-- POSTPROCESSDATA: cbinr222|video format:selecting for channel --></TITLE><PARAGRAPH>In the Combiner main window, click the button for the channel you want to define; for example, <BUTTON>Ch0</BUTTON> for the first channel. This selection corresponds to <HARDWARELABEL>Chan0</HARDWARELABEL> on the InfiniteReality I/O panel.</PARAGRAPH>
<PARAGRAPH>When you click a channel button, the Select Format window appears, as shown in <XREF IDREF="87161" TYPE="GRAPHIC">Figure&nbsp;2-2</XREF>; select a video format for the channel. This window conveniently displays basic information about the format you select. (For more information on the video formats stored in the files, consult <INDEXTARGET ID="cbinr223"><!-- POSTPROCESSDATA: cbinr223|video format:information --><INDEXTARGET ID="cbinr224"><!-- POSTPROCESSDATA: cbinr224|<ITALICS>/usr/gfx/ucode/KONA/dg4/vfo/README</ITALICS> --><FILENAME>/usr/gfx/ucode/KONA/dg4/vfo/README</FILENAME>.) </PARAGRAPH>
<PARAGRAPH><FIGURE>&space;<GRAPHIC FILE="newchan.gif" POSITION="INLINE" SCALE="FALSE"><CAPTION LBL="2-2"><PREFIX>Figure 2-2 </PREFIX><XREFTARGET ID="87161">Select Format Window </CAPTION>
</FIGURE>
</PARAGRAPH>
<NOTE><PREFIX>Note</PREFIX>If your system includes channels 2 through 7, assign the formats with the highest bandwidth to Channels 0 and 1, because they have greater capability. For more information, see <INDEXTARGET ID="cbinr225"><!-- POSTPROCESSDATA: cbinr225|bandwidth:and channel assignment --><XREF IDREF="65212" TYPE="TITLE">&ldquo;DAC Output Bandwidth&rdquo;</XREF>.</NOTE>
<PARAGRAPH>You can easily resize the rectangle with the mouse or by editing channel attributes, as explained in <XREF IDREF="69290" TYPE="TITLE">&ldquo;Resizing and Repositioning a Channel&rdquo;</XREF>. The dimensions of the format (for example, 1920 x 1200 for the format file <FILENAME>1920x1200_60.vfo</FILENAME>) are the output dimensions, but need not be the input dimensions of the channel's rectangle in the managed area. You can also use the Video Format Compiler to create your own formats.</PARAGRAPH>
<PARAGRAPH><XREF IDREF="61389" TYPE="GRAPHIC">Figure&nbsp;2-3</XREF> shows the Combiner main window with Channel 0 defined. The channel's rectangle appears in the managed area.</PARAGRAPH>
<PARAGRAPH>Notice that the Bandwidth Used scale indicates that some of the video subsystem is now in use.<INDEXTARGET ID="cbinr226"><!-- POSTPROCESSDATA: cbinr226|Bandwidth Used scale --></PARAGRAPH>
<!-- RASTERCONVERT: cbinr2.cgm6 -->
<PARAGRAPH><FIGURE>&space;<GRAPHIC FILE="cbinr2-6.gif" POSITION="INLINE" SCALE="FALSE"><CAPTION LBL="2-3"><PREFIX>Figure 2-3 </PREFIX><XREFTARGET ID="61389">Video Format Specified for Channel 0 <INDEXTARGET ID="cbinr227"><!-- POSTPROCESSDATA: cbinr227|Combiner:GUI:main window --></CAPTION>
</FIGURE>
</PARAGRAPH>
<PARAGRAPH>The channel rectangle shows the area on the raster from which Channel 0 derives its pixels.</PARAGRAPH>
</SECTION2>
<SECTION2 LBL="" HELPID = "Cbinr.channel.resize.repositn"><TITLE>Resizing and Repositioning a <XREFTARGET ID="69290">Channel</TITLE><PARAGRAPH>To change the size and position of the channel in the managed area, use the mouse to move the channel rectangle. Dragging the rectangle changes the channel's origin; dragging one of the handles at a corner resizes the channel. You can also use h, j, k, or l as arrow keys to move the sides of the rectangle, as summarized in <INDEXTARGET ID="cbinr228"><!-- POSTPROCESSDATA: cbinr228|channel:rectangle:moving and resizing --><XREF IDREF="89248" TYPE="TABLE">Table&nbsp;2-1</XREF>.</PARAGRAPH>
<TABLE COLUMNS="2"><CAPTION LBL="2-1"><PREFIX>Table 2-1 </PREFIX><XREFTARGET ID="89248">Resizing and Repositioning</CAPTION>
<TABLEHEADING><CELL LEFT="0" WIDTH="72"><PARAGRAPH>Key</PARAGRAPH>
</CELL>
<CELL LEFT="80" WIDTH="162"><PARAGRAPH>Action </PARAGRAPH>
</CELL>
</TABLEHEADING>
<TABLEBODY><ROW><CELL LEFT="0" WIDTH="72"><PARAGRAPH>h</PARAGRAPH>
</CELL>
<CELL LEFT="80" WIDTH="162"><PARAGRAPH>Moves channel rectangle to the left </PARAGRAPH>
</CELL>
</ROW>
<ROW><CELL LEFT="0" WIDTH="72"><PARAGRAPH>l</PARAGRAPH>
</CELL>
<CELL LEFT="80" WIDTH="162"><PARAGRAPH>Moves channel rectangle to the right </PARAGRAPH>
</CELL>
</ROW>
<ROW><CELL LEFT="0" WIDTH="72"><PARAGRAPH>j</PARAGRAPH>
</CELL>
<CELL LEFT="80" WIDTH="162"><PARAGRAPH>Moves channel rectangle down </PARAGRAPH>
</CELL>
</ROW>
<ROW><CELL LEFT="0" WIDTH="72"><PARAGRAPH>k</PARAGRAPH>
</CELL>
<CELL LEFT="80" WIDTH="162"><PARAGRAPH>Moves channel rectangle up </PARAGRAPH>
</CELL>
</ROW>
<ROW><CELL LEFT="0" WIDTH="72"><PARAGRAPH>Ctrl + h</PARAGRAPH>
</CELL>
<CELL LEFT="80" WIDTH="162"><PARAGRAPH>Decreases channel rectangle's width </PARAGRAPH>
</CELL>
</ROW>
<ROW><CELL LEFT="0" WIDTH="72"><PARAGRAPH>Ctrl + l</PARAGRAPH>
</CELL>
<CELL LEFT="80" WIDTH="162"><PARAGRAPH>Increases channel rectangle's width </PARAGRAPH>
</CELL>
</ROW>
<ROW><CELL LEFT="0" WIDTH="72"><PARAGRAPH>Ctrl + j</PARAGRAPH>
</CELL>
<CELL LEFT="80" WIDTH="162"><PARAGRAPH>Increases channel rectangle's height </PARAGRAPH>
</CELL>
</ROW>
<ROW><CELL LEFT="0" WIDTH="72"><PARAGRAPH>Ctrl + k</PARAGRAPH>
</CELL>
<CELL LEFT="80" WIDTH="162"><PARAGRAPH>Decreases channel rectangle's height </PARAGRAPH>
</CELL>
</ROW>
</TABLEBODY>
</TABLE>
<PARAGRAPH>For pixel-accurate positioning and sizing, edit the channel's origin and size, as explained in <XREF IDREF="49505" TYPE="TITLE">&ldquo;Origin and Size&rdquo;</XREF>.</PARAGRAPH>
</SECTION2>
<SECTION2 LBL="" HELPID = ""><TITLE><XREFTARGET ID="50845">Copying a Channel<INDEXTARGET ID="cbinr229"><!-- POSTPROCESSDATA: cbinr229|channel:copying --></TITLE><PARAGRAPH>To copy an existing channel format&mdash;size, origin, and other characteristics&mdash;to a new channel, follow these steps:</PARAGRAPH>
<ORDEREDLIST><LIST><PARAGRAPH>Click the button of the new channel (for example, <BUTTON>Ch3</BUTTON>); in the Files window, select any video format.</PARAGRAPH>
</LIST>
<LIST><PARAGRAPH><XREFTARGET ID="69076">Select the rectangle of the channel you want to copy (for example, <BUTTON>Ch0</BUTTON>). Select &ldquo;Copy&rdquo; in the Edit menu, or press <USERINPUT>Ctrl + c</USERINPUT>. </PARAGRAPH>
</LIST>
<LIST><PARAGRAPH><XREFTARGET ID="99522">Select the rectangle of the new channel. Select &ldquo;Paste&rdquo; in the Edit menu, or press <USERINPUT>Ctrl + v</USERINPUT>. </PARAGRAPH>
</LIST>
</ORDEREDLIST>
<PARAGRAPH>To create a new channel that contains all the attributes of an existing channel, just follow steps 2 and 3 above. The next unassigned channel in sequence is assigned; for example, if you are copying Channel 0 and the remaining channels on the system are undefined, the Combiner assigns its format to Channel 1. The new channel appears at the same origin as the copied channel; move it if desired. </PARAGRAPH>
</SECTION2>
<SECTION2 LBL="" HELPID = ""><TITLE><XREFTARGET ID="49096">Aligning Channels<INDEXTARGET ID="cbinr230"><!-- POSTPROCESSDATA: cbinr230|channel:aligning --></TITLE><PARAGRAPH>To align channels exactly, edit their origin and size, as explained in <XREF IDREF="49505" TYPE="TITLE">&ldquo;Origin and Size&rdquo;</XREF>. To use a convenience feature of Combiner to expedite this procedure, follow these steps:</PARAGRAPH>
<ORDEREDLIST><LIST><PARAGRAPH>In the managed area, move the channel rectangles to approximately where you want them.</PARAGRAPH>
</LIST>
<LIST><PARAGRAPH>Select a channel rectangle; select &ldquo;Snap to neighbor&rdquo; in the Channel menu. The channel corners align with those of the closest neighboring channel.<INDEXTARGET ID="cbinr231"><!-- POSTPROCESSDATA: cbinr231|<ITALICS>Snap to neighbor</ITALICS> --></PARAGRAPH>
</LIST>
<LIST><PARAGRAPH>If necessary, refine the channel's origin and size settings, as explained in <XREF IDREF="49505" TYPE="TITLE">&ldquo;Origin and Size&rdquo;</XREF>.</PARAGRAPH>
</LIST>
</ORDEREDLIST>
</SECTION2>
<SECTION2 LBL="" HELPID = "Cbinr.channel.XWindow.assoc"><TITLE><XREFTARGET ID="24141">Associating a Video Channel With an X Window<INDEXTARGET ID="cbinr232"><!-- POSTPROCESSDATA: cbinr232|channel:associating with X windowX window, associating with channel --></TITLE><PARAGRAPH>The Combiner includes a convenience feature for associating a video channel with an open X window. You can position and size the video channel's rectangle in the managed area to correspond to the X window's position. To use an X-server window as input for the origin and size of a channel, follow these steps:</PARAGRAPH>
<ORDEREDLIST><LIST><PARAGRAPH>Make sure the window you want to use as input for the channel is where you want it on the screen. </PARAGRAPH>
</LIST>
<LIST><PARAGRAPH>In the Combiner main window, select the rectangle of the channel with which you want to associate the X window.</PARAGRAPH>
</LIST>
<LIST><PARAGRAPH>Select &ldquo;Grab window...&rdquo; in the Channel menu. A crosshatch cursor appears.<INDEXTARGET ID="cbinr233"><!-- POSTPROCESSDATA: cbinr233|<ITALICS>Grab window</ITALICS> --></PARAGRAPH>
</LIST>
<LIST><PARAGRAPH>Move the crosshatch cursor to the window you want to use as input for the channel and click the left or right mouse button. </PARAGRAPH>
</LIST>
</ORDEREDLIST>
<PARAGRAPH>The Combiner uses that X window's origin and size as the position of the channel.</PARAGRAPH>
</SECTION2>
</SECTION1>
<SECTION1 LBL="" HELPID = "Cbinr.channel.chg.attrib"><TITLE><XREFTARGET ID="88224">Modifying Channel Attributes </TITLE><PARAGRAPH>Select the channel for which you want to view or modify attributes, and select &ldquo;Edit attributes...&rdquo; in the Channel menu. (You can also double-click on the channel's button or rectangle.) The channel window appears; <INDEXTARGET ID="cbinr234"><!-- POSTPROCESSDATA: cbinr234|channel:attributes, modifying --><XREF IDREF="37211" TYPE="GRAPHIC">Figure&nbsp;2-4</XREF> shows an example.</PARAGRAPH>
<NOTE><PREFIX>Note</PREFIX>You can also access the Channel menu by pressing the right mouse button.</NOTE>
<PARAGRAPH><FIGURE><GRAPHIC FILE="chattribs.gif" POSITION="INLINE" SCALE="FALSE"><CAPTION LBL="2-4"><PREFIX>Figure 2-4 </PREFIX><XREFTARGET ID="37211">Channel Attributes Window<INDEXTARGET ID="cbinr235"><!-- POSTPROCESSDATA: cbinr235|Channel Attributes window --><INDEXTARGET ID="cbinr236"><!-- POSTPROCESSDATA: cbinr236|channel:menuchannel:window --></CAPTION>
</FIGURE>
</PARAGRAPH>
<PARAGRAPH>A box at the bottom of this window displays format information stored in the video output file selected for this channel. If you resize the rectangle, click <INDEXTARGET ID="cbinr237"><!-- POSTPROCESSDATA: cbinr237|video format:in Channel Attributes window --><INDEXTARGET ID="cbinr238"><!-- POSTPROCESSDATA: cbinr238|channel:rectangle:restoring origin and size --><INDEXTARGET ID="cbinr239"><!-- POSTPROCESSDATA: cbinr239|<ITALICS>Restore Output Size</ITALICS> --><BUTTON>Restore Output Size </BUTTON>to restore it to the size specified in the output file. The output pixel format is unrelated to the underlying framebuffer organization because the InfiniteReality hardware automatically converts to the output pixel format you request. <INDEXTARGET ID="cbinr240"><!-- POSTPROCESSDATA: cbinr240|framebuffer:and output pixel format --></PARAGRAPH>
<NOTE><PREFIX>Note</PREFIX>For a combination to be valid, the swap rates of all channels, including any option board present, must be the same. The swap rate is shown near the bottom of the Channel Attributes window. As you add channels to the managed area to create a combination, keep track of the swap rates. For more information on the swap rate, see <INDEXTARGET ID="cbinr241"><!-- POSTPROCESSDATA: cbinr241|swap rate --><XREF IDREF="61093" TYPE="TITLE">&ldquo;Swap Rate&rdquo;</XREF>.</NOTE>
<PARAGRAPH>This section explains how to use fields in this window.</PARAGRAPH>
<SECTION2 LBL="" HELPID = "Cbinr.channel.chg.attrib.field.layout"><TITLE>Field Layout</TITLE><PARAGRAPH>The field layouts are designed to allow you to reduce fill, rendering only the visible lines of each field of an interlaced format. The Combiner attempts to set the correct field layout for each video format automatically.<INDEXTARGET ID="cbinr242"><!-- POSTPROCESSDATA: cbinr242|field layout --></PARAGRAPH>
<PARAGRAPH>Use the Field Layout popup menu to select the order in which data is fetched (scanned) from the framebuffer:</PARAGRAPH>
<BULLETLIST><BULLET><PARAGRAPH>Progressive: specifies sequential data fetching: each field draws from the entire source region of the channel. This setting is the default for formats with one field. </PARAGRAPH>
</BULLET>
<BULLET><PARAGRAPH>Interleaved: specifies a two-field format: the lines of the fields are vertically interleaved in the framebuffer. </PARAGRAPH>
</BULLET>
<BULLET><PARAGRAPH>Stacked: specifies a two-field format. The lines of each field are contiguous; the lines of the first field occupy the top half of the framebuffer, and the lines of the second field occupy the bottom half, as diagrammed in <XREF IDREF="50504" TYPE="GRAPHIC">Figure&nbsp;2-5</XREF>. Use this choice to render the even and odd fields separately for a pixel-fill advantage.</PARAGRAPH>
<PARAGRAPH><FIGURE><GRAPHIC FILE="stacked.field.layout.gif" POSITION="INLINE" SCALE="FALSE"><CAPTION LBL="2-5"><PREFIX>Figure 2-5 </PREFIX><XREFTARGET ID="50504">Stacked Field Layout</CAPTION>
</FIGURE>
</PARAGRAPH>
</BULLET>
</BULLETLIST>
</SECTION2>
<SECTION2 LBL="" HELPID = "Cbinr.channel.chg.attrib.format"><TITLE><XREFTARGET ID="94282">Format</TITLE><PARAGRAPH>The text field displays the name of the file containing the video format on this channel. To change the currently selected format for the channel, type a different <INDEXTARGET ID="cbinr243"><!-- POSTPROCESSDATA: cbinr243|video format:in Channel Attributes window --><FILENAME>.vfo</FILENAME> filename in the text field, or click <BUTTON>Browse</BUTTON> and select a different one in the popup menu.</PARAGRAPH>
<PARAGRAPH>To change the video format for a channel, follow these steps:<INDEXTARGET ID="cbinr244"><!-- POSTPROCESSDATA: cbinr244|video format:changing for channel --></PARAGRAPH>
<ORDEREDLIST><LIST><PARAGRAPH>Select the channel rectangle.</PARAGRAPH>
</LIST>
<LIST><PARAGRAPH>Press the right mouse button; in the menu that appears, select &ldquo;New channel.&rdquo; The Select Format window appears.</PARAGRAPH>
</LIST>
<LIST><PARAGRAPH>In the Select Format scrolling list, choose another video output format.</PARAGRAPH>
</LIST>
</ORDEREDLIST>
</SECTION2>
<SECTION2 LBL="" HELPID = "Cbinr.channel.chg.attrib.origin.size"><TITLE><XREFTARGET ID="49505">Origin and Size</TITLE><PARAGRAPH>The Origin and Size fields display values for the current video format in the window; these settings define the mapping, or footprint, of the channel in the framebuffer managed area. You can change these values here as well as by manipulating the rectangle with the mouse. <INDEXTARGET ID="cbinr245"><!-- POSTPROCESSDATA: cbinr245|video format:origin and size in Channel Attributes window --><INDEXTARGET ID="cbinr246"><!-- POSTPROCESSDATA: cbinr246|channel:rectangle:moving and resizing --></PARAGRAPH>
</SECTION2>
<SECTION2 LBL="" HELPID = "Cbinr.channel.chg.attrib.pixelfmt"><TITLE><XREFTARGET ID="13200">Pixel Format<INDEXTARGET ID="cbinr247"><!-- POSTPROCESSDATA: cbinr247|pixel format --></TITLE><PARAGRAPH>Use the choices in the Pixel Format popup menu to select the output pixel format for this channel:</PARAGRAPH>
<NOTE><PREFIX>Note</PREFIX>For Sirius Video, make sure that the Alpha Channel check box is unchecked. </NOTE>
<BULLETLIST><BULLET><PARAGRAPH>RGB10: 10-bit RGB with no alpha (this setting is the default); use this setting to save bandwidth when alpha is not required<INDEXTARGET ID="cbinr248"><!-- POSTPROCESSDATA: cbinr248|RGB10 --></PARAGRAPH>
</BULLET>
<BULLET><PARAGRAPH>RGBA10: 10-bit RGB with alpha<INDEXTARGET ID="cbinr249"><!-- POSTPROCESSDATA: cbinr249|RGBA10 --><INDEXTARGET ID="cbinr250"><!-- POSTPROCESSDATA: cbinr250|alpha --></PARAGRAPH>
<PARAGRAPH>Only the Sirius Video option is capable of outputting this format.</PARAGRAPH>
<PARAGRAPH>If this format is selected for a channel other than Sirius Video, the channel outputs 10-bit RGB. However, if alpha is enabled (see <XREF IDREF="85525" TYPE="TITLE">&ldquo;Alpha On Blue&rdquo;</XREF>), 10-bit alpha is output as blue. This setting is useful for outputting alpha on a dedicated channel.</PARAGRAPH>
</BULLET>
<BULLET><PARAGRAPH>RGB12: 12-bit RGB with no alpha<INDEXTARGET ID="cbinr251"><!-- POSTPROCESSDATA: cbinr251|RGB12 --></PARAGRAPH>
</BULLET>
<BULLET><PARAGRAPH>Z: 24-bit Z component </PARAGRAPH>
<PARAGRAPH>Each pixel's z-buffer values are sent instead of its RGB values. This format is useful for &ldquo;virtual set&rdquo; applications. A pair of video channels is mapped to the same region of the framebuffer. One channel is set up to get RGB, and the second channel is set up to get Z. The Z component is used as a mask for putting live actors &ldquo;into&rdquo; the virtual set.<INDEXTARGET ID="cbinr252"><!-- POSTPROCESSDATA: cbinr252|Z component --></PARAGRAPH>
</BULLET>
<BULLET><PARAGRAPH>FS: color field sequential for special monitors that expect color fields in a particular sequence <INDEXTARGET ID="cbinr253"><!-- POSTPROCESSDATA: cbinr253|color field sequential setting --></PARAGRAPH>
</BULLET>
</BULLETLIST>
</SECTION2>
<SECTION2 LBL="" HELPID = "Cbinr.channel.chg.attrib.dither"><TITLE>Dither</TITLE><PARAGRAPH>Check this box to dither the output of this channel by default. <INDEXTARGET ID="cbinr254"><!-- POSTPROCESSDATA: cbinr254|dither --></PARAGRAPH>
<PARAGRAPH>Because the pixel output format might be different from the framebuffer color storage format, the InfiniteReality subsystem must know which method to use to adapt the framebuffer contents to the output format. For example, the framebuffer might contain 12-bit RGB, although you have selected the Pixel Format RGB10 to send to the video subsystem. If Dither is not selected, the system truncates the colors. Selecting Dither causes the system to add a fixed pattern of noise to the colors before it truncates them. </PARAGRAPH>
</SECTION2>
<SECTION2 LBL="" HELPID = "Cbinr.channel.chg.attrib.setup"><TITLE>Setup<INDEXTARGET ID="cbinr255"><!-- POSTPROCESSDATA: cbinr255|setuppedestal --></TITLE><PARAGRAPH>Check this box to enable pedestal (an artificial black-level voltage) for this output (disabled by default). Make sure this box is unchecked (setup disabled) for PAL and for Japanese NTSC.</PARAGRAPH>
<PARAGRAPH>Setup (also called pedestal) is typically used in NTSC and is typically not used in PAL. Setup is the difference between the blanking level and the blackest level displayed on the monitor. A black level that is elevated to 7.5 IRE instead of being left at 0.0 IRE is the same as the lowest level for active video. Because the video level is known, this part of the signal is used for black-level clamping-circuit operation. </PARAGRAPH>
</SECTION2>
<SECTION2 LBL="" HELPID = "Cbinr.channel.chg.attrib.trilevel"><TITLE><XREFTARGET ID="82076">Tri-Level Sync </TITLE><PARAGRAPH>Check this box to enable trilevel sync for separate RGB ports. This selection is useful for enabling trilevel sync for HDTV monitors that use trilevel sync. You cannot have trilevel sync on CSYNC output (the H/C sync port). <INDEXTARGET ID="cbinr256"><!-- POSTPROCESSDATA: cbinr256|trilevel sync --></PARAGRAPH>
</SECTION2>
<SECTION2 LBL="" HELPID = "Cbinr.channel.chg.attrib.cursorpri"><TITLE><XREFTARGET ID="81036">Cursor Priority</TITLE><PARAGRAPH>The cursor is visible on only one channel at a time. If your video format combination includes overlapping rectangles, you can set cursor priority to determine which channel displays the cursor when it enters a region where the channels overlap.<INDEXTARGET ID="cbinr257"><!-- POSTPROCESSDATA: cbinr257|cursor:priority --></PARAGRAPH>
<PARAGRAPH>To set cursor priority for a channel, enter a number between 0 and 255, with lower numbers indicating higher priority. </PARAGRAPH>
<PARAGRAPH>If you set the same priority number for more than one channel in the combination, the channel that last displayed the cursor retains it. If the cursor did not previously appear in either of the contending channels, the channel with the lower channel number displays the cursor.</PARAGRAPH>
</SECTION2>
<SECTION2 LBL="" HELPID = "Cbinr.channel.chg.attrib.fbuf.placemt"><TITLE><XREFTARGET ID="73834">Channel Placement in the Framebuffer</TITLE><PARAGRAPH>The framebuffer is divided into individually addressable tiles 160 pixels wide and 8 pixels high; see&space;<INDEXTARGET ID="cbinr258"><!-- POSTPROCESSDATA: cbinr258|framebuffer:and channel placement --><INDEXTARGET ID="cbinr259"><!-- POSTPROCESSDATA: cbinr259|framebuffer:tiles --><XREF IDREF="37587" TYPE="GRAPHIC">Figure&nbsp;2-6</XREF><BOLD>. </BOLD>With each line, entire tiles in the horizontal direction are transferred, not portions of them. </PARAGRAPH>
<PARAGRAPH><FIGURE><GRAPHIC FILE="framebuffer.gif" POSITION="INLINE" SCALE="FALSE"><CAPTION LBL="2-6"><PREFIX>Figure 2-6 </PREFIX><XREFTARGET ID="37587">Framebuffer </CAPTION>
</FIGURE>
</PARAGRAPH>
<PARAGRAPH>If panning is locked to tile boundaries, less bandwidth is used (as shown in the bandwidth scale in the lower left of the Combiner main window). If you choose to pan on a per-pixel basis, the Combiner must account for an extra tile in the horizontal direction. Because more tiles are transferred for every line, the result is some wasted bandwidth; <INDEXTARGET ID="cbinr260"><!-- POSTPROCESSDATA: cbinr260|panning --><INDEXTARGET ID="cbinr261"><!-- POSTPROCESSDATA: cbinr261|bandwidth:and channel boundaries --><XREF IDREF="65777" TYPE="GRAPHIC">Figure&nbsp;2-7</XREF> diagrams this contrast. During run time, smooth per-pixel panning costs extra bandwidth as well; see the discussion in <XREF IDREF="70537" TYPE="TITLE">&ldquo;Changing Global Attributes for Combinations&rdquo;</XREF>.</PARAGRAPH>
<PARAGRAPH><FIGURE><GRAPHIC FILE="rntime.panning.tile.bndaries.gif" POSITION="INLINE" SCALE="FALSE"><CAPTION LBL="2-7"><PREFIX>Figure 2-7 </PREFIX><XREFTARGET ID="65777">Run-Time Panning and Tile Boundaries </CAPTION>
</FIGURE>
</PARAGRAPH>
<PARAGRAPH>The choices in the X and Y popup menus at Placement specify the relationship between the panning area and the number of tiles transferred:</PARAGRAPH>
<BULLETLIST><BULLET><PARAGRAPH>Locked: This choice prevents the user from panning in this direction during run time.</PARAGRAPH>
</BULLET>
<BULLET><PARAGRAPH>Pixel: Framebuffer use is on a per-pixel basis, allowing run-time panning that is not aligned to tile boundaries. This setting is the default for the Y direction.</PARAGRAPH>
</BULLET>
<BULLET><PARAGRAPH>Tile (X direction only): This choice allocates framebuffer use by entire tile <BOLD></BOLD>and restricts run-time panning to tile boundaries as well. This setting is the default for the X direction.<BOLD></BOLD></PARAGRAPH>
</BULLET>
</BULLETLIST>
</SECTION2>
<SECTION2 LBL="" HELPID = "Cbinr.channel.chg.attrib.hphase.vphase"><TITLE>Horizontal and Vertical Phase<INDEXTARGET ID="cbinr262"><!-- POSTPROCESSDATA: cbinr262|horizontal phasevertical phase --></TITLE><PARAGRAPH>The horizontal and vertical phase settings apply only if the channel is genlocked to external sync. The settings line up the pixels in two video streams.</PARAGRAPH>
<BULLETLIST><BULLET><PARAGRAPH>Use the HPhase field to enter a floating point number as the default horizontal phase value for this channel. Positive values delay the genlocked video channel with respect to external sync, and negative values advance the genlocked video channel with respect to sync. The default is 0. </PARAGRAPH>
</BULLET>
<BULLET><PARAGRAPH>Use the VPhase field to enter the default vertical phase value for this channel. This value ranges from 0 to the number of lines in the video format minus 1. The default value is 0.</PARAGRAPH>
</BULLET>
</BULLETLIST>
</SECTION2>
<SECTION2 LBL="" HELPID = "Cbinr.channel.chg.attrib.sync"><TITLE>Sync</TITLE><PARAGRAPH>In addition to composite sync on green, InfiniteReality provides separate horizontal and vertical video signals for compatibility with a wide variety of video equipment such as projectors and recorders.<INDEXTARGET ID="cbinr263"><!-- POSTPROCESSDATA: cbinr263|sync:channel attribute --></PARAGRAPH>
<NOTE><PREFIX>Note</PREFIX>For locations of the physical connectors on the Onyx and Onyx2 graphics I/O boards, see the owner's guide of the respective workstation.</NOTE>
<PARAGRAPH>Make a choice in the Sync Output popup menu to set the output for the alternate sync port: </PARAGRAPH>
<BULLETLIST><BULLET><PARAGRAPH>Horizontal: put horizontal sync on the <HARDWARELABEL>H/C Sync</HARDWARELABEL> port</PARAGRAPH>
</BULLET>
<BULLET><PARAGRAPH>Composite: put composite sync on the <HARDWARELABEL>H/C Sync</HARDWARELABEL> port (this setting is the default)</PARAGRAPH>
</BULLET>
</BULLETLIST>
<PARAGRAPH>Use the check boxes at Sync Component to specify whether the R, G, and B components have sync enabled by default. </PARAGRAPH>
</SECTION2>
<SECTION2 LBL="" HELPID = "Cbinr.channel.chg.attrib.gamma"><TITLE><XREFTARGET ID="67167">Gamma<INDEXTARGET ID="cbinr264"><!-- POSTPROCESSDATA: cbinr264|gamma --></TITLE><PARAGRAPH>The brightness characteristic of a monitor's CRT is not linear with respect to voltage; the voltage-to-intensity characteristic is usually close to a power of 2.2. If left uncorrected, the resulting display has too much contrast; detail in black regions is not reproduced. To correct this inconsistency, a gamma value (correction factor) using the 2.2 root of the input signal is available so that equal steps of brightness or intensity at the input are reproduced with equal steps of intensity at the display. </PARAGRAPH>
<PARAGRAPH>If your InfiniteReality system has two channels, it uses one gamma table for both channels. You can change the output video gamma values from the factory setting of 1.700 for the red, blue, or green components; these values apply to both channels. The gamma for all channels derives from the same gamma map, gamma map 0. </PARAGRAPH>
<PARAGRAPH>If your InfiniteReality system has eight channels, you can change the output video gamma values for the red, blue, or green components for each channel separately. Follow these steps: </PARAGRAPH>
<ORDEREDLIST><LIST><PARAGRAPH>Click <BUTTON>Edit Globals...</BUTTON> at the lower right of the main window. The Combination Attributes window appears, as shown in <XREF IDREF="48497" TYPE="GRAPHIC">Figure&nbsp;2-8</XREF>. (Details of this window are discussed in <XREF IDREF="70537" TYPE="TITLE">&ldquo;Changing Global Attributes for Combinations&rdquo;</XREF>.)</PARAGRAPH>
<PARAGRAPH><FIGURE>&space;<GRAPHIC FILE="globattribs.gif" POSITION="INLINE" SCALE="FALSE"><CAPTION LBL="2-8"><PREFIX>Figure 2-8 </PREFIX><XREFTARGET ID="48497">Combination Attributes Window</CAPTION>
</FIGURE>
</PARAGRAPH>
</LIST>
<LIST><PARAGRAPH>Unselect the Global Gamma check box at the lower left and close the window.</PARAGRAPH>
</LIST>
<LIST><PARAGRAPH>In the Channel Attributes window for the channel whose gamma values you want to change, select the check box at Use Gamma, as shown in <XREF IDREF="58186" TYPE="GRAPHIC">Figure&nbsp;2-9</XREF>. </PARAGRAPH>
<PARAGRAPH><FIGURE>&space;<GRAPHIC FILE="chattribs.usegamma.gif" POSITION="INLINE" SCALE="FALSE"><CAPTION LBL="2-9"><PREFIX>Figure 2-9 </PREFIX><XREFTARGET ID="58186">Channel Attributes Window<INDEXTARGET ID="cbinr265"><!-- POSTPROCESSDATA: cbinr265|Channel Attributes window --><INDEXTARGET ID="cbinr266"><!-- POSTPROCESSDATA: cbinr266|channel:menuchannel:window --><ITALICS>&space;</ITALICS></CAPTION>
</FIGURE>
</PARAGRAPH>
</LIST>
<LIST><PARAGRAPH>Enter the gamma values for R, G, and B. </PARAGRAPH>
</LIST>
<LIST><PARAGRAPH>Repeat this process for other channels for which you want custom gamma values.</PARAGRAPH>
</LIST>
</ORDEREDLIST>
</SECTION2>
<SECTION2 LBL="" HELPID = "Cbinr.channel.chg.attrib.alpha.chnl"><TITLE><XREFTARGET ID="85525">Alpha On Blue&space;<INDEXTARGET ID="cbinr267"><!-- POSTPROCESSDATA: cbinr267|alpha:channel --></TITLE><PARAGRAPH>Check the check box at Alpha On Blue to produce the alpha component of the input channel instead of blue component from the framebuffer. For this setting to be in effect, the RGBA10 pixel format must be selected, as explained in <INDEXTARGET ID="cbinr268"><!-- POSTPROCESSDATA: cbinr268|Alpha On Blue --><XREF IDREF="13200" TYPE="TITLE">&ldquo;Pixel Format&rdquo;</XREF>. </PARAGRAPH>
<PARAGRAPH>When you check this box, gamma correction is disabled for this channel; alpha is never gamma-corrected.</PARAGRAPH>
<NOTE><PREFIX>Note</PREFIX>For the Sirius Video and DVP channels, leave the Alpha On Blue check box unchecked.<INDEXTARGET ID="cbinr269"><!-- POSTPROCESSDATA: cbinr269|DVP:and Alpha On BlueSirius Video:and Alpha On Blue --><INDEXTARGET ID="cbinr270"><!-- POSTPROCESSDATA: cbinr270|alpha:channel:and Sirius Video --></NOTE>
<PARAGRAPH>Most modern video postproduction equipment, such as the Sirius Video option, uses alpha in digital form. For compatibility with older equipment that requires analog alpha, you can use a second channel. </PARAGRAPH>
<PARAGRAPH>To set up a dedicated channel for alpha out, follow these steps:<INDEXTARGET ID="cbinr271"><!-- POSTPROCESSDATA: cbinr271|alpha:channel:dedicated analog alpha out --></PARAGRAPH>
<ORDEREDLIST><LIST><PARAGRAPH>On the equipment you are using to output analog alpha, hook up to the blue component out; on the alpha channel, the blue component is replaced with 10-bit alpha.</PARAGRAPH>
</LIST>
<LIST><PARAGRAPH>Make sure both channels are running the same video format and are positioned and sized identically in the framebuffer managed area. (If you are setting up the channels at this time, you can use the Copy feature as explained in <XREF IDREF="50845" TYPE="TITLE">&ldquo;Copying a Channel&rdquo;</XREF>.)</PARAGRAPH>
</LIST>
<LIST><PARAGRAPH>In the Channel Attributes window of the channel you want to use for analog alpha, make sure the Alpha On Blue check box is checked to enable alpha. Make sure it is unchecked in the other channel's Channel Attributes window.</PARAGRAPH>
</LIST>
<LIST><PARAGRAPH>In the Pixel Format popup menu, select the format RGBA10 for each channel.</PARAGRAPH>
</LIST>
</ORDEREDLIST>
</SECTION2>
<SECTION2 LBL="" HELPID = "Cbinr.channel.chg.attrib.gain"><TITLE>Gain</TITLE><PARAGRAPH>In the text field at Gain, you can change the default output video gain value for this channel from 1.0 to a value between 0.0 and 10.0. The system software forces the value you enter to the closest gain that is physically realizable on the output channel. <INDEXTARGET ID="cbinr272"><!-- POSTPROCESSDATA: cbinr272|gain --></PARAGRAPH>
<PARAGRAPH>Normally, gain is set to a midrange level, such as 6.0. At this value, peak white equals 700&nbsp;mV. </PARAGRAPH>
</SECTION2>
</SECTION1>
<SECTION1 LBL="" HELPID = "Cbinr.channel.select"><TITLE><XREFTARGET ID="77902">Selecting Channels for a Combination</TITLE><PARAGRAPH>When you save a combination, the video formats on all channels defined in the Combiner main window are included in the combination by default.<INDEXTARGET ID="cbinr273"><!-- POSTPROCESSDATA: cbinr273|combination. <ITALICS>See</ITALICS> video format combination --></PARAGRAPH>
<PARAGRAPH>To delete a channel from a combination, select its rectangle in the Combiner main window and press <USERINPUT>Delete</USERINPUT> or <USERINPUT>Ctrl + x</USERINPUT>. <INDEXTARGET ID="cbinr274"><!-- POSTPROCESSDATA: cbinr274|video format combination:deleting channelchannel:delete from combination --></PARAGRAPH>
<PARAGRAPH>For test purposes, you can keep the definition of the channel in the combination while disabling the channel output (and thus saving the bandwidth that the channel would consume). To do so, make sure the Channel Enabled check box is unchecked (disabled).<INDEXTARGET ID="cbinr275"><!-- POSTPROCESSDATA: cbinr275|video format combination:testing --></PARAGRAPH>
<PARAGRAPH>For information on setting cursor priority for overlapping channels, see <XREF IDREF="82076" TYPE="TITLE">&ldquo;Tri-Level Sync&rdquo;</XREF>.</PARAGRAPH>
<PARAGRAPH>For the combination to be valid, check the following:<INDEXTARGET ID="cbinr276"><!-- POSTPROCESSDATA: cbinr276|video format combination:checking validity --></PARAGRAPH>
<ORDEREDLIST><LIST><PARAGRAPH>Make sure that the swap rates of all channels match, including the Sirius Video channel. The swap rate is shown in each Channel Attributes window. For more information on the swap rate, see <INDEXTARGET ID="cbinr277"><!-- POSTPROCESSDATA: cbinr277|swap rate --><XREF IDREF="61093" TYPE="TITLE">&ldquo;Swap Rate&rdquo;</XREF>.</PARAGRAPH>
</LIST>
<LIST><PARAGRAPH>Make sure that the Error indicator in the main Combiner window indicates <SCREENDISPLAY>&lt;none></SCREENDISPLAY>.</PARAGRAPH>
</LIST>
</ORDEREDLIST>
<NOTE><PREFIX>Note</PREFIX>The Combiner can write invalid combinations so that they can be loaded and worked on in another session.</NOTE>
<PARAGRAPH>You can use the <INDEXTARGET ID="cbinr278"><!-- POSTPROCESSDATA: cbinr278|<ITALICS>setmon</ITALICS> --><INDEXTARGET ID="cbinr279"><!-- POSTPROCESSDATA: cbinr279|<ITALICS>setmon</ITALICS> --><COMMAND>setmon</COMMAND> utility to download saved combinations, as indicated in <XREF IDREF="66871" TYPE="TITLE">&ldquo;Downloading a Video Format Combination&rdquo;</XREF>; however, <COMMAND>setmon</COMMAND> rejects invalid combinations. See the<COMMAND>&space;setmon</COMMAND> reference page for details.</PARAGRAPH>
</SECTION1>
<SECTION1 LBL="" HELPID = "Cbinr.chg.attrib.global"><TITLE><XREFTARGET ID="70537">Changing Global Attributes for Combinations<INDEXTARGET ID="cbinr280"><!-- POSTPROCESSDATA: cbinr280|video format combination:global attributes --></TITLE><PARAGRAPH>To change attributes such as pixel depth, gamma values, sync source, and sync format for all combinations at once, click <BUTTON>Edit Globals</BUTTON>. <XREF IDREF="29857" TYPE="GRAPHIC">Figure&nbsp;2-10</XREF> shows the Combination Attributes window. </PARAGRAPH>
<PARAGRAPH><FIGURE>&space;<GRAPHIC FILE="globattribs.gif" POSITION="INLINE" SCALE="FALSE"><CAPTION LBL="2-10"><PREFIX>Figure 2-10 </PREFIX><XREFTARGET ID="29857">Combination Attributes Window</CAPTION>
</FIGURE>
</PARAGRAPH>
<PARAGRAPH>The numerals displayed in the Managed Area fields show the dimensions of the framebuffer, which is managed by the X Windows server. Note that allocation of the framebuffer is on a tile basis; if you allocate the framebuffer in units other than whole tiles (160-by-8-pixel boundaries), pixels are inaccessible.<INDEXTARGET ID="cbinr281"><!-- POSTPROCESSDATA: cbinr281|managed area:for combination --><INDEXTARGET ID="cbinr282"><!-- POSTPROCESSDATA: cbinr282|framebuffer:and managed area:for combination --><INDEXTARGET ID="cbinr283"><!-- POSTPROCESSDATA: cbinr283|allocation, framebuffer --><INDEXTARGET ID="cbinr284"><!-- POSTPROCESSDATA: cbinr284|framebuffer:allocation --></PARAGRAPH>
<PARAGRAPH>If the video output format has a width of 1280 pixels, exactly eight tiles (160 x 8 = 1280) are allocated. If you specify a width of 1281 pixels in the Size field or with the mouse, the Combiner still transfers nine tiles, though the ninth tile is barely used. <BOLD><INDEXTARGET ID="cbinr285"><!-- POSTPROCESSDATA: cbinr285|framebuffer:tiles:for combination --></BOLD></PARAGRAPH>
<PARAGRAPH>The Combiner always shows the allocated area to make it clear that memory is being made inaccessible if the managed area size differs from that of the allocated area. When allocation and managed area size differ, a vertical or horizontal red line (or both) appears in the Combiner window dividing the managed area (left of or above the line) from the unusable portion of the allocated area (right of or below the line). <INDEXTARGET ID="cbinr286"><!-- POSTPROCESSDATA: cbinr286|red line --></PARAGRAPH>
<PARAGRAPH>In general, it is best to put the managed area on the channel boundaries, even if doing so makes part of a tile inaccessible. The X Window System never moves the cursor outside the managed area, so making the managed area follow the borders of the video channels makes it harder to lose the cursor by moving it &ldquo;off-screen.&rdquo;<INDEXTARGET ID="cbinr287"><!-- POSTPROCESSDATA: cbinr287|cursor --></PARAGRAPH>
<PARAGRAPH>When you save the formats as a video output combination, the extra bandwidth that the Combiner allocated (see <INDEXTARGET ID="cbinr288"><!-- POSTPROCESSDATA: cbinr288|bandwidth --><XREF IDREF="73834" TYPE="TITLE">&ldquo;Channel Placement in the Framebuffer&rdquo;</XREF>) is accounted for, even though the channel might be placed on a tile boundary at that time. The Combiner accounts in advance for the worst-case bandwidth that can occur at run time when the user smoothly pans the channel.</PARAGRAPH>
<PARAGRAPH>To add a description of up to 256 characters to the file that stores the combination, enter it in the Description text field.<INDEXTARGET ID="cbinr289"><!-- POSTPROCESSDATA: cbinr289|video format combination:description --></PARAGRAPH>
<PARAGRAPH>This section explains</PARAGRAPH>
<BULLETLIST><BULLET><PARAGRAPH>selecting a channel for textport output</PARAGRAPH>
</BULLET>
<BULLET><PARAGRAPH>setting pixel depth</PARAGRAPH>
</BULLET>
<BULLET><PARAGRAPH>setting gamma values </PARAGRAPH>
</BULLET>
<BULLET><PARAGRAPH>setting sync source and format</PARAGRAPH>
</BULLET>
</BULLETLIST>
<SECTION2 LBL="" HELPID = "Cbinr.channel.chg.attrib.textport"><TITLE>Selecting a Channel for Textport Output</TITLE><PARAGRAPH>In the Textport popup menu, select the channel to be used as the textport output. This channel displays boot information when the workstation is restarted.<INDEXTARGET ID="cbinr290"><!-- POSTPROCESSDATA: cbinr290|textport --></PARAGRAPH>
</SECTION2>
<SECTION2 LBL="" HELPID = "Cbinr.channel.chg.attrib.global.pixeld"><TITLE>Setting Pixel Depth<INDEXTARGET ID="cbinr291"><!-- POSTPROCESSDATA: cbinr291|pixel depth --></TITLE><PARAGRAPH>Pixel depth specifies the framebuffer pixel depth that this combination allocates when graphics are restarted with the combination that has been saved to the EEPROM, either from a system boot or manually with <COMMAND>(/usr/gfx/stopgfx ; /usr/gfx/startgfx)&amp;</COMMAND>.<INDEXTARGET ID="cbinr292"><!-- POSTPROCESSDATA: cbinr292|initializing graphicsgraphics, initializing --></PARAGRAPH>
<PARAGRAPH>Use the Pixel Depth popup menu choices to set the arrangement of pixels in the framebuffer. The amount of memory in the framebuffer is constant, but its arrangement into pixels is flexible. In this context, the framebuffer can be thought of as a mass of clay. The total mass is fixed, but its arrangement can vary: it can be stretched out wide and broad, but shallow, or formed to be narrow, tall, and deep, as diagrammed in <INDEXTARGET ID="cbinr293"><!-- POSTPROCESSDATA: cbinr293|framebuffer:arrangement --><XREF IDREF="44753" TYPE="GRAPHIC">Figure&nbsp;2-11</XREF>.</PARAGRAPH>
<PARAGRAPH><FIGURE>&space;<GRAPHIC FILE="framebuffer.pixeldepth.gif" POSITION="INLINE" SCALE="FALSE"><CAPTION LBL="2-11"><PREFIX>Figure 2-11 </PREFIX><XREFTARGET ID="44753">Framebuffer and Pixel Depth </CAPTION>
</FIGURE>
</PARAGRAPH>
<BULLETLIST><BULLET><PARAGRAPH>Small, Medium, Large, and X&ndash;Large: set pixel depth as indicated by these names and allocate the framebuffer accordingly. Use this choice if pixel depth is more important to your application than the size of the managed area.</PARAGRAPH>
</BULLET>
<BULLET><PARAGRAPH>Deepest: instructs the Combiner to select the deepest possible setting for this managed area on this hardware configuration, where X&ndash;Large is the deepest, followed by Large, then Medium, and finally Small. Use this choice if the size of the managed area is more important to your application than pixel depth. This setting is the default.</PARAGRAPH>
</BULLET>
</BULLETLIST>
<PARAGRAPH>For example, if you set pixel depth to Small, less framebuffer memory is used, but the shallow pixel depth results in fewer bits per pixel. Setting pixel depth to X&ndash;Large results in more bits per pixel, at the expense of the X,Y dimensions of the managed area. The X-Large setting provides richer information per pixel, which is useful for multisampling or other applications, and also provides more depth for stencil and z-buffering.</PARAGRAPH>
<PARAGRAPH>Deeper pixels cost a slight premium in rendering bandwidth and video bandwidth. Although framebuffer pixel depth has less impact on video bandwidth than the output pixel format (RGB10, RGB12, and so on), if speed is a concern, you can gain a slight advantage by selecting Small. In most cases, pixel depth is determined by the rendering features required, such as antialiasing, precision of the Z buffer, stencil buffer, and so on, rather than by video bandwidth considerations.<INDEXTARGET ID="cbinr294"><!-- POSTPROCESSDATA: cbinr294|bandwidthvideo bandwidth --></PARAGRAPH>
<PARAGRAPH>If you use one of these depth settings and then change the combination without restarting graphics, the depth setting is not guarantee because graphics must restart to accommodate the change in depth. In this case, the system software converts the setting to the current pixel depth without notice. </PARAGRAPH>
<PARAGRAPH>Also, if the system configuration does not support your choice when you restart graphics (for example, not enough RM boards), the configuration fails and the system software uses the Emergency Backup Combination (see <INDEXTARGET ID="cbinr295"><!-- POSTPROCESSDATA: cbinr295|RM board --><INDEXTARGET ID="cbinr296"><!-- POSTPROCESSDATA: cbinr296|Emergency Backup Combination --><XREF IDREF="97843" TYPE="TITLE">&ldquo;Emergency Backup Combination&rdquo;</XREF>). The actual pixel depth setting appears in parentheses beside the Pixel Depth popup menu; in the example in Figure&nbsp;2-10, this value is Small.</PARAGRAPH>
<PARAGRAPH>For more information on setting pixel depth, see <XREF IDREF="58673" TYPE="TITLE">&ldquo;Framebuffer Memory and Read/Write Bandwidth&rdquo;</XREF>.</PARAGRAPH>
</SECTION2>
<SECTION2 LBL="" HELPID = ""><TITLE>Setting Gamma Values </TITLE><PARAGRAPH>If this check box is selected, the values shown for R, G, and B apply to all channels in the combination. If your InfiniteReality system has eight channels, you can set gamma values separately for each channel. For instructions and more information on gamma, see <XREF IDREF="67167" TYPE="TITLE">&ldquo;Gamma&rdquo;</XREF>. </PARAGRAPH>
</SECTION2>
<SECTION2 LBL="" HELPID = "Cbinr.channel.chg.attrib.global.sync"><TITLE><XREFTARGET ID="45053">Setting Sync Source and Format</TITLE><PARAGRAPH>At Sync Source, select the InfiniteReality internal sync (Internal) or an external source that is connected to the <HARDWARELABEL>Genlock In</HARDWARELABEL> port. <INDEXTARGET ID="cbinr297"><!-- POSTPROCESSDATA: cbinr297|sync:video format combination --></PARAGRAPH>
<PARAGRAPH>In the Sync Format text field, enter the name of the video format file that describes the format to which to lock the video subsystem. If you do not specify an input genlock format, the video format of the combination's lowest-numbered channel with a valid sync signal is used. Click <BUTTON>Browse</BUTTON> to select a sync format contained in a file. You can create your own sync format file using the Video Format Compiler.</PARAGRAPH>
</SECTION2>
</SECTION1>
<SECTION1 LBL="" HELPID = "Cbinr.VOFcombo.save"><TITLE><XREFTARGET ID="65153">Saving a Video Format Combination<INDEXTARGET ID="cbinr298"><!-- POSTPROCESSDATA: cbinr298|video format combination:saving --></TITLE><PARAGRAPH>Using &ldquo;Save&rdquo; in the File menu saves the combination. If you have saved the combination previously, use &ldquo;Save as...&rdquo; to save the combination under a different filename.</PARAGRAPH>
<PARAGRAPH>To save a combination as the default file that is loaded the next time you initialize graphics or power on the system, save it to the EEPROM; select &ldquo;Save to EEPROM...&rdquo; in the File menu or enter <INDEXTARGET ID="cbinr299"><!-- POSTPROCESSDATA: cbinr299|EEPROM:saving to --><INDEXTARGET ID="cbinr2100"><!-- POSTPROCESSDATA: cbinr2100|<ITALICS>setmon</ITALICS> --><USERINPUT>setmon -x</USERINPUT>&space;<VARIABLE>filename</VARIABLE>. </PARAGRAPH>
<PARAGRAPH>The combination saved to the EEPROM does not take effect immediately but is used the next time graphics is initialized, the system is powered on, or <COMMAND>ircombine</COMMAND> is run with the EEPROM as source and the current configuration as destination. </PARAGRAPH>
<PARAGRAPH>To add a description (256 characters or less) of the combination to the file, use the Description field in the Combination Attributes window, as explained in <XREF IDREF="70537" TYPE="TITLE">&ldquo;Changing Global Attributes for Combinations&rdquo;</XREF>.</PARAGRAPH>
<PARAGRAPH>As you build your own combination, you can test it by saving it, downloading it, adjusting, saving, and downloading it again, until you are satisfied. To &ldquo;test&rdquo; it on different equipment, follow the instructions in <INDEXTARGET ID="cbinr2101"><!-- POSTPROCESSDATA: cbinr2101|video format combination:testing --><XREF IDREF="98629" TYPE="TITLE">&ldquo;Using the Target Hardware Facility.&rdquo;</XREF></PARAGRAPH>
<NOTE><PREFIX>Note</PREFIX>To save the combination in the directory <FILENAME>/usr/gfx/ucode/KONA/dg4/cmb</FILENAME>, you must be running <COMMAND>ircombine</COMMAND> as superuser, or the system administrator must change permissions on that directory to allow writing to it.</NOTE>
</SECTION1>
<SECTION1 LBL="" HELPID = "Cbinr.Target.Hdwr"><TITLE><XREFTARGET ID="98629">Using the Target Hardware Facility</TITLE><PARAGRAPH>The Combiner includes a utility that lets you validate the combination using a hardware configuration you design. For example, if an error message appears indicating that the combination is too large for the hardware, you can use this Combiner facility to define a hardware configuration with more RM boards for test purposes.<INDEXTARGET ID="cbinr2102"><!-- POSTPROCESSDATA: cbinr2102|RM board --></PARAGRAPH>
<PARAGRAPH>This feature also allows you to run <INDEXTARGET ID="cbinr2103"><!-- POSTPROCESSDATA: cbinr2103|<ITALICS>ircombine</ITALICS>:on other Silicon Graphics hardware --><COMMAND>ircombine</COMMAND> on other Silicon Graphics hardware to select the InfiniteReality hardware configuration most appropriate for a particular application. You can create valid combinations this way and later download them with <COMMAND>ircombine</COMMAND> or <COMMAND>setmon</COMMAND> onto InfiniteReality hardware configurations that meet or exceed the specifications you selected in the Target Hardware window.</PARAGRAPH>
<PARAGRAPH>In the Target menu, select &ldquo;Edit user-defined hardware...&rdquo; The Target Hardware window appears, as shown in <INDEXTARGET ID="cbinr2104"><!-- POSTPROCESSDATA: cbinr2104|Target Hardware window --><XREF IDREF="59411" TYPE="GRAPHIC">Figure&nbsp;2-12</XREF>.</PARAGRAPH>
<PARAGRAPH><FIGURE>&space;<GRAPHIC FILE="targethw.gif" POSITION="INLINE" SCALE="FALSE"><CAPTION LBL="2-12"><PREFIX>Figure 2-12 </PREFIX><XREFTARGET ID="59411">Target Hardware Window</CAPTION>
</FIGURE>
</PARAGRAPH>
<PARAGRAPH>You can choose </PARAGRAPH>
<BULLETLIST><BULLET><PARAGRAPH>graphics type: Onyx Infinite Reality, Onyx2 InfiniteReality, or Onyx2 Reality </PARAGRAPH>
</BULLET>
<BULLET><PARAGRAPH>number of raster managers (RM boards): 1, 2, or 4 </PARAGRAPH>
</BULLET>
<BULLET><PARAGRAPH>number of channels: 2 or 8</PARAGRAPH>
</BULLET>
<BULLET><PARAGRAPH>Option Board: select Sirius Video, DVP, or GVO, if any of these options is installed<INDEXTARGET ID="cbinr2105"><!-- POSTPROCESSDATA: cbinr2105|Sirius Video:in Target Hardware window --><INDEXTARGET ID="cbinr2106"><!-- POSTPROCESSDATA: cbinr2106|DVP:in Target Hardware window --><INDEXTARGET ID="cbinr2107"><!-- POSTPROCESSDATA: cbinr2107|GVO:in Target Hardware window --></PARAGRAPH>
</BULLET>
</BULLETLIST>
<PARAGRAPH>Click <BUTTON>Close</BUTTON> to apply the settings to the combination.</PARAGRAPH>
</SECTION1>
</CHAPTER>

Binary file not shown.

View File

@@ -0,0 +1,67 @@
<!-- Produced by version 3.14 (11/22/96) of SGI Frame/SGML translator -->
<CHAPTER LBL="3"><TITLE><XREFTARGET ID="65296">Using the Encoder Channel</TITLE><HELPTOPIC HELPID = "Cbinr.Encoder"><TITLE>Encoder Channel</TITLE>
<PARAGRAPH>The Encoder channel, which can take the place of Channel 1, encodes its own or another channel's pixels to NTSC or PAL television standard for industrial-quality video out via the RCA and BNC connectors for NTSC and PAL or the S-Video connector on the InfiniteReality I/O panel.<INDEXTARGET ID="cbinr31"><!-- POSTPROCESSDATA: cbinr31|Encoder channel --></PARAGRAPH>
<PARAGRAPH>The Encoder channel can encompass an entire video channel, allowing whole-screen recording without an external scan converter. For video formats with pixel clock rates above 120 MHz, the Encoder works in pass-through mode, allowing you to record a pannable NTSC- or PAL-sized region of the display.</PARAGRAPH>
<PARAGRAPH>Alternatively, to save bandwidth, the Encoder channel can take a source channel's pixels and encode them. The Encoder channel samples the source channel's pixels at a point in the channel rectangle that you determine and encodes them to the standard you choose. <INDEXTARGET ID="cbinr32"><!-- POSTPROCESSDATA: cbinr32|bandwidth:and Encoder channel --><XREF IDREF="34893" TYPE="GRAPHIC">Figure&nbsp;3-1</XREF> diagrams a roaming Encoder whose source is Channel 0. </PARAGRAPH>
<PARAGRAPH><FIGURE>&space;<GRAPHIC FILE="encoder.roaming.gif" POSITION="INLINE" SCALE="FALSE"><CAPTION LBL="3-1"><PREFIX>Figure 3-1 </PREFIX><XREFTARGET ID="34893">Encoder, Roaming in Channel 0 </CAPTION>
</FIGURE>
</PARAGRAPH>
<PARAGRAPH>Flexible, built-in video resampling allows the Encoder to process any rectangular area of any video channel, up to and including the full screen. Also, applications can be recorded even if they were not written with NTSC or PAL resolution in mind. The Encoder handles without distortion video formats that have aspect ratios other than the 3:4 aspect ratio of NTSC or PAL.</PARAGRAPH>
</HELPTOPIC>
<PARAGRAPH>This chapter explains </PARAGRAPH>
<BULLETLIST><BULLET><PARAGRAPH><XREF IDREF="40135" TYPE="TITLE">&ldquo;Setting Up the Encoder Channel&rdquo;</XREF></PARAGRAPH>
</BULLET>
<BULLET><PARAGRAPH><XREF IDREF="46267" TYPE="TITLE">&ldquo;Modifying Encoder Channel Attributes&rdquo;</XREF></PARAGRAPH>
</BULLET>
</BULLETLIST>
<SECTION1 LBL="" HELPID = "Cbinr.Encoder.setup"><TITLE><XREFTARGET ID="40135">Setting Up the Encoder Channel<INDEXTARGET ID="cbinr33"><!-- POSTPROCESSDATA: cbinr33|Encoder channel:setting up --></TITLE><PARAGRAPH>The Encoder channel can be set up in independent mode or dependent mode. </PARAGRAPH>
<SECTION2 LBL="" HELPID = ""><TITLE>Independent Mode <INDEXTARGET ID="cbinr34"><!-- POSTPROCESSDATA: cbinr34|Encoder channel:independent mode --></TITLE><PARAGRAPH>In the Encoder Attributes window, select None in the Source Channel popup menu to set up the Encoder channel in independent mode. In this mode, pixels coming to the Encoder channel are 10 bits. </PARAGRAPH>
<PARAGRAPH>Like other channels, the Encoder in independent mode consumes pixel bandwidth. The Combiner validates the selection along with the other channels.</PARAGRAPH>
</SECTION2>
<SECTION2 LBL="" HELPID = ""><TITLE>Dependent Mode <INDEXTARGET ID="cbinr35"><!-- POSTPROCESSDATA: cbinr35|Encoder channel:dependent mode --></TITLE><PARAGRAPH>For dependent mode, select a specific channel in the Source Channel popup menu on which the Encoder is to be dependent. In this mode, a portion of the visible surface from one of the other high-resolution channels (as selected in the Source Channel popup menu) is sent to the Encoder for video out.</PARAGRAPH>
<PARAGRAPH>If the size of the selected region matches the size of the output format, the Encoder uses a precision of 10 bits per component and does not process the pixels (pass-through mode). However, if you have enlarged the input size so that it is larger than the output size of the format, pixels are filtered and processed to fit the output size (reduced mode). Filtered pixels have a precision of 8 bits per component. </PARAGRAPH>
</SECTION2>
</SECTION1>
<SECTION1 LBL="" HELPID = "Cbinr.Encoder.channel.attrib"><TITLE><XREFTARGET ID="46267">Modifying Encoder Channel Attributes</TITLE><PARAGRAPH>To view or change attributes of the Encoder channel, select the channel rectangle and select &ldquo;Edit attributes...&rdquo; in the Channel menu. The Encoder Attributes window appears, as shown in <INDEXTARGET ID="cbinr36"><!-- POSTPROCESSDATA: cbinr36|Encoder channel:attributes, modifying --><XREF IDREF="10275" TYPE="GRAPHIC">Figure&nbsp;3-2</XREF>.</PARAGRAPH>
<PARAGRAPH><FIGURE>&space;<GRAPHIC FILE="encoder.gif" POSITION="INLINE" SCALE="FALSE"><CAPTION LBL="3-2"><PREFIX>Figure 3-2 </PREFIX><XREFTARGET ID="10275">Encoder Channel Attributes Window </CAPTION>
</FIGURE>
</PARAGRAPH>
<PARAGRAPH>Largely, this window shares features of the Channel Attributes window. See for explanations of these features. Features this window does not share with the Channel Attributes window are the Letter Box toggle and the Safe Area percentage choice, which are explained in this section.</PARAGRAPH>
<PARAGRAPH>This section explains</PARAGRAPH>
<BULLETLIST><BULLET><PARAGRAPH><XREF IDREF="67148" TYPE="TITLE">&ldquo;Specifying the Output Resolution Encoder Format&rdquo;</XREF></PARAGRAPH>
</BULLET>
<BULLET><PARAGRAPH><XREF IDREF="38596" TYPE="TITLE">&ldquo;Specifying the Filter Width for the Encoder Channel&rdquo;</XREF></PARAGRAPH>
</BULLET>
<BULLET><PARAGRAPH><XREF IDREF="94940" TYPE="TITLE">&ldquo;Using the Safe Area and Letterboxing&rdquo;</XREF>&space;</PARAGRAPH>
</BULLET>
</BULLETLIST>
<SECTION2 LBL="" HELPID = "Cbinr.Encoder.channel.attrib.outputfmt"><TITLE><XREFTARGET ID="67148">Specifying the Output Resolution Encoder Format</TITLE><PARAGRAPH>Output resolution (Encoder Format in the Encoder Attributes window) is fixed to NTSC or PAL square-pixel formats: <INDEXTARGET ID="cbinr37"><!-- POSTPROCESSDATA: cbinr37|Encoder channel:output resolution --></PARAGRAPH>
<BULLETLIST><BULLET><PARAGRAPH>NTSC: 646 x 486</PARAGRAPH>
</BULLET>
<BULLET><PARAGRAPH>PAL: 768 x 576</PARAGRAPH>
</BULLET>
</BULLETLIST>
<NOTE><PREFIX>Note</PREFIX>The composite and S-Video Encoder outputs are for industrial or monitoring purposes only and are not designed for broadcast television use. For broadcast-quality composite video, configure a video channel of the graphics system as RS-170 or Euro 625 resolution and send it through an external broadcast-quality encoder. For CCIR601 or broadcast-quality component video, use the Sirius Video option, as explained in <INDEXTARGET ID="cbinr38"><!-- POSTPROCESSDATA: cbinr38|composite output, Encoder channelS-Video output, Encoder channel --><INDEXTARGET ID="cbinr39"><!-- POSTPROCESSDATA: cbinr39|Encoder channel:S-Video outputEncoder channel:composite output --><XREF IDREF="43212" TYPE="TITLE">Chapter&nbsp;4</XREF>.</NOTE>
</SECTION2>
<SECTION2 LBL="" HELPID = "Cbinr.filterwidth"><TITLE><XREFTARGET ID="38596">Specifying the Filter Width for the Encoder Channel</TITLE><PARAGRAPH>In the Encoder and Sirius Video Attributes window, use the Filter Size dials to set filter size in the X and Y directions for video resampling. The ticks at the dials correspond to the number of source pixels used to derive the destination pixels. As you adjust the dials, view the changes on an output monitor to determine the desired filter size. <INDEXTARGET ID="cbinr310"><!-- POSTPROCESSDATA: cbinr310|Encoder channel:filter, specifyingfilter, Encoder channel --></PARAGRAPH>
<PARAGRAPH><XREF IDREF="77044" TYPE="GRAPHIC">Figure&nbsp;3-3</XREF> diagrams variations of the filter width; in this figure, S = source pixel and D&nbsp;=&nbsp;destination pixel (after the filter is applied). The wider the filter, the more blurred the output image. </PARAGRAPH>
<PARAGRAPH><FIGURE>&space;<GRAPHIC FILE="filter.width.gif" POSITION="INLINE" SCALE="FALSE"><CAPTION LBL="3-3"><PREFIX>Figure 3-3 </PREFIX><XREFTARGET ID="77044">Varying the Width of the Filter </CAPTION>
</FIGURE>
</PARAGRAPH>
<PARAGRAPH>In <XREF IDREF="77044" TYPE="GRAPHIC">Figure&nbsp;3-3</XREF>:</PARAGRAPH>
<BULLETLIST><BULLET><PARAGRAPH>first row: the filter does not sample all source pixels to yield the destination pixels</PARAGRAPH>
</BULLET>
<BULLET><PARAGRAPH>second row: the filter samples all source pixels</PARAGRAPH>
</BULLET>
<BULLET><PARAGRAPH>third row: the filter samples several pixels to yield each destination pixel, overlapping the source pixels sampled</PARAGRAPH>
</BULLET>
</BULLETLIST>
<NOTE><PREFIX>Note</PREFIX>Scaling is better done in the Y direction, where any resultant fuzziness is less noticeable, than in the X direction.</NOTE>
</SECTION2>
<SECTION2 LBL="" HELPID = ""><TITLE><XREFTARGET ID="94940">Using the Safe Area and Letterboxing<INDEXTARGET ID="cbinr311"><!-- POSTPROCESSDATA: cbinr311|safe arealetterboxing --></TITLE><PARAGRAPH>The Safe Area is the area of the output raster in which the picture is placed. At a Safe Area setting of 100%, the usual setting, the active picture fills the active area of the raster.</PARAGRAPH>
<PARAGRAPH>Consumer TV receivers are normally overscanned, with roughly 5% of each edge hidden behind the monitor's cabinet. To set the Encoder to place the image inside this area, set the Safe Area to 90%; this setting puts the image into the central 90% of the active area of the raster.</PARAGRAPH>
<PARAGRAPH>Letterboxing is preserving the aspect ratio of the source. For example, if you are using a 1280 x 486 area of your main screen for the Encoder channel in dependent mode and Letter Box is not checked, the 1280 x 486 is scaled down to the 646 x 486 Encoder output, distorting the X direction. If Letter Box is checked, X and Y are scaled equally: 1280 is scaled to 646 (a ratio of 1280:646, or 1.98:1) and 486 is scaled the same percentage, resulting in 246 scan lines. </PARAGRAPH>
<PARAGRAPH>These 246 scan lines are placed in the middle of the Encoder output: the 486 output lines consist of 120 black lines at the top, the 246 active lines, and 120 black lines at the bottom.</PARAGRAPH>
</SECTION2>
</SECTION1>
</CHAPTER>

Binary file not shown.

View File

@@ -0,0 +1,76 @@
<!-- Produced by version 3.14 (11/22/96) of SGI Frame/SGML translator -->
<CHAPTER LBL="4"><TITLE><XREFTARGET ID="43212">Using the Combiner With Hardware Options<INDEXTARGET ID="cbinr41"><!-- POSTPROCESSDATA: cbinr41|Sirius Video --></TITLE><PARAGRAPH>The Combiner has dedicated channels for use when video hardware options are installed. This chapter explains</PARAGRAPH>
<BULLETLIST><BULLET><PARAGRAPH><XREF IDREF="84269" TYPE="TITLE">&ldquo;Selecting Option Board Channel Mode&rdquo;</XREF></PARAGRAPH>
</BULLET>
<BULLET><PARAGRAPH><XREF IDREF="32478" TYPE="TITLE">&ldquo;Using the Sirius Video Channel&rdquo;</XREF></PARAGRAPH>
</BULLET>
<BULLET><PARAGRAPH><XREF IDREF="48958" TYPE="TITLE">&ldquo;Using the DVP Channel&rdquo;</XREF></PARAGRAPH>
</BULLET>
<BULLET><PARAGRAPH><XREF IDREF="54286" TYPE="TITLE">&ldquo;Using the GVO Channel&rdquo;</XREF></PARAGRAPH>
</BULLET>
</BULLETLIST>
<PARAGRAPH>When one of these hardware options is correctly installed, its button at the far right of the menu bar (for example, <BUTTON>Sirius</BUTTON> or <BUTTON>GVO</BUTTON>) is accessible. </PARAGRAPH>
<PARAGRAPH>These options appear as channels in the Combiner interface; their use does not disable the use of other channels. The rules for combining video formats to run on multiple channels (for example, total memory and video bandwidth must not be exceeded; swap rates must match across channels) apply to these option board channels just as they do to the analog video channels. </PARAGRAPH>
<SECTION1 LBL="" HELPID = ""><TITLE><XREFTARGET ID="84269">Selecting Option Board Channel Mode<INDEXTARGET ID="cbinr42"><!-- POSTPROCESSDATA: cbinr42|Sirius Video:channel:setting up --></TITLE><PARAGRAPH>Like the Encoder channel, the Sirius Video and GVO channels can be set up in independent mode or dependent mode. (The DVP channel is independent only.) Use the option board's Attributes window to select mode.</PARAGRAPH>
<NOTE><PREFIX>Note</PREFIX>For the combination to be valid, the swap rates of all channels must match, including the option board channel in use. For more information on the swap rate, see &ldquo;Swap Rate&rdquo; on page&nbsp;41.</NOTE>
<SECTION2 LBL="" HELPID = ""><TITLE>Independent Mode <INDEXTARGET ID="cbinr43"><!-- POSTPROCESSDATA: cbinr43|Sirius Video:independent mode --></TITLE><PARAGRAPH>In the Sirius Video or GVO Attributes window, select None in the Source Channel popup menu to set up the option board channel in independent mode. In this mode, pixels coming to the Sirius Video or GVO option are 10 bits; pixels coming to the DVP option board are 12 bits.</PARAGRAPH>
<PARAGRAPH>Like the analog video channels, the option board channels in independent mode consume pixel bandwidth. The Combiner validates the selection along with the other channels.</PARAGRAPH>
</SECTION2>
<SECTION2 LBL="" HELPID = ""><TITLE>Dependent Mode </TITLE><PARAGRAPH>For dependent mode, select the Sirius Video or GVO channel in the Source Channel popup menu on which the option board channel is to be dependent. (The DVP channel is independent only.) In this mode, a portion of the visible surface from one of the other high-resolution channels (as selected in the Source Channel popup menu) is sent to the option board channel for video out. Like the Encoder channel, an option board channel can roam within its source channel. <INDEXTARGET ID="cbinr44"><!-- POSTPROCESSDATA: cbinr44|Sirius Video:dependent mode --></PARAGRAPH>
<PARAGRAPH>If the size of the selected region matches the size of the output format, the Sirius Video or GVO board uses a precision of 10 bits per component and does not process the pixels (pass-through mode). (The DVP option uses 12 bits per component in pass-through mode.) However, if you have enlarged the input size so that it is larger than the output size of the format, pixels are filtered and processed to fit the output size (reduced mode). Filtered pixels have a precision of 8 bits per component.</PARAGRAPH>
<NOTE><PREFIX>Note</PREFIX>On systems with the Sirius Video option, set up the default video combination with the Sirius Video channel dependent on a high-resolution channel. If you want the alpha component, select the RGBA10 pixel format on both the Sirius Video channel and the channel on which it is dependent. On systems with the DVP option, which does not use alpha, set the pixel format to RGB12.</NOTE>
</SECTION2>
</SECTION1>
<SECTION1 LBL="" HELPID = "Cbinr.SiriusV.setup"><TITLE><XREFTARGET ID="32478">Using the Sirius Video Channel</TITLE><PARAGRAPH>This section explains</PARAGRAPH>
<BULLETLIST><BULLET><PARAGRAPH><XREF IDREF="31554" TYPE="TITLE">&ldquo;Modifying Sirius Video Channel Attributes&rdquo;</XREF></PARAGRAPH>
</BULLET>
<BULLET><PARAGRAPH><XREF IDREF="89147" TYPE="TITLE">&ldquo;Selecting the Output Format&rdquo;</XREF></PARAGRAPH>
</BULLET>
</BULLETLIST>
<SECTION2 LBL="" HELPID = "Cbinr.SiriusV.channel.attrib"><TITLE><XREFTARGET ID="31554">Modifying Sirius Video Channel Attributes<INDEXTARGET ID="cbinr45"><!-- POSTPROCESSDATA: cbinr45|Sirius Video:channel:attributes, modifying --></TITLE><PARAGRAPH>If the Sirius Video option board is installed, double-click the <BUTTON>Sirius</BUTTON> button in the Combiner main window or double-click on the Sirius Video rectangle to edit Sirius Video attributes; <XREF IDREF="56342" TYPE="GRAPHIC">Figure&nbsp;4-1</XREF> shows the window.</PARAGRAPH>
<PARAGRAPH><FIGURE><GRAPHIC FILE="sirius.gif" POSITION="INLINE" SCALE="FALSE"><CAPTION LBL="4-1"><PREFIX>Figure 4-1 </PREFIX><XREFTARGET ID="56342">Sirius Video Channel Attributes Window </CAPTION>
</FIGURE>
</PARAGRAPH>
<NOTE><PREFIX>Note</PREFIX>Most features of this window are the same as for channel attributes or Encoder attributes; see the explanations in <XREF IDREF="40493" TYPE="TITLE">Chapter&nbsp;2</XREF> and <XREF IDREF="65296" TYPE="TITLE">Chapter&nbsp;3</XREF> for information.</NOTE>
</SECTION2>
<SECTION2 LBL="" HELPID = "Cbinr.SiriusV.channel.attrib.outputfmt"><TITLE><XREFTARGET ID="89147">Selecting the Output Format</TITLE><PARAGRAPH>Select the output format for Sirius Video from the Output Format popup menu:</PARAGRAPH>
<BULLETLIST><BULLET><PARAGRAPH>525: square pixel 646 x 486 NTSC resolution</PARAGRAPH>
</BULLET>
<BULLET><PARAGRAPH>625: square pixel 768 x 576 PAL resolution</PARAGRAPH>
</BULLET>
<BULLET><PARAGRAPH>CCIR601 525: nonsquare pixel 720 x 486 NTSC resolution</PARAGRAPH>
</BULLET>
<BULLET><PARAGRAPH>CCIR601 625: nonsquare pixel 720 x 576 PAL resolution</PARAGRAPH>
</BULLET>
</BULLETLIST>
<PARAGRAPH>At Pixel Format, select RGBA10 for 10-bit RGB with alpha. This selection presents alpha information for the Sirius Video board.<INDEXTARGET ID="cbinr46"><!-- POSTPROCESSDATA: cbinr46|Sirius Video:channel:pixel formatpixel format:Sirius Video channel --></PARAGRAPH>
<NOTE><PREFIX>Note</PREFIX>Make sure that the Alpha channel check box is unchecked.<INDEXTARGET ID="cbinr47"><!-- POSTPROCESSDATA: cbinr47|alpha:and Sirius Video --></NOTE>
<PARAGRAPH>To genlock the high-resolution channel to the Sirius Video board, click Edit globals... in the Combiner main window and select a sync source and format, as explained in <XREF IDREF="45053" TYPE="TITLE">&ldquo;Setting Sync Source and Format&rdquo;</XREF> in <XREF IDREF="40493" TYPE="TITLE">Chapter&nbsp;2</XREF>. </PARAGRAPH>
</SECTION2>
</SECTION1>
<SECTION1 LBL="" HELPID = ""><TITLE><XREFTARGET ID="48958">Using the DVP Channel</TITLE><PARAGRAPH>If the DVP daughtercard is installed, double-click the <INDEXTARGET ID="cbinr48"><!-- POSTPROCESSDATA: cbinr48|DVP --><BUTTON>DVP </BUTTON>button in the Combiner main window or double-click the DVP rectangle to edit this channel's attributes; <XREF IDREF="34923" TYPE="GRAPHIC">Figure&nbsp;4-2</XREF> shows the window.</PARAGRAPH>
<PARAGRAPH><FIGURE><GRAPHIC FILE="dvp.gif" POSITION="INLINE" SCALE="FALSE"><CAPTION LBL="4-2"><PREFIX>Figure 4-2 </PREFIX><XREFTARGET ID="34923">DVP Channel Attributes Window </CAPTION>
</FIGURE>
</PARAGRAPH>
<PARAGRAPH>For the DVP channel:</PARAGRAPH>
<BULLETLIST><BULLET><PARAGRAPH>leave Alpha On Blue unchecked<INDEXTARGET ID="cbinr49"><!-- POSTPROCESSDATA: cbinr49|Alpha On Blue:DVP --></PARAGRAPH>
</BULLET>
<BULLET><PARAGRAPH>set the pixel format to RGB12 </PARAGRAPH>
</BULLET>
</BULLETLIST>
<PARAGRAPH>Other features of this window are the same as for channel attributes or Encoder attributes; see the explanations in <XREF IDREF="40493" TYPE="TITLE">Chapter&nbsp;2</XREF> and <XREF IDREF="65296" TYPE="TITLE">Chapter&nbsp;3</XREF> for information.</PARAGRAPH>
</SECTION1>
<SECTION1 LBL="" HELPID = ""><TITLE><XREFTARGET ID="54286">Using the GVO Channel<INDEXTARGET ID="cbinr410"><!-- POSTPROCESSDATA: cbinr410|GVO --></TITLE><PARAGRAPH>If the GVO daughtercard is installed, double-click the <BUTTON>GVO </BUTTON>button in the Combiner main window or double-click the GVO rectangle to edit this channel's attributes; <XREF IDREF="88517" TYPE="GRAPHIC">Figure&nbsp;4-3</XREF> shows the window.</PARAGRAPH>
<PARAGRAPH><FIGURE><GRAPHIC FILE="gvo.gif" POSITION="INLINE" SCALE="FALSE"><CAPTION LBL="4-3"><PREFIX>Figure 4-3 </PREFIX><XREFTARGET ID="88517">GVO Channel Attributes Window </CAPTION>
</FIGURE>
</PARAGRAPH>
<PARAGRAPH>Most features of this window are the same as for channel attributes or Encoder attributes; see the explanations in <XREF IDREF="40493" TYPE="TITLE">Chapter&nbsp;2</XREF> and <XREF IDREF="65296" TYPE="TITLE">Chapter&nbsp;3</XREF> for information.</PARAGRAPH>
<PARAGRAPH>GVO output formats are CCIR601 525 (nonsquare pixel 720 x 486 NTSC resolution) and CCIR601 625 (nonsquare pixel 720 x 576 PAL resolution).</PARAGRAPH>
<PARAGRAPH>For the GVO option:</PARAGRAPH>
<BULLETLIST><BULLET><PARAGRAPH>leave Alpha On Blue unchecked <INDEXTARGET ID="cbinr411"><!-- POSTPROCESSDATA: cbinr411|Alpha On Blue:GVO --></PARAGRAPH>
</BULLET>
<BULLET><PARAGRAPH>in the Global Attributes window, set the external video reference format to either CCIR601 525 or CCIR601 625</PARAGRAPH>
</BULLET>
</BULLETLIST>
</SECTION1>
</CHAPTER>

Binary file not shown.

View File

@@ -0,0 +1,59 @@
<!-- Produced by version 3.14 (11/22/96) of SGI Frame/SGML translator -->
<CHAPTER LBL="5"><TITLE><XREFTARGET ID="45016">Combination Considerations</TITLE><PARAGRAPH>This chapter explains</PARAGRAPH>
<BULLETLIST><BULLET><PARAGRAPH><XREF IDREF="85269" TYPE="TITLE">&ldquo;Trading Off Format Parameters in a Combination&rdquo;</XREF></PARAGRAPH>
</BULLET>
<BULLET><PARAGRAPH><XREF IDREF="97843" TYPE="TITLE">&ldquo;Emergency Backup Combination&rdquo;</XREF></PARAGRAPH>
</BULLET>
</BULLETLIST>
<SECTION1 LBL="" HELPID = ""><TITLE><XREFTARGET ID="85269">Trading Off Format Parameters in a Combination<INDEXTARGET ID="cbinr51"><!-- POSTPROCESSDATA: cbinr51|video format combination:tradeoffs --></TITLE><PARAGRAPH>When you use the Combiner to set video combinations for InfiniteReality's multichannel capability, you must take into account </PARAGRAPH>
<BULLETLIST><BULLET><PARAGRAPH>swap rate</PARAGRAPH>
</BULLET>
<BULLET><PARAGRAPH>transmission bandwidth</PARAGRAPH>
</BULLET>
<BULLET><PARAGRAPH>DAC output bandwidth</PARAGRAPH>
</BULLET>
<BULLET><PARAGRAPH>framebuffer memory and read/write bandwidth</PARAGRAPH>
</BULLET>
</BULLETLIST>
<PARAGRAPH>These procedures are explained in this section.</PARAGRAPH>
<SECTION2 LBL="" HELPID = "Cbinr.swaprate"><TITLE><XREFTARGET ID="61093">Swap Rate<INDEXTARGET ID="cbinr52"><!-- POSTPROCESSDATA: cbinr52|swap rate --></TITLE><PARAGRAPH>All video formats that run together in a video combination must provide time for housekeeping operations such as updating cursor position and glyph, setting parameters for dynamic pixel resampling, and so on. This updating and resampling might be done at field boundaries, frame boundaries, or, in certain cases, across multiple frames. The interval consumed by such housekeeping operations is called the video format's <ITALICS>maximum swap rate</ITALICS>. </PARAGRAPH>
<PARAGRAPH>The swap rate must be the same for all video formats in a combination so that the InfiniteReality Video Display subsystem can perform these housekeeping services for all running video formats at the same time. Generally, the 525 formats imply a 60-Hz swap; the 625 formats imply a 50-Hz swap rate. </PARAGRAPH>
<PARAGRAPH>All of the following formats, which run at 60 Hz, would make up a legal combination:</PARAGRAPH>
<BULLETLIST><BULLET><PARAGRAPH>30-Hz interlaced NTSC (swap rate is the 60 Hz field rate for this format)</PARAGRAPH>
</BULLET>
<BULLET><PARAGRAPH>60-Hz noninterlaced 1280 x 1024</PARAGRAPH>
</BULLET>
<BULLET><PARAGRAPH>120-Hz stereo (swap rate is the 60-Hz frame rate)</PARAGRAPH>
</BULLET>
<BULLET><PARAGRAPH>180-Hz color field sequential (swap rate is the 60-Hz frame rate)</PARAGRAPH>
</BULLET>
</BULLETLIST>
<PARAGRAPH>Examples of illegal combinations are NTSC (60-Hz swap rate) and PAL (50-Hz swap rate), or the 60-Hz and 72-Hz versions of 1280 x 1024. </PARAGRAPH>
<NOTE><PREFIX>Note</PREFIX>Although NTSC really runs at 59.94-Hz field rates, it is close enough to be run with 60-Hz 1280 x 1024. In general, if the swap rates are close enough to allow the video formats to be reliably synchronized to one another, they are considered &ldquo;equal.&rdquo; This tolerance is usually less than 2 percent.</NOTE>
<PARAGRAPH>The swap rate for the video output format for a channel is displayed in its Channel Attributes window. Consult <FILENAME>/usr/gfx/ucode/KONA/dg4/vfo/README</FILENAME> for complete information on each format, including its swap rate.</PARAGRAPH>
</SECTION2>
<SECTION2 LBL="" HELPID = ""><TITLE>Transmission Bandwidth<INDEXTARGET ID="cbinr53"><!-- POSTPROCESSDATA: cbinr53|bandwidth:transmission --></TITLE><PARAGRAPH>Digital video data is sent serially from the InfiniteReality framebuffer to the video subsystem. Each video channel uses a portion of the system's aggregate video transmission bandwidth. The bandwidth each channel requires depends on the resolution of the video output format running on that channel and on the type of video it receives from the framebuffer. The requirements of all video channels must total less than the aggregate video bandwidth of the system. </PARAGRAPH>
<PARAGRAPH>Depending on the number and precision of color components requested from the framebuffer by each video channel, the video transmission bandwidth ranges from approximately 290 million pixels per second (for 10-bit RGB or 12-bit color field-sequential video) to 210 million pixels per second (for 10-bit RGBA or 12-bit RGB video). The digital data stream from the framebuffer to a particular video channel must be of a single type and precision, for example, 10-bit RGB. However, different video channels (and their associated digital video streams from the framebuffer) can be mixed: one channel can request 10-bit RGB, another channel can request 12-bit RGB, and yet another channel can request 10-bit RGBA. </PARAGRAPH>
<PARAGRAPH>The transmission format for video is not the same as the depth of pixels in the framebuffer. Pixel depth (Small, Medium, Large, X&ndash;Large) must be uniform across the entire managed area of the framebuffer. As explained in the preceding paragraph, the format of the colors transmitted as video from the framebuffer to the video display subsystem can vary for each channel to conserve the aggregate video transmission bandwidth. </PARAGRAPH>
<PARAGRAPH>Framebuffer memory stores a lot of nonvideo information about each pixel (like multisample and Z information); the color fields are a subset of the framebuffer pixel storage. Thus, it is important to distinguish between the framebuffer representation of pixels and the format selected for video transmission to the video display subsystem so as to understand and optimize the performance of both the framebuffer memory and the video display subsystem.</PARAGRAPH>
<NOTE><PREFIX>Note</PREFIX>The total framebuffer-to-video-subsystem bandwidth is independent of the number of RM boards in the system.</NOTE>
</SECTION2>
<SECTION2 LBL="" HELPID = ""><TITLE><XREFTARGET ID="65212">DAC Output Bandwidth<INDEXTARGET ID="cbinr54"><!-- POSTPROCESSDATA: cbinr54|bandwidth:DAC output --></TITLE><PARAGRAPH>The DACs of the first two video channels, 0 and 1, have a bandwidth limit of 220 million pixels per second; the remaining six have a bandwidth limit of 170 million pixels per second. Because of each channel's dynamic resampling capability, the actual video resolution as output by the DAC (and seen by the display monitor connected to the channel) can be higher than the resolution of the rectangular region of the framebuffer assigned to that channel. Therefore, in a video format combination, always assign the video formats with the highest bandwidth video to Channels 0 and 1.</PARAGRAPH>
<PARAGRAPH>Dynamic resampling can be used to statically resample a region of the framebuffer area, allowing a smaller region of the framebuffer to be enlarged (zoomed) to fit the resolution of the video format of the video channel assigned to that region of the framebuffer. This feature facilitates efficient use of framebuffer memory without requiring nonstandard video formats.</PARAGRAPH>
</SECTION2>
<SECTION2 LBL="" HELPID = ""><TITLE><XREFTARGET ID="58673">Framebuffer Memory and Read/Write Bandwidth<INDEXTARGET ID="cbinr55"><!-- POSTPROCESSDATA: cbinr55|bandwidth:read/writeframebuffer:and read/write bandwidth --></TITLE><PARAGRAPH>A video format combination must all be able to tile rectangular subregions of a rectangular framebuffer. Depending on the depth of the pixels selected and the number of RM boards installed, some combinations can require more than one RM board. When specifying the framebuffer pixel depth, take into account the quality of multisampling, the precision of the z-buffer, RGB component resolution, and total fill-rate requirement of the application.</PARAGRAPH>
<PARAGRAPH>Although adding RM boards does not increase the total framebuffer-to-video subsystem bandwidth, it does increase the total drawing fill rate available and amortizes the video refresh overhead over the additional RM boards, leaving more fill capacity available for drawing.</PARAGRAPH>
<PARAGRAPH>Finally, refreshing the video channels entails considerable overhead for the framebuffer. The greater the number and resolution of video channels, the more the pixel fill rate of the framebuffer is reduced. A particular combination of formats might fit into a one- or two-RM configuration, but it also might reduce the fill rate unacceptably.</PARAGRAPH>
<PARAGRAPH>If the combination uses too much bandwidth, you can reduce the size of the input image, but what is sent to the monitor is not changed. This technique is useful if you are using a fixed-frequency monitor that supports only certain formats. </PARAGRAPH>
</SECTION2>
</SECTION1>
<SECTION1 LBL="" HELPID = ""><TITLE><XREFTARGET ID="97843">Emergency Backup Combination</TITLE><PARAGRAPH>The InfiniteReality system software includes an Emergency Backup Combination (EBC). If the system software cannot load a combination during the boot process because the combination saved to the EEPROM is not valid (for example, if it exceeds the capacity of the system), it uses the EBC.<INDEXTARGET ID="cbinr56"><!-- POSTPROCESSDATA: cbinr56|Emergency Backup Combination --><INDEXTARGET ID="cbinr57"><!-- POSTPROCESSDATA: cbinr57|EEPROM:and Emergency Backup Combination --></PARAGRAPH>
<PARAGRAPH>The EBC is a video format combination consisting of the minimum configuration possible: one RM board, two channels, no option boards, and one video format, 1280x1024_60, on Channel 0. This file is editable only by Silicon Graphics engineering personnel.</PARAGRAPH>
<PARAGRAPH>If the InfiniteReality system is using the EBC, load the EEPROM with a combination you prefer:</PARAGRAPH>
<ORDEREDLIST><LIST><PARAGRAPH>In the File menu, select &ldquo;Open...&rdquo; and specify the filename.</PARAGRAPH>
</LIST>
<LIST><PARAGRAPH>In the File menu, select &ldquo;Save to EEPROM...&rdquo;.</PARAGRAPH>
</LIST>
</ORDEREDLIST>
</SECTION1>
</CHAPTER>

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,221 @@
<!-- Produced by version 3.14 (11/22/96) of SGI Frame/SGML translator -->
<APPENDIX LBL="A"><TITLE><XREFTARGET ID="72738">Tutorial</TITLE><PARAGRAPH>This appendix consists of example exercises designed to demonstrate tasks you can perform using the Combiner. It consists of these sections:</PARAGRAPH>
<BULLETLIST><BULLET><PARAGRAPH><XREF IDREF="96187" TYPE="TITLE">&ldquo;Reinitializing Graphics&rdquo;</XREF></PARAGRAPH>
</BULLET>
<BULLET><PARAGRAPH><XREF IDREF="33372" TYPE="TITLE">&ldquo;Modifying Video Formats&rdquo;</XREF></PARAGRAPH>
</BULLET>
<BULLET><PARAGRAPH><XREF IDREF="10921" TYPE="TITLE">&ldquo;Saving Video Format Combinations to the EEPROM&rdquo;</XREF></PARAGRAPH>
</BULLET>
<BULLET><PARAGRAPH><XREF IDREF="54912" TYPE="TITLE">&ldquo;Resizing a Single-Channel Combination&rdquo;</XREF></PARAGRAPH>
</BULLET>
<BULLET><PARAGRAPH><XREF IDREF="89717" TYPE="TITLE">&ldquo;Redisplaying Graphics&rdquo;</XREF></PARAGRAPH>
</BULLET>
</BULLETLIST>
<PARAGRAPH>The instructions for redisplaying graphics are included in case the monitor stops displaying video during one of the examples (or at any other time).</PARAGRAPH>
<SECTION1 LBL="" HELPID = ""><TITLE><XREFTARGET ID="96187">Reinitializing Graphics </TITLE><PARAGRAPH>The example exercises in this appendix are based on the assumption that a Silicon Graphics multisync 21-inch monitor is connected to Channel 0. If the monitor attached to Channel 0 is unable to sync to any of the formats used in the example, it ceases displaying video. </PARAGRAPH>
<PARAGRAPH>The first time InfiniteReality graphics was initialized, or during the first power-on of the system with InfiniteReality graphics installed, the video output was defined for the channels available on the workstation. To reinitialize graphics, enter</PARAGRAPH>
<EXAMPLE>
<USERINPUT>(/usr/gfx/stopgfx ; /usr/gfx/startgfx) &amp;</USERINPUT>&space;
</EXAMPLE>
<PARAGRAPH>at the IRIX prompt. Note that the parentheses are necessary. </PARAGRAPH>
<PARAGRAPH><XREF IDREF="46466" TYPE="GRAPHIC">Figure&nbsp;A-1</XREF> shows an example of the main window interface.</PARAGRAPH>
<!-- RASTERCONVERT: cbinra.cgm -->
<PARAGRAPH><FIGURE>&space;<GRAPHIC FILE="cbinra-1.gif" POSITION="INLINE" SCALE="FALSE"><CAPTION LBL="A-1"><PREFIX>Figure A-1 </PREFIX><XREFTARGET ID="46466">Combiner Main Window </CAPTION>
</FIGURE>
</PARAGRAPH>
<PARAGRAPH>Each example starts from the Combiner's main window.</PARAGRAPH>
</SECTION1>
<SECTION1 LBL="" HELPID = ""><TITLE><XREFTARGET ID="33372">Modifying Video Formats </TITLE><PARAGRAPH>This exercise consists of</PARAGRAPH>
<BULLETLIST><BULLET><PARAGRAPH><XREF IDREF="59684" TYPE="TITLE">&ldquo;Performing Steps to Avoid a Reboot&rdquo;</XREF></PARAGRAPH>
</BULLET>
<BULLET><PARAGRAPH><XREF IDREF="81124" TYPE="TITLE">&ldquo;Selecting a Video Format for Channel 0&rdquo;</XREF></PARAGRAPH>
</BULLET>
<BULLET><PARAGRAPH><XREF IDREF="68617" TYPE="TITLE">&ldquo;Selecting a Video Format for Channel 1&rdquo;</XREF></PARAGRAPH>
</BULLET>
</BULLETLIST>
<PARAGRAPH>Each procedure is explained in a separate section.</PARAGRAPH>
<SECTION2 LBL="" HELPID = ""><TITLE><XREFTARGET ID="59684">Performing Steps to Avoid a Reboot</TITLE><PARAGRAPH>Before modifying and downloading new video format combinations, you can avoid having to reboot the graphics system if you select a combination of window sizes that do not encompass the Combiner main window controls or an IRIX shell window. Follow these steps:</PARAGRAPH>
<ORDEREDLIST><LIST><PARAGRAPH>Bring up an IRIX shell window and reduce it to 80 x 24 using the size option on the pulldown menu from the right mouse button.</PARAGRAPH>
</LIST>
<LIST><PARAGRAPH>Drag the IRIX shell to the lower left corner of the screen.</PARAGRAPH>
</LIST>
<LIST><PARAGRAPH>Launch the Combiner main window. </PARAGRAPH>
</LIST>
<LIST><PARAGRAPH>Position the Combiner's main window in the upper left corner of the screen.</PARAGRAPH>
</LIST>
<LIST><PARAGRAPH>Resize the Combiner's main window so that none of the IRIX shell window is covered: click the lower right corner of the Combiner main window and move it upward. </PARAGRAPH>
</LIST>
</ORDEREDLIST>
</SECTION2>
<SECTION2 LBL="" HELPID = ""><TITLE><XREFTARGET ID="81124">Selecting a Video Format for Channel 0</TITLE><PARAGRAPH>To select the first channel to modify (Channel 0), follow these steps:</PARAGRAPH>
<ORDEREDLIST><LIST><PARAGRAPH>Click <BUTTON>Ch0</BUTTON> in the Combiner main window. This selection corresponds to the <HARDWARELABEL>Chan0</HARDWARELABEL> connection on the InfiniteReality system's I/O panel.</PARAGRAPH>
</LIST>
<LIST><PARAGRAPH>In the Select Format window that appears, select the <FILENAME>640x480_60.vfo</FILENAME> file as the video format for that channel; see <XREF IDREF="20731" TYPE="GRAPHIC">Figure&nbsp;A-2</XREF>. </PARAGRAPH>
<PARAGRAPH><FIGURE><GRAPHIC FILE="newchan.tut.gif" POSITION="INLINE" SCALE="FALSE"><CAPTION LBL="A-2"><PREFIX>Figure A-2 </PREFIX><XREFTARGET ID="20731">Selecting a Channel Format </CAPTION>
</FIGURE>
</PARAGRAPH>
</LIST>
<LIST><PARAGRAPH>Click <BUTTON>OK</BUTTON>. The Ch0 rectangle appears in the Combiner's main window. </PARAGRAPH>
</LIST>
<LIST><PARAGRAPH>Associate Channel 0 with the IRIX shell window at the lower left:</PARAGRAPH>
<BULLETLISTIND><BULLETSQUAREIND><PARAGRAPH>Select &ldquo;Grab window...&rdquo; in the Channel menu. A crosshatch cursor appears.</PARAGRAPH>
</BULLETSQUAREIND>
<BULLETSQUAREIND><PARAGRAPH>Move the crosshatch cursor to the IRIX shell at the lower left of the screen and click the left or right mouse button.</PARAGRAPH>
</BULLETSQUAREIND>
</BULLETLISTIND>
<PARAGRAPH>The Combiner uses the position and size of the IRIX shell for Channel 0.</PARAGRAPH>
</LIST>
</ORDEREDLIST>
</SECTION2>
<SECTION2 LBL="" HELPID = ""><TITLE><XREFTARGET ID="68617">Selecting a Video Format for Channel 1</TITLE><PARAGRAPH>Select and modify Channel 1 using the following steps:</PARAGRAPH>
<ORDEREDLIST><LIST><PARAGRAPH>Click <BUTTON>Ch1</BUTTON> on the main window. </PARAGRAPH>
</LIST>
<LIST><PARAGRAPH>In the Select Format window that appears, select the <FILENAME>640x480_60.vfo</FILENAME> file. </PARAGRAPH>
</LIST>
<LIST><PARAGRAPH>Click <BUTTON>OK</BUTTON>. A Channel 1 (Ch1) rectangle appears in the upper left portion of the Combiner main window.</PARAGRAPH>
<NOTE><PREFIX>Note</PREFIX>In this example, you set the origin of Channel 1 precisely to (4,10). You could do this by clicking on the line of the rectangle and dragging it, as you did for Channel 0. However, in this exercise you specify the Ch1 origin numerically by editing the Ch1 attributes in the following steps.</NOTE>
</LIST>
<LIST><PARAGRAPH>Bring up the Attributes window by double-clicking the <BUTTON>Ch1</BUTTON> button in the Combiner main window. The Channel 1 Attributes window appears, as shown in <XREF IDREF="87068" TYPE="GRAPHIC">Figure&nbsp;A-3</XREF>.</PARAGRAPH>
<PARAGRAPH><FIGURE><GRAPHIC FILE="chattribs1.gif" POSITION="INLINE" SCALE="FALSE"><CAPTION LBL="A-3"><PREFIX>Figure A-3 </PREFIX><XREFTARGET ID="87068">Channel Attributes Window</CAPTION>
</FIGURE>
</PARAGRAPH>
</LIST>
<LIST><PARAGRAPH>Replace the value in the left Origin box (the x-origin box) with <USERINPUT>4</USERINPUT> and press <USERINPUT>Enter</USERINPUT>. Move to the right Origin box (the y-origin box) and replace the value with <USERINPUT>10</USERINPUT> and press <USERINPUT>Enter</USERINPUT>. Click <BUTTON>Close</BUTTON> to close the Channel 1 Attributes window.</PARAGRAPH>
<PARAGRAPH><XREF IDREF="83791" TYPE="GRAPHIC">Figure&nbsp;A-4</XREF> shows Channels 0 and 1 in the Combiner main window.</PARAGRAPH>
<PARAGRAPH><FIGURE><GRAPHIC FILE="main.tut1.gif" POSITION="INLINE" SCALE="FALSE"><CAPTION LBL="A-4"><PREFIX>Figure A-4 </PREFIX><XREFTARGET ID="83791">Combiner Main Window With Channels 0 and 1</CAPTION>
</FIGURE>
</PARAGRAPH>
</LIST>
<LIST><PARAGRAPH>In the Combiner main window, click <BUTTON>Download combination</BUTTON>. </PARAGRAPH>
</LIST>
</ORDEREDLIST>
<PARAGRAPH>At this point, the video system is displaying the configuration specified in the exercise just completed: </PARAGRAPH>
<BULLETLIST><BULLET><PARAGRAPH>Channel 0 is displaying the lower left portion of the framebuffer where you originally placed the IRIX shell window. </PARAGRAPH>
</BULLET>
<BULLET><PARAGRAPH>Channel 1 is positioned according to your entries in the Channel 1 Attributes window.</PARAGRAPH>
</BULLET>
</BULLETLIST>
<PARAGRAPH>To return to the 1280 x 1024 video output, enter <USERINPUT>/usr/gfx/setmon -n</USERINPUT>&space;<USERINPUT>1280x1024_72 </USERINPUT>in the IRIX shell window. </PARAGRAPH>
<PARAGRAPH>Go on to the next example or close the Combiner's main window.</PARAGRAPH>
</SECTION2>
</SECTION1>
<SECTION1 LBL="" HELPID = ""><TITLE><XREFTARGET ID="10921">Saving Video Format Combinations to the EEPROM</TITLE><PARAGRAPH>Before starting this exercise, be sure to read the information in <XREF IDREF="96187" TYPE="TITLE">&ldquo;Reinitializing Graphics&rdquo;</XREF>. &ldquo;Reinitializing Graphics and Starting Combiner&rdquo;</PARAGRAPH>
<PARAGRAPH>This example assumes that the Combiner main window is open. If it is not, follow the instructions at the beginning of this appendix. </PARAGRAPH>
<PARAGRAPH>In the Combiner main window, select &ldquo;New&rdquo; from the File pulldown menu. Then click <BUTTON>OK</BUTTON> in the warning box. You are now ready to create and save a new video format combination to the EEPROM. The video format consists of two channels; each one is a <FILENAME>960x680_60.vfo</FILENAME> format. Use the following steps to make and save all the changes:</PARAGRAPH>
<ORDEREDLIST><LIST><PARAGRAPH>Click <BUTTON>Edit globals</BUTTON> in the main window's bottom right corner. The Combination Attributes window appears, as shown in <XREF IDREF="45797" TYPE="GRAPHIC">Figure&nbsp;A-5</XREF>.</PARAGRAPH>
<PARAGRAPH><FIGURE><GRAPHIC FILE="globattribs.gif" POSITION="INLINE" SCALE="FALSE"><CAPTION LBL="A-5"><PREFIX>Figure A-5 </PREFIX><XREFTARGET ID="45797">Combination Attributes Window </CAPTION>
</FIGURE>
</PARAGRAPH>
</LIST>
<LIST><PARAGRAPH>Change the Managed Area fields at the top of the Combination Attributes window to read 1000 in the left-hand box and 680 in the right-hand box. These actions redefine the allocated part of the managed area so that it is smaller than the managed area.</PARAGRAPH>
<PARAGRAPH>The Combiner always shows the allocated area to make it clear that memory is being made inaccessible if the managed area size differs from that of the allocated area. The red line that appears indicates the boundary of the allocated area. <INDEXTARGET ID="cbinra1"><!-- POSTPROCESSDATA: cbinra1|red line --></PARAGRAPH>
<PARAGRAPH>The area to the right of the red line represents unallocated memory; this part of the managed area is inaccessible, and the Combiner does not permit you to position channels in that area (until you redefine the managed area in the Combination Attributes window).</PARAGRAPH>
</LIST>
<LIST><PARAGRAPH>Click the Combination Attributes window's <BUTTON>Close</BUTTON> button. </PARAGRAPH>
</LIST>
<LIST><PARAGRAPH>Click <BUTTON>Ch1</BUTTON> in the Combiner's main window. The Select Format box appears.</PARAGRAPH>
</LIST>
<LIST><PARAGRAPH>Find and double-click the <FILENAME>960x680_60.vfo</FILENAME> file format. An error message appears at the lower left corner of the Combiner's main window, as shown in <XREF IDREF="56845" TYPE="GRAPHIC">Figure&nbsp;A-6</XREF>: &ldquo;Textport channel Ch0 invalid.&rdquo; </PARAGRAPH>
<PARAGRAPH><FIGURE><GRAPHIC FILE="textpt.chan.err.gif" POSITION="INLINE" SCALE="FALSE"><CAPTION LBL="A-6"><PREFIX>Figure A-6 </PREFIX><XREFTARGET ID="56845">Textport Error Message on the Main Window</CAPTION>
</FIGURE>
</PARAGRAPH>
<PARAGRAPH>When this or any other error message appears in the main window, you cannot use the Download combination or Save to EEPROM functions. In this example, the error condition goes away after you define Ch0. </PARAGRAPH>
</LIST>
<LIST><PARAGRAPH>Click and drag the Channel 1 box on the main window to the right until it is blocked by the red vertical line. </PARAGRAPH>
</LIST>
<LIST><PARAGRAPH>Click <BUTTON>Ch0</BUTTON> in the Combiner main window. </PARAGRAPH>
</LIST>
<LIST><PARAGRAPH>In the Select Formats box that appears, find and double-click the <FILENAME>960x680_60.vfo</FILENAME> file format. </PARAGRAPH>
<PARAGRAPH>At this point, you have specified a video format combination with two video formats that are both equal to 960x680_60. The two channels are slightly offset but mostly overlapping, as shown in <XREF IDREF="47465" TYPE="GRAPHIC">Figure&nbsp;A-7</XREF>.</PARAGRAPH>
<PARAGRAPH><FIGURE>&space;<GRAPHIC FILE="overlap.gif" POSITION="INLINE" SCALE="FALSE"><CAPTION LBL="A-7"><PREFIX>Figure A-7 </PREFIX><XREFTARGET ID="47465">Combiner Main Window With Overlapping Channels </CAPTION>
</FIGURE>
</PARAGRAPH>
</LIST>
<LIST><PARAGRAPH>In the File pulldown menu in the Combiner's main window, select &ldquo;Save to EEPROM.&rdquo; </PARAGRAPH>
</LIST>
<LIST><PARAGRAPH>In the Saving to hardware dialog box that appears, click <BUTTON>Download</BUTTON> (see <XREF IDREF="52846" TYPE="GRAPHIC">Figure&nbsp;A-8</XREF>).</PARAGRAPH>
<PARAGRAPH><FIGURE><GRAPHIC FILE="save2hw.gif" POSITION="INLINE" SCALE="FALSE"><CAPTION LBL="A-8"><PREFIX>Figure A-8 </PREFIX><XREFTARGET ID="52846">Saving to Hardware Dialog Box </CAPTION>
</FIGURE>
</PARAGRAPH>
<PARAGRAPH>The format combination is now loaded in the EEPROM, but it does not take effect until the graphics subsystem is restarted.</PARAGRAPH>
</LIST>
<LIST><PARAGRAPH>In the File pulldown menu in the main window, select &ldquo;Exit.&rdquo;</PARAGRAPH>
</LIST>
<LIST><PARAGRAPH>Click <BUTTON>OK</BUTTON> when the Warning dialog box appears (see <XREF IDREF="96245" TYPE="GRAPHIC">Figure&nbsp;A-9</XREF>).</PARAGRAPH>
<PARAGRAPH><FIGURE><GRAPHIC FILE="exitwarng.gif" POSITION="INLINE" SCALE="FALSE"><CAPTION LBL="A-9"><PREFIX>Figure A-9 </PREFIX><XREFTARGET ID="96245">Exit Warning Dialog Box </CAPTION>
</FIGURE>
</PARAGRAPH>
</LIST>
<LIST><PARAGRAPH><XREFTARGET ID="76356">Enter the following in the IRIX shell window to restart system graphics:</PARAGRAPH>
<EXAMPLE>
<USERINPUT>(/usr/gfx/stopgfx ; /usr/gfx/startgfx) &amp;</USERINPUT>.
</EXAMPLE>
</LIST>
<LIST><PARAGRAPH>When the Login window appears, log in as root (superuser). The video system is now outputting a 960x680_60 format on Channels 0 and 1.</PARAGRAPH>
<PARAGRAPH>The video system retains this configuration even after rebooting because the 960x680_60 Video Format Combination is saved in the EEPROM.</PARAGRAPH>
</LIST>
</ORDEREDLIST>
<PARAGRAPH>To reset the EEPROM to the standard 1280 x 1024 format combination, enter <USERINPUT>/usr/gfx/setmon -n 1280x1024_72</USERINPUT> at the IRIX prompt. Then restart the graphics system (as in step 13) to activate the format combination reset. When the Login window appears, log in as root.</PARAGRAPH>
</SECTION1>
<SECTION1 LBL="" HELPID = ""><TITLE><XREFTARGET ID="54912">Resizing a Single-Channel Combination </TITLE><PARAGRAPH>Before starting this exercise, be sure to read the information in <XREF IDREF="96187" TYPE="TITLE">&ldquo;Reinitializing Graphics&rdquo;</XREF>. &ldquo;Reinitializing Graphics and Starting Combiner&rdquo;</PARAGRAPH>
<PARAGRAPH>In this final example, you create a single-channel combination that is &ldquo;static resized&rdquo; and is saved to and loaded from a combination file. Follow these steps:</PARAGRAPH>
<ORDEREDLIST><LIST><PARAGRAPH>Open an IRIX shell window, click the right mouse button and use the Size pulldown menu to change the shell to 80 x 24.</PARAGRAPH>
</LIST>
<LIST><PARAGRAPH>Place the 80 x 24 shell window behind the Video Format Combiner main window, but make sure the command-line prompt is visible.</PARAGRAPH>
</LIST>
<LIST><PARAGRAPH>Click <BUTTON>Ch0</BUTTON> on the Combiner's main window. The Select Format window appears.</PARAGRAPH>
</LIST>
<LIST><PARAGRAPH>Find and double-click the <FILENAME>1280x1024_72.vfo</FILENAME> file. The Channel 0 (Ch0) rectangle fills the entire 1280 x 1024 managed area in the main window.</PARAGRAPH>
</LIST>
<LIST><PARAGRAPH>In the Channel pulldown menu, select &ldquo;Grab Window.&rdquo; The cursor turns into a cross.</PARAGRAPH>
</LIST>
<LIST><PARAGRAPH><XREFTARGET ID="85313">Move the cross (cursor) into the IRIX shell window and click the mouse button. The rectangle in the Combiner's main window representing Ch0 now represents the area of the framebuffer covered by the 80 x 24 IRIX shell that you clicked in. See <XREF IDREF="26019" TYPE="GRAPHIC">Figure&nbsp;A-10</XREF> for a screen example.</PARAGRAPH>
<NOTE><PREFIX>Note</PREFIX>This area becomes resized to fit the entire Channel 0 output when the combination is loaded. You can resize a channel's input area by clicking and dragging any of the four corners of its main window rectangle. That resizing method is not covered in this exercise.</NOTE>
<CAUTION><PREFIX>Caution</PREFIX>Do not move the IRIX shell window until you complete this exercise.</CAUTION>
<!-- RASTERCONVERT: cbinra.cgm10 -->
<PARAGRAPH><FIGURE>&space;<GRAPHIC FILE="cbinra-10.gif" POSITION="INLINE" SCALE="FALSE"><CAPTION LBL="A-10"><PREFIX>Figure A-10 </PREFIX><XREFTARGET ID="26019">Static Resize Selection</CAPTION>
</FIGURE>
</PARAGRAPH>
</LIST>
<LIST><PARAGRAPH>From the File pulldown menu in the Combiner main window, select &ldquo;Save As.&rdquo; The Save Combination window appears (see <XREF IDREF="70973" TYPE="GRAPHIC">Figure&nbsp;A-11</XREF>).</PARAGRAPH>
<PARAGRAPH><FIGURE>&space;<GRAPHIC FILE="savecombo.gif" POSITION="INLINE" SCALE="FALSE"><CAPTION LBL="A-11"><PREFIX>Figure A-11 </PREFIX><XREFTARGET ID="70973">Save a Combination</CAPTION>
</FIGURE>
</PARAGRAPH>
</LIST>
<LIST><PARAGRAPH>In the &ldquo;Save combination as&rdquo; field, type <USERINPUT>test.cmb</USERINPUT> at the end of the path and click <BUTTON>OK</BUTTON>. </PARAGRAPH>
</LIST>
<LIST><PARAGRAPH>Select &ldquo;Exit&rdquo; from the File pulldown menu in the Combiner's main window.</PARAGRAPH>
</LIST>
<LIST><PARAGRAPH>In the shell window you clicked in step 6, enter </PARAGRAPH>
<EXAMPLE>
<USERINPUT>/usr/gfx/setmon -n</USERINPUT>&space;<USERINPUT>test</USERINPUT>&space;
</EXAMPLE>
<PARAGRAPH>The screen blanks momentarily and then displays the IRIX shell window resized to 1280 x 1024 (the entire screen display).</PARAGRAPH>
<NOTE><PREFIX>Note</PREFIX>If no usable window appears, you can recover the default video display combination following the instructions in <XREF IDREF="89717" TYPE="TITLE">&ldquo;Redisplaying Graphics&rdquo;</XREF>&ldquo;Redisplaying Graphics&rdquo;.</NOTE>
</LIST>
<LIST><PARAGRAPH>Revert to the previous display configuration by entering <USERINPUT>/usr/gfx/setmon -n 1280x1024_72</USERINPUT>. The entire screen should reappear in the standard 1280 x 1024 format.</PARAGRAPH>
</LIST>
<LIST><PARAGRAPH>Select &ldquo;Exit&rdquo; from the File pulldown menu on the Combiner's main window to conclude the exercise.</PARAGRAPH>
</LIST>
</ORDEREDLIST>
</SECTION1>
<SECTION1 LBL="" HELPID = ""><TITLE><XREFTARGET ID="89717">Redisplaying Graphics</TITLE><PARAGRAPH>If the monitor should stop displaying video during one of the examples or during any other type of Combiner use, the following steps should provide a solution:</PARAGRAPH>
<ORDEREDLIST><LIST><PARAGRAPH>Connect a monitor to Channel 0 that can display the required format(s). If video is still not visible, go on to step 2.</PARAGRAPH>
</LIST>
<LIST><PARAGRAPH>Log in to the system remotely or connect an ASCII terminal to serial port tty_1, if possible. Become superuser (root) and enter the command </PARAGRAPH>
<EXAMPLE>
<USERINPUT>/usr/gfx/setmon -n 72</USERINPUT>&space;
</EXAMPLE>
<PARAGRAPH>If this does not work, enter </PARAGRAPH>
<PARAGRAPH><USERINPUT>/usr/gfx/setmon -x 72</USERINPUT>&space;</PARAGRAPH>
<PARAGRAPH>Restart the graphics by entering </PARAGRAPH>
<PARAGRAPH><USERINPUT>(/usr/gfx/stopgfx ; /usr/gfx/startgfx) &amp;</USERINPUT>. </PARAGRAPH>
</LIST>
<LIST><PARAGRAPH>Reboot the system using the System Controller if the first two steps do not work. If, after rebooting, the video still does not display, wait for several minutes and go to the next step for an additional process.</PARAGRAPH>
</LIST>
<LIST><PARAGRAPH>Enter <USERINPUT>1</USERINPUT>; attempt to reboot the system to single user by entering <USERINPUT>/usr/gfx/setmon -x 72 </USERINPUT>(even though you are unable to see any screen display of your inputs). When you believe you have succeeded, reboot again.</PARAGRAPH>
</LIST>
</ORDEREDLIST>
<PARAGRAPH>Call your Onyx service provider for additional information and assistance if these steps do not restore your system's video output.</PARAGRAPH>
</SECTION1>
</APPENDIX>

Binary file not shown.

View File

@@ -0,0 +1,199 @@
<!-- Produced by version 3.14 (11/22/96) of SGI Frame/SGML translator -->
<APPENDIX LBL="B"><TITLE><XREFTARGET ID="85370">Error Messages<INDEXTARGET ID="cbinrb1"><!-- POSTPROCESSDATA: cbinrb1|error messages --></TITLE><PARAGRAPH>This appendix presents Video Format Combiner error messages, which appear near the bottom of the Combiner main window.</PARAGRAPH>
<ERRORMSG><MSG>External sync format maximum swap rate does not match other channels
</MSG>
<EXPLANATION><PARAGRAPH>The maximum swap rate in the format specified as the external sync format (that is, the glXSwapBuffers rate that the application could run at in this combination) must match the maximum swap rate of the output channels. Select a sync format that has the same maximum swap rate as the other channels or vice versa; see also <XREF IDREF="61093" TYPE="TITLE">&ldquo;Swap Rate&rdquo;</XREF>.</PARAGRAPH>
</EXPLANATION>
</ERRORMSG>
<ERRORMSG><MSG>External sync source does not have a unique sync signature
</MSG>
<EXPLANATION><PARAGRAPH>The video format you have chosen as the sync format (see <XREF IDREF="45053" TYPE="TITLE">&ldquo;Setting Sync Source and Format&rdquo;</XREF>) cannot be used as a sync input because it does not have a unique signature. Choose a different format for input sync.</PARAGRAPH>
</EXPLANATION>
</ERRORMSG>
<ERRORMSG><MSG>External sync source requires a sync format
</MSG>
<EXPLANATION><PARAGRAPH>In the Global Attributes window, set a sync format for the external sync.</PARAGRAPH>
</EXPLANATION>
</ERRORMSG>
<ERRORMSG><MSG>Illegal cursor priority on channel &lt;channel>. 0 is top priority
Illegal cursor priority on channel &lt;channel>. 255 is lowest priority
</MSG>
<EXPLANATION><PARAGRAPH>Reset the cursor priority for the channel.</PARAGRAPH>
</EXPLANATION>
</ERRORMSG>
<ERRORMSG><MSG>Illegal Pixel Format
</MSG>
<EXPLANATION><PARAGRAPH>This channel is incapable of outputting the pixel format selected for this channel in the Channel Attributes window. Consult the equipment documentation and select an appropriate pixel format.</PARAGRAPH>
</EXPLANATION>
</ERRORMSG>
<ERRORMSG><MSG>Illegal Textport channel number (%d)
</MSG>
<EXPLANATION><PARAGRAPH>You have selected a channel to serve as textport that is dependent on another channel.</PARAGRAPH>
</EXPLANATION>
</ERRORMSG>
<ERRORMSG><MSG>Managed area must have positive, greater than zero size
</MSG>
<EXPLANATION><PARAGRAPH>Internal Combiner error; contact Silicon Graphics technical support.</PARAGRAPH>
</EXPLANATION>
</ERRORMSG>
<ERRORMSG><MSG>Managed Area height must be less than &lt;number> pixels
Managed Area must be less than &lt;number> pixels total
Managed Area width must be less than &lt;number> pixels
</MSG>
<EXPLANATION><PARAGRAPH>In the Global Attributes window, respecify the dimensions of the managed area to be within the values specified.</PARAGRAPH>
</EXPLANATION>
</ERRORMSG>
<ERRORMSG><MSG>Managed Area too large, and/or pixel size too big given &lt;number> RM6's
</MSG>
<EXPLANATION><PARAGRAPH>The combination requires more RM6 boards than are available on the system on which you are running the combination. Reduce the size of the managed area or the pixel size; see <XREF IDREF="70537" TYPE="TITLE">&ldquo;Changing Global Attributes for Combinations&rdquo;</XREF>.</PARAGRAPH>
</EXPLANATION>
</ERRORMSG>
<ERRORMSG><MSG>Maximum tiles per request less than 1
</MSG>
<EXPLANATION><PARAGRAPH>Internal Combiner error; contact Silicon Graphics technical support.</PARAGRAPH>
</EXPLANATION>
</ERRORMSG>
<ERRORMSG><MSG>Maximum swap rate must be greater than 0 swaps per second
</MSG>
<EXPLANATION><PARAGRAPH>Internal Combiner error; contact Silicon Graphics technical support.</PARAGRAPH>
</EXPLANATION>
</ERRORMSG>
<ERRORMSG><MSG>Maximum swap rates on all channels must be the same
</MSG>
<EXPLANATION><PARAGRAPH>In the Channel Attributes window for each channel, check the swap rate. Select formats so that the swap rates match; see <XREF IDREF="61093" TYPE="TITLE">&ldquo;Swap Rate&rdquo;</XREF>.</PARAGRAPH>
</EXPLANATION>
</ERRORMSG>
<ERRORMSG><MSG>Need &lt;number> RM6 boards
</MSG>
<EXPLANATION><PARAGRAPH>This combination requires the specified number of additional RM6 boards.</PARAGRAPH>
</EXPLANATION>
</ERRORMSG>
<ERRORMSG><MSG>No channels enabled
</MSG>
<EXPLANATION><PARAGRAPH>You must specify at least one channel to create a combination.</PARAGRAPH>
</EXPLANATION>
</ERRORMSG>
<ERRORMSG><MSG>Only the Encoder or Sirius Video channels can be dependent
</MSG>
<EXPLANATION><PARAGRAPH>You have specified an invalid channel as a dependent channel.</PARAGRAPH>
</EXPLANATION>
</ERRORMSG>
<ERRORMSG><MSG>Textport channel &lt;channel> invalid
</MSG>
<EXPLANATION><PARAGRAPH>The channel you have selected as a textport channel cannot support this task.</PARAGRAPH>
</EXPLANATION>
</ERRORMSG>
<ERRORMSG><MSG>too many channels: specified hardware supports 2 channels
</MSG>
<EXPLANATION><PARAGRAPH>The combination requires more than two channels, but the system on which you wish to run it has only two.</PARAGRAPH>
</EXPLANATION>
</ERRORMSG>
<ERRORMSG><MSG>Video bandwidth exceeded
</MSG>
<EXPLANATION><PARAGRAPH>Reduce the bandwidth consumed by dropping a channel from the combination or by reducing the size of one or more channels.</PARAGRAPH>
</EXPLANATION>
</ERRORMSG>
<ERRORMSG><MSG>&lt;channel> and &lt;channel> channels cannot be enabled together
</MSG>
<EXPLANATION><PARAGRAPH>The two channels specified cannot be used simultaneously because they are incompatible.</PARAGRAPH>
</EXPLANATION>
</ERRORMSG>
<ERRORMSG><MSG>&lt;channel> channel cannot request its own data
</MSG>
<EXPLANATION><PARAGRAPH>Internal Combiner error; contact Silicon Graphics technical support.</PARAGRAPH>
</EXPLANATION>
</ERRORMSG>
<ERRORMSG><MSG>&lt;channel> channel format too fast for this channel
</MSG>
<EXPLANATION><PARAGRAPH>This channel is incapable of outputting the video format selected for this channel in the Channel Attributes window. See <XREF IDREF="65212" TYPE="TITLE">&ldquo;DAC Output Bandwidth&rdquo;</XREF> and select an appropriate pixel format.</PARAGRAPH>
</EXPLANATION>
</ERRORMSG>
<ERRORMSG><MSG>&lt;channel> channel format must have at least 1 field
</MSG>
<EXPLANATION><PARAGRAPH>You have selected an invalid video format; choose another.</PARAGRAPH>
</EXPLANATION>
</ERRORMSG>
<ERRORMSG><MSG>&lt;channel> channel format must have less than &lt;number> fields
</MSG>
<EXPLANATION><PARAGRAPH>You have selected an invalid video format; choose another.</PARAGRAPH>
</EXPLANATION>
</ERRORMSG>
<ERRORMSG><MSG>&lt;channel> channel gain must be >= 0 and &lt;= 10
</MSG>
<EXPLANATION><PARAGRAPH>The value you selected for the channel's gain exceeds the allowed range.</PARAGRAPH>
</EXPLANATION>
</ERRORMSG>
<ERRORMSG><MSG>&lt;channel> channel horizontal phase must be >= 0 and &lt;= &lt;number>
</MSG>
<EXPLANATION><PARAGRAPH>The value you selected for the channel's horizontal phase exceeds the allowed range.</PARAGRAPH>
</EXPLANATION>
</ERRORMSG>
<ERRORMSG><MSG>&lt;channel> channel is dependent on invalid channel &lt;channel>
</MSG>
<EXPLANATION><PARAGRAPH>The channel you have selected as the source is unavailable; select another in the Attributes window.</PARAGRAPH>
</EXPLANATION>
</ERRORMSG>
<ERRORMSG><MSG>&lt;channel> channel is dependent on non-requesting channel &lt;channel>
</MSG>
<EXPLANATION><PARAGRAPH>The channel you have selected as the source is itself dependent; select a channel that is independent.</PARAGRAPH>
</EXPLANATION>
</ERRORMSG>
<ERRORMSG><MSG>&lt;channel> channel must be stereo if other channels are stereo
</MSG>
<EXPLANATION><PARAGRAPH>For any combination that contains a stereo format, the specified channel must also run a stereo format. You can also consider using the specified channel as the stereo channel.</PARAGRAPH>
</EXPLANATION>
</ERRORMSG>
<ERRORMSG><MSG>&lt;channel> channel needs to be at least &lt;number> pixels tall
&lt;channel> channel needs to be at least &lt;number> pixels wide
&lt;channel> channel needs to be less than &lt;number> pixels tall
&lt;channel> channel needs to be less than &lt;number> pixels wide
</MSG>
<EXPLANATION><PARAGRAPH>Resize the channel so that it meets the specified dimension.</PARAGRAPH>
</EXPLANATION>
</ERRORMSG>
<ERRORMSG><MSG>&lt;channel> channel off bottom edge of managed area
&lt;channel> channel off left edge of managed area or source channel
&lt;channel> channel off right edge of managed area
&lt;channel> channel off top edge of managed area or source channel
</MSG>
<EXPLANATION><PARAGRAPH>Reposition the channel so that it is within the managed area; set its origin in the Channel Attributes window or move it with the mouse.</PARAGRAPH>
</EXPLANATION>
</ERRORMSG>
<ERRORMSG><MSG>&lt;channel> channel off bottom edge of source channel &lt;channel>
&lt;channel> channel off right edge of source channel &lt;channel>
</MSG>
<EXPLANATION><PARAGRAPH>Reposition the dependent channel so that it is within or congruent with the boundaries of the channel on which it is dependent. Set its origin in the Channel Attributes window or move it with the mouse.</PARAGRAPH>
</EXPLANATION>
</ERRORMSG>
<ERRORMSG><MSG>&lt;channel> channel SCH phase must be >= -1800 and &lt;= 1800
</MSG>
<EXPLANATION><PARAGRAPH>The value you selected for the channel's SCH phase exceeds the allowed range.</PARAGRAPH>
</EXPLANATION>
</ERRORMSG>
<ERRORMSG><MSG>&lt;channel> channel vertical phase must be 0 to lines-1
</MSG>
<EXPLANATION><PARAGRAPH>The value you selected for the channel's vertical phase exceeds the allowed range. Select a value between zero and the total number of vertical lines in this format minus one.</PARAGRAPH>
</EXPLANATION>
</ERRORMSG>
<ERRORMSG><MSG>&lt;channel> channel width must be a multiple of &lt;number>
</MSG>
<EXPLANATION><PARAGRAPH>Set the channel width accordingly. </PARAGRAPH>
</EXPLANATION>
</ERRORMSG>
<ERRORMSG><MSG>&lt;channel> channel X filter size must be between 1 and 13
</MSG>
<EXPLANATION><PARAGRAPH>The value you selected for the channel's X filter size exceeds the allowed range.</PARAGRAPH>
</EXPLANATION>
</ERRORMSG>
<ERRORMSG><MSG>&lt;channel> channel x position must be a multiple of &lt;number>
</MSG>
<EXPLANATION><PARAGRAPH>Move the channel so that it is positioned as indicated.</PARAGRAPH>
</EXPLANATION>
</ERRORMSG>
<ERRORMSG><MSG>&lt;channel> channel Y filter size must be between 1 and 7
</MSG>
<EXPLANATION><PARAGRAPH>The value you selected for the channel's Y filter size exceeds the allowed range.</PARAGRAPH>
<PARAGRAPH></PARAGRAPH>
</EXPLANATION>
</ERRORMSG>
</APPENDIX>

View File

@@ -0,0 +1,99 @@
# Chapter 1: only Cbinr.Overview:Overview, Cbinr.channel, Cbinr.VOF.combo; rest are Ch 2
1;Combiner_UG;Overview;0;Cbinr.Overview;Ircombine.ircombine.overview;Ircombine.ircombine.menuBar;Ircombine.ircombine.frame.form
#following line is supposed to be the fallback
# 0:Combiner_UG;Overview;0;Cbinr.Overview;Ircombine.ircombine
0;Combiner_UG;Bandwidth Used;0;Cbinr.Bandw.Used;Ircombine.ircombine.frame.form.bandwidthScale
0;Combiner_UG;Channel Attributes;0;Cbinr.channel.chg.attrib;Ircombine.ircombine.editChannelButton;Ircombine.Combination Attributes.form1;Ircombine.Channel 0 Attributes.form1;Ircombine.ircombine.Channel 0 Attributes
0;Combiner_UG;Alpha channel;1;Cbinr.channel.chg.attrib.alpha.chnl;Ircombine.Channel 0 Attributes.form1.alphaChannelToggle;Ircombine.Sirius Attributes.siriusForm.alphaChannelToggle2;Ircombine.Encoder Attributes.encoderForm.alphaChannelToggle1
0;Combiner_UG;cursor priority;1;Cbinr.channel.chg.attrib.cursorpri;Ircombine.Channel 0 Attributes.form1.cursorPriorityLabel;Ircombine.Channel 0 Attributes.form1.cursorPriorityText;Ircombine.Sirius Attributes.siriusForm.cursorPriorityLabel2;Ircombine.Sirius Attributes.siriusForm.cursorPriorityText2;Ircombine.Encoder Attributes.encoderForm.cursorPriorityText1;Ircombine.Encoder Attributes.encoderForm.cursorPriorityLabel1
0;Combiner_UG;dither;1;Cbinr.channel.chg.attrib.dither;Ircombine.Channel 0 Attributes.form1.ditherToggle;Ircombine.Sirius Attributes.siriusForm.ditherToggle2;Ircombine.Encoder Attributes.encoderForm.ditherToggle1
0;Combiner_UG;field layout;1;Cbinr.channel.chg.attrib.field.layout;Ircombine.ircombine.fieldLayoutMenu;Ircombine.Channel 0 Attributes.form1.fieldLayoutMenu.OptionButton;Ircombine.Channel 0 Attributes.form1.fieldLayoutMenu.OptionLabel;Ircombine.Sirius Attributes.siriusForm.fieldLayoutMenu2.OptionLabel;Ircombine.Sirius Attributes.siriusForm.fieldLayoutMenu2.OptionButton;Ircombine.Encoder Attributes.encoderForm.fieldLayoutMenu1.OptionButton;Ircombine.Encoder Attributes.encoderForm.fieldLayoutMenu1.OptionLabel
0;Combiner_UG;filter size;1;Cbinr.filterwidth;Ircombine.Sirius Attributes.siriusForm.filterSizeLabel1;Ircombine.Sirius Attributes.siriusForm.xFilterSizeLabel1;Ircombine.Sirius Attributes.siriusForm.xFilterSizeDial1;Ircombine.Sirius Attributes.siriusForm.yFilterSizeLabel1;Ircombine.Sirius Attributes.siriusForm.yFilterSizeDial1;Ircombine.Encoder Attributes.encoderForm.yFilterSizeDial;Ircombine.Encoder Attributes.encoderForm.yFilterSizeLabel;Ircombine.Encoder Attributes.encoderForm.xFilterSizeDial;Ircombine.Encoder Attributes.encoderForm.xFilterSizeLabel;Ircombine.Encoder Attributes.encoderForm.filterSizeLabel
0;Combiner_UG;format;1;Cbinr.channel.chg.attrib.format;Ircombine.Channel 0 Attributes.form1.formatLabel;Ircombine.Channel 0 Attributes.form1.formatText;Ircombine.Channel 0 Attributes.form1.formatLabel;Ircombine.Channel 0 Attributes.form1.formatText
0;Combiner_UG;framebuffer placement;1;Cbinr.channel.chg.attrib.fbuf.placemt;Ircombine.Channel 0 Attributes.form1.placementLabel;Ircombine.Channel 0 Attributes.form1.xPlacementMenu;Ircombine.Channel 0 Attributes.form1.yPlacementMenu;Ircombine.Channel 0 Attributes.form1.xPlacementMenu.OptionButton;Ircombine.Channel 0 Attributes.form1.yPlacementMenu.OptionButton;Ircombine.Sirius Attributes.siriusForm.placementLabel2;Ircombine.Sirius Attributes.siriusForm.xPlacementMenu2.OptionLabel;Ircombine.Sirius Attributes.siriusForm.xPlacementMenu2.OptionButton;Ircombine.Sirius Attributes.siriusForm.yPlacementMenu2.OptionLabel;Ircombine.Sirius Attributes.siriusForm.yPlacementMenu2.OptionButton;Ircombine.Encoder Attributes.encoderForm.yPlacementMenu1.OptionButton;Ircombine.Encoder Attributes.encoderForm.yPlacementMenu1.OptionLabel;Ircombine.Encoder Attributes.encoderForm.xPlacementMenu1.OptionButton;Ircombine.Encoder Attributes.encoderForm.xPlacementMenu1.OptionLabel;Ircombine.Encoder Attributes.encoderForm.placementLabel1
0;Combiner_UG;gain;1;Cbinr.channel.chg.attrib.gain;Ircombine.Channel 0 Attributes.form1.gainLabel;Ircombine.Channel 0 Attributes.form1.gainText;Ircombine.Sirius Attributes.siriusForm.gainLabel2;Ircombine.Sirius Attributes.siriusForm.gainText2;Ircombine.Encoder Attributes.encoderForm.gainText1;Ircombine.Encoder Attributes.encoderForm.gainLabel1
0;Combiner_UG;gamma;1;Cbinr.channel.chg.attrib.gamma;Ircombine.Channel 0 Attributes.form1.useGammaToggle;Ircombine.Channel 0 Attributes.form1.gammaLabel;Ircombine.Channel 0 Attributes.form1.gGammaLabel;Ircombine.Channel 0 Attributes.form1.rGammaLabel;Ircombine.Channel 0 Attributes.form1.bGammaLabel:Ircombine.Channel 0 Attributes.form1.rGammaText;Ircombine.Channel 0 Attributes.form1.gGammaText;Ircombine.Channel 0 Attributes.form1.bGammaText;Ircombine.Sirius Attributes.siriusForm.gammaLabel2;Ircombine.Sirius Attributes.siriusForm.rGammaLabel2;Ircombine.Sirius Attributes.siriusForm.rGammaText2;Ircombine.Sirius Attributes.siriusForm.gGammaLabel2;Ircombine.Sirius Attributes.siriusForm.gGammaText2;Ircombine.Sirius Attributes.siriusForm.bGammaLabel2;Ircombine.Sirius Attributes.siriusForm.bGammaText2;Ircombine.Sirius Attributes.siriusForm.useGammaToggle2;Ircombine.Encoder Attributes.encoderForm.useGammaToggle1;Ircombine.Encoder Attributes.encoderForm.bGammaText1;Ircombine.Encoder Attributes.encoderForm.bGammaLabel1;Ircombine.Encoder Attributes.encoderForm.gGammaText1;Ircombine.Encoder Attributes.encoderForm.gGammaLabel1;Ircombine.Encoder Attributes.encoderForm.rGammaText1;Ircombine.Encoder Attributes.encoderForm.rGammaLabel1;Ircombine.Encoder Attributes.encoderForm.gammaLabel1
0;Combiner_UG;horizontal and vertical phase;1;Cbinr.channel.chg.attrib.hphase.vphase;Ircombine.Channel 0 Attributes.form1.hPhaseText;Ircombine.Channel 0 Attributes.form1.vPhaseText;Ircombine.Channel 0 Attributes.form1.hPhaseLabel;Ircombine.Channel 0 Attributes.form1.vPhaseLabel;Ircombine.Sirius Attributes.siriusForm.hPhaseLabel2;Ircombine.Sirius Attributes.siriusForm.hPhaseText2;Ircombine.Sirius Attributes.siriusForm.vPhaseLabel2;Ircombine.Sirius Attributes.siriusForm.vPhaseText2;Ircombine.Encoder Attributes.encoderForm.vPhaseText1;Ircombine.Encoder Attributes.encoderForm.vPhaseLabel1;Ircombine.Encoder Attributes.encoderForm.hPhaseText1;Ircombine.Encoder Attributes.encoderForm.hPhaseLabel1
0;Combiner_UG;origin and size;1;Cbinr.channel.chg.attrib.origin.size;Ircombine.Channel 0 Attributes.form1.originLabel;Ircombine.Channel 0 Attributes.form1.sizeLabel;Ircombine.Channel 0 Attributes.form1.xOriginText;Ircombine.Channel 0 Attributes.form1.yOriginText;Ircombine.Channel 0 Attributes.form1.widthText;Ircombine.Channel 0 Attributes.form1.heightText;Ircombine.Channel 0 Attributes.form1.byLabel1;Ircombine.Sirius Attributes.siriusForm.originLabel2;Ircombine.Sirius Attributes.siriusForm.xOriginText2;Ircombine.Sirius Attributes.siriusForm.yOriginText2;Ircombine.Sirius Attributes.siriusForm.sizeLabel2;Ircombine.Sirius Attributes.siriusForm.widthText2;Ircombine.Sirius Attributes.siriusForm.byLabel3;Ircombine.Sirius Attributes.siriusForm.heightText2;Ircombine.Encoder Attributes.encoderForm.heightText1;Ircombine.Encoder Attributes.encoderForm.byLabel2;Ircombine.Encoder Attributes.encoderForm.sizeLabel1;Ircombine.Encoder Attributes.encoderForm.yOriginText1;Ircombine.Encoder Attributes.encoderForm.yLabel1;Ircombine.Encoder Attributes.encoderForm.xOriginText1;Ircombine.Encoder Attributes.encoderForm.originLabel1;Ircombine.Encoder Attributes.encoderForm.widthText1
0;Combiner_UG;pixel format;1;Cbinr.channel.chg.attrib.pixelfmt;Ircombine.Channel 0 Attributes.form1.pixelFormatMenu.OptionButton;Ircombine.Channel 0 Attributes.form1.pixelFormatLabel;Ircombine.Sirius Attributes.siriusForm.pixelFormatMenu2.OptionButton;Ircombine.Sirius Attributes.siriusForm.pixelFormatLabel2;Ircombine.Encoder Attributes.encoderForm.pixelFormatMenu1.OptionButton;Ircombine.Encoder Attributes.encoderForm.pixelFormatLabel1
0;Combiner_UG;setup;1;Cbinr.channel.chg.attrib.setup;Ircombine.Channel 0 Attributes.form1.setupToggle;Ircombine.Sirius Attributes.siriusForm.setupToggle2;Ircombine.Encoder Attributes.encoderForm.setupToggle1
0;Combiner_UG;swap rate;1;Cbinr.swaprate;Ircombine.Channel 0 Attributes.form1.formatInfoFrame.formatInfoForm.swapRate;Ircombine.Channel 0 Attributes.form1.formatInfoFrame.formatInfoForm.swapRateLabel;Ircombine.Select a Video Format.formatInfoFrame3.formatInfoForm3.swapRate3;Ircombine.Sirius Attributes.siriusForm.formatInfoFrame2.formatInfoForm2.swapRate2;Ircombine.Sirius Attributes.siriusForm.formatInfoFrame2.formatInfoForm2.swapRateLabel2;Ircombine.Encoder Attributes.encoderForm.formatInfoFrame1.formatInfoForm1.swapRateLabel1;Ircombine.Encoder Attributes.encoderForm.formatInfoFrame1.formatInfoForm1.swapRate1
0;Combiner_UG;sync;1;Cbinr.channel.chg.attrib.sync;Ircombine.Channel 0 Attributes.form1.syncOutputLabel;Ircombine.Channel 0 Attributes.form1.rSyncToggle;Ircombine.Channel 0 Attributes.form1.gSyncToggle;Ircombine.Channel 0 Attributes.form1.bSyncToggle;Ircombine.Channel 0 Attributes.form1.syncOutputMenu;Ircombine.Channel 0 Attributes.form1.syncComponentLabel;Ircombine.Channel 0 Attributes.form1.syncOutputMenu.OptionButton
0;Combiner_UG;trilevel sync;1;Cbinr.channel.chg.attrib.trilevel;Ircombine.Channel 0 Attributes.form1.triLevelSyncToggle
0;Combiner_UG;channel;0;Cbinr.channel;Ircombine.ircombine.frame.form.channelBox;Ircombine.Channel 0 Attributes.form1.channelEnableToggle
# 0;Combiner_UG;associating with an X Window;1;Cbinr.channel.XWindow.assoc;Ircombine.ircombine
0;Combiner_UG;selecting a video output format for a channel;1;Cbinr.channel.VOF;Ircombine.Select a Video Format;Ircombine.ircombine.ircombine.Select a Video Format_popup.Select a Video Format;Ircombine.Select a Video Format.formatInfoFrame3
0;Combiner_UG;specifying;1;Cbinr.channel:spec;Ircombine.ircombine.menuBar.channelPane;Ircombine.ircombine.frame.form.channelBoxLabel
# 0;Combiner_UG;channel:resizing, repositioning;0;Cbinr.channel.resize.repositn;Ircombine.
# 0;Combiner_UG;channel:copying;0;Cbinr.channel.copy;Ircombine.
# 0;Combiner_UG;channel:aligning;0;Cbinr.channel.align;Ircombine.
2;Combiner_UG;Encoder channel;0;Cbinr.Encoder;Ircombine.ircombine.frame.form.channelBox.Encoder
0;Combiner_UG;changing attributes;1;Cbinr.Encoder.channel.attrib;Ircombine.Encoder Attributes.encoderForm;Ircombine.ircombine.Encoder Attributes
0;Combiner_UG;Encoder Format;1;Cbinr.Encoder.channel.attrib.outputfmt;Ircombine.Encoder Attributes.encoderForm.encoderFormatMenu.OptionButton;Ircombine.Encoder Attributes.encoderForm.encoderFormatMenu.OptionLabel
0;Combiner_UG;setting up;1;Cbinr.Encoder.setup;Ircombine.Encoder Attributes.encoderForm.channelEnableToggle1
0;Combiner_UG;Error Indicator;0;Cbinr.Error.Indic;Ircombine.ircombine.frame.form.errorMessageLabel
2;Combiner_UG;Global Attributes;0;Cbinr.chg.attrib.global;Ircombine.ircombine.frame.form.editGlobalsButton;Ircombine.Combination Attributes.form2
0;Combiner_UG;gamma;1;Cbinr.channel.chg.attrib.gamma;Ircombine.Combination Attributes.form2.globalGammaToggle;Ircombine.Combination Attributes.form2.globalGammaLabel;Ircombine.Combination Attributes.form2.rGlobalGammaText;Ircombine.Combination Attributes.form2.rGlobalGammaLabel;Ircombine.Combination Attributes.form2.gGlobalGammaText;Ircombine.Combination Attributes.form2.gGlobalGammaLabel;Ircombine.Combination Attributes.form2.bGlobalGammaText;Ircombine.Combination Attributes.form2.bGlobalGammaLabel
0;Combiner_UG;pixel depth;1;Cbinr.channel.chg.attrib.global.pixeld;Ircombine.Combination Attributes.form2.pixelDepthLabel;Ircombine.Combination Attributes.form2.pixelDepthMenu;Ircombine.Combination Attributes.form2.currentDepthLabel;Ircombine.Combination Attributes.form2.pixelDepthMenu.OptionButton
0;Combiner_UG;sync source and format;1;Cbinr.channel.chg.attrib.global.sync;Ircombine.Combination Attributes.form2.syncsourceLabel;Ircombine.Combination Attributes.form2.syncFormatText;Ircombine.Combination Attributes.form2.syncSourceMenu;Ircombine.Combination Attributes.form2.syncformatLabel;Ircombine.Combination Attributes.form2.syncSourceMenu.OptionButton
0;Combiner_UG;textport;1;Cbinr.channel.chg.attrib.textport;Ircombine.Combination Attributes.form2.textportMenu.OptionButton;Ircombine.Combination Attributes.form2.textportMenu;Ircombine.Combination Attributes.form2.textportLabel
0;Combiner_UG;managed area;0;Cbinr.managed.area;Ircombine.Combination Attributes.form2.xManagedText;Ircombine.Combination Attributes.form2.xManagedText;Ircombine.Combination Attributes.form2.managedLabel;Ircombine.ircombine.frame.form.glframe.glwidget
0;Combiner_UG;Reduced Fill;0;Cbinr.Reduced.Fill;Ircombine.ircombine.frame.form.reducedScale
2;Combiner_UG;Sirius Video channel;0;Cbinr.SiriusV;Ircombine.ircombine.frame.form.channelBox.Sirius
0;Combiner_UG;changing attributes;1;Cbinr.SiriusV.channel.attrib;channel.attrib;Ircombine.Sirius Attributes.siriusForm;Ircombine.ircombine.Sirius Attributes
0;Combiner_UG;output format;1;Cbinr.SiriusV.channel.attrib.outputfmt;Ircombine.Sirius Attributes.siriusForm.encoderFormatMenu1.OptionButton;Ircombine.Sirius Attributes.siriusForm.encoderFormatMenu1.OptionLabel
0;Combiner_UG;setting up;1;Cbinr.SiriusV.setup;Ircombine.Sirius Attributes.siriusForm.channelEnableToggle2
#0;Combiner_UG;Alpha channel;1;Cbinr.channel.chg.attrib.alpha.chnl;Ircombine.Sirius Attributes.siriusForm.alphaChannelToggle2
#0;Combiner_UG;cursor priority;1;Cbinr.channel.chg.attrib.cursorpri;Ircombine.Sirius Attributes.siriusForm.cursorPriorityLabel2;Ircombine.Sirius Attributes.siriusForm.cursorPriorityText2
#0;Combiner_UG;dither;1;Cbinr.channel.chg.attrib.dither;Ircombine.Sirius Attributes.siriusForm.ditherToggle2
#0;Combiner_UG;field layout;1;Cbinr.channel.chg.attrib.field.layout;Ircombine.Sirius Attributes.siriusForm.fieldLayoutMenu2.OptionLabel;Ircombine.Sirius Attributes.siriusForm.fieldLayoutMenu2.OptionButton
#0;Combiner_UG;filter width;1;Cbinr.filterwidth;Ircombine.Sirius Attributes.siriusForm.filterSizeLabel1;Ircombine.Sirius Attributes.siriusForm.xFilterSizeLabel1;Ircombine.Sirius Attributes.siriusForm.xFilterSizeDial1;Ircombine.Sirius Attributes.siriusForm.yFilterSizeLabel1;Ircombine.Sirius Attributes.siriusForm.yFilterSizeDial1
#0;Combiner_UG;framebuffer placement;2;Cbinr.channel.chg.attrib.fbuf.placemt;Ircombine.Sirius Attributes.siriusForm.placementLabel2;Ircombine.Sirius Attributes.siriusForm.xPlacementMenu2.OptionLabel;Ircombine.Sirius Attributes.siriusForm.xPlacementMenu2.OptionButton;Ircombine.Sirius Attributes.siriusForm.yPlacementMenu2.OptionLabel;Ircombine.Sirius Attributes.siriusForm.yPlacementMenu2.OptionButton
#0;Combiner_UG;gain;2;Cbinr.channel.chg.attrib.gain;Ircombine.Sirius Attributes.siriusForm.gainLabel2;Ircombine.Sirius Attributes.siriusForm.gainText2
#0;Combiner_UG;gamma;2;Cbinr.channel.chg.attrib.gamma;Ircombine.Sirius Attributes.siriusForm.gammaLabel2;Ircombine.Sirius Attributes.siriusForm.rGammaLabel2;Ircombine.Sirius Attributes.siriusForm.rGammaText2;Ircombine.Sirius Attributes.siriusForm.gGammaLabel2;Ircombine.Sirius Attributes.siriusForm.gGammaText2;Ircombine.Sirius Attributes.siriusForm.bGammaLabel2;Ircombine.Sirius Attributes.siriusForm.bGammaText2;Ircombine.Sirius Attributes.siriusForm.useGammaToggle2
#0;Combiner_UG;horizontal and vertical phase;2;Cbinr.channel.chg.attrib.hphase.vphase;Ircombine.Sirius Attributes.siriusForm.hPhaseLabel2;Ircombine.Sirius Attributes.siriusForm.hPhaseText2;Ircombine.Sirius Attributes.siriusForm.vPhaseLabel2;Ircombine.Sirius Attributes.siriusForm.vPhaseText2
#0;Combiner_UG;origin and size;2;Cbinr.channel.chg.attrib.origin.size;Ircombine.Sirius Attributes.siriusForm.originLabel2;Ircombine.Sirius Attributes.siriusForm.xOriginText2;Ircombine.Sirius Attributes.siriusForm.yOriginText2;Ircombine.Sirius Attributes.siriusForm.sizeLabel2;Ircombine.Sirius Attributes.siriusForm.widthText2;Ircombine.Sirius Attributes.siriusForm.byLabel3;Ircombine.Sirius Attributes.siriusForm.heightText2
#0;Combiner_UG;output format;2;Cbinr.SiriusV.channel.attrib.outputfmt;Ircombine.Sirius Attributes.siriusForm.encoderFormatMenu1.OptionButton;Ircombine.Sirius Attributes.siriusForm.encoderFormatMenu1.OptionLabel
#0;Combiner_UG;pixel format;2;Cbinr.channel.chg.attrib.pixelfmt;Ircombine.Sirius Attributes.siriusForm.pixelFormatMenu2.OptionButton;Ircombine.Sirius Attributes.siriusForm.pixelFormatLabel2
#0;Combiner_UG;setup;2;Cbinr.channel.chg.attrib.setup;Ircombine.Sirius Attributes.siriusForm.setupToggle2
#0;Combiner_UG;swap rate;2;Cbinr.swaprate;Ircombine.Sirius Attributes.siriusForm.formatInfoFrame2.formatInfoForm2.swapRate2
0;Combiner_UG;User-Defined Hardware;0;Cbinr.Target.Hdwr;Ircombine.Target Hardware.hardwareForm.vocMenu.OptionButton
0;Combiner_UG;Video output format combination;0;Cbinr.VOFcombo;Ircombine.Select a Video Format
0;Combiner_UG;downloading a video output format combination;1;Cbinr.VOFcombo.dnload;Ircombine.ircombine.frame.form.downloadButton
0;Combiner_UG;getting contents of currently selected combination;1;Cbinr.VOFcombo.get;Ircombine.ircombine.fileSelectionDialog_popup
3;Combiner_UG;Keys and Shortcuts;0;Cbinr.channel.resize.repositn;Ircombine.ircombine.keys
#
#

Binary file not shown.

After

Width:  |  Height:  |  Size: 145 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 136 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 138 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 89 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.1 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More