/**/ /***************************************************************************/ /** **/ /** © Copyright 2010, Hewlett-Packard Development Company, L.P. **/ /** **/ /** Confidential computer software. Valid license from HP and/or **/ /** its subsidiaries required for possession, use, or copying. **/ /** **/ /** Consistent with FAR 12.211 and 12.212, Commercial Computer Software, **/ /** Computer Software Documentation, and Technical Data for Commercial **/ /** Items are licensed to the U.S. Government under vendor's standard **/ /** commercial license. **/ /** **/ /** Neither HP nor any of its subsidiaries shall be liable for technical **/ /** or editorial errors or omissions contained herein. The information **/ /** in this document is provided "as is" without warranty of any kind and **/ /** is subject to change without notice. The warranties for HP products **/ /** are set forth in the express limited warranty statements accompanying **/ /** such products. Nothing herein should be construed as constituting an **/ /** additional warranty. **/ /** **/ /***************************************************************************/ /********************************************************************************************************************************/ /* Created: 30-Mar-2010 17:27:01 by OpenVMS SDL EV3-3 */ /* Source: 30-JUL-2002 11:37:07 $1$DGA7274:[LIB_H.SRC]JIBDEF.SDL;1 */ /********************************************************************************************************************************/ /*** MODULE $JIBDEF ***/ #ifndef __JIBDEF_LOADED #define __JIBDEF_LOADED 1 #pragma __nostandard /* This file uses non-ANSI-Standard features */ #pragma __member_alignment __save #pragma __nomember_alignment #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __save /* Save the previously-defined required ptr size */ #pragma __required_pointer_size __short /* And set ptr size default to 32-bit pointers */ #endif #ifdef __cplusplus extern "C" { #define __unknown_params ... #define __optional_params ... #else #define __unknown_params #define __optional_params ... #endif #ifndef __struct #if !defined(__VAXC) #define __struct struct #else #define __struct variant_struct #endif #endif #ifndef __union #if !defined(__VAXC) #define __union union #else #define __union variant_union #endif #endif /*+ */ /* Job Information Block - Structure containing common context for a set */ /* of related processes. */ /* */ /* Note: The Executive module SYSCREPRC assumes that the job mount list head */ /* preceeds the username field in the JIB. */ /* */ /* JIB Synchronization: */ /* */ /* The JIB is a shared structure across a subprocess tree. Synchronization */ /* is complex because many of the quota and limit fields have no functional */ /* relationship whatsoever. So a number of methods of synchronization are */ /* used, based on exactly what is being manipulated. Below is a list of */ /* fields with their methods of synch. */ /* */ /* Field Synchronization Method */ /* ----- ---------------------- */ /* BYTCNT/BYTLM Interlocked arithmetic sequences. Should never be manually */ /* manipulated: use the EXE$DEBIT/CREDIT routines in the */ /* EXSUBROUT module. */ /* */ /* TQCNT/TQLM Interlocked arithmetic sequences. When waiting because of a */ /* lack of TQCNT, the JIB FLAGS bit TQCNT_WAITERS must be set; */ /* the JIB address is the EFWM and the process should be */ /* placed in the MWAIT queue. When TQCNT is incremented, */ /* the TQCNT_WAITERS bit must be interrogated. If it is set, */ /* then waiting process should be made executable via a call */ /* to EXE$JIB_AVAIL or similar inline code. */ /* */ /* PGFLCNT Interlocked arithmetic sequences. Should never be manually */ /* manipulated to charge for pagefile quota: use $more_pgflquota */ /* macro. Macros $init_pgflquota and $ret_pgflquota are also */ /* available. */ /* */ /* PGFLQUOTA MMG spinlock. */ /* */ /* MTLFL/MTLBL SCH$IOLOCK/UNLOCK. */ /* */ /* FILCNT/FILLM, Interlocked arithmetic sequences. These fields are never increased */ /* ENQCNT/ENQLM, or decreased by more than 1 at a time, and are never waited on. */ /* PRCCNT/PRCLM */ /*- */ #define JIB$C_DETACHED 0 #define JIB$C_NETWORK 1 #define JIB$C_BATCH 2 #define JIB$C_LOCAL 3 #define JIB$C_DIALUP 4 #define JIB$C_REMOTE 5 #define JIB$M_BYTCNT_WAITERS 0x1 #define JIB$M_TQCNT_WAITERS 0x2 #define JIB$M_MEDDLE 0x4 #define JIB$K_LENGTH 140 /* Structure length */ #define JIB$C_LENGTH 140 /* Structure length */ #define JIB$S_JIBDEF 140 /* Old JIB sized for compatability */ #ifdef __cplusplus /* Define structure prototypes */ struct _mtl; #endif /* #ifdef __cplusplus */ typedef struct _jib { struct _mtl *jib$l_mtlfl; /* Job mounted volume list head forward link */ struct _mtl *jib$l_mtlbl; /* Job mounted volume list head back link */ unsigned short int jib$w_size; /* Size of structure in bytes */ unsigned char jib$b_type; /* Structure type code */ unsigned char jib$b_daytypes; /* Set bits 0-6 flag non-prime days of week */ char jib$t_username [12]; /* User name for easy access */ char jib$t_account [8]; /* Account name for resident access */ unsigned int jib$l_bytcnt; /* Buffered I/O byte count avail */ unsigned int jib$l_bytlm; /* Original value for Byte count */ unsigned int jib$l_pbytcnt; /* Paged pool byte count remaining */ unsigned int jib$l_pbytlim; /* Paged pool byte limit */ unsigned int jib$l_filcnt; /* Open File count remaining */ unsigned int jib$l_fillm; /* Open file limit */ unsigned int jib$l_tqcnt; /* Timer queue entry count remaining */ unsigned int jib$l_tqlm; /* Timer queue entry limit */ unsigned int jib$l_pgflquota; /* Paging file quota */ int jib$l_pgflcnt; /* Paging file limit *** signed *** */ unsigned int jib$l_cpulim; /* CPU time quota remaining */ unsigned int jib$l_prccnt; /* Count of subprocesses existing */ unsigned int jib$l_prclim; /* Limit on number of subprocesses */ unsigned short int jib$w_shrfcnt; /* Shared file block count remaining */ unsigned short int jib$w_shrflim; /* Shared file count limit */ unsigned int jib$l_enqcnt; /* Enqueue count avail */ unsigned int jib$l_enqlm; /* Enqueue limit */ unsigned short int jib$w_maxjobs; /* Max jobs limit on user */ unsigned short int jib$w_maxdetach; /* Max detached processes for user */ unsigned int jib$l_mpid; /* PID of master process */ void *jib$l_jlnamfl; /* Forward link for job-wide logical names */ void *jib$l_jlnambl; /* Back link for job-wide logical names */ unsigned int jib$l_pdayhours; /* Field describing primary day access */ unsigned int jib$l_odayhours; /* Field describing off day access */ unsigned int jib$l_jobtype; /* Job origin type */ __union { unsigned int jib$l_flags; /* FLAG bits */ __struct { unsigned jib$v_bytcnt_waiters : 1; /* Processes are waiting on BYTCNT */ unsigned jib$v_tqcnt_waiters : 1; /* Processes are waiting on TQCNT */ unsigned jib$v_meddle : 1; /* Job table has been altered */ unsigned jib$v_fill_0_ : 5; } jib$r_flag_bits; } jib$r_flags_overlay; unsigned int jib$l_org_bytlm; /* Original BYTLM */ unsigned int jib$l_org_pbytlm; /* Original PBYTLM */ unsigned int jib$l_jtquota; /* Job table quota */ } JIB; #if !defined(__VAXC) #define jib$l_flags jib$r_flags_overlay.jib$l_flags #define jib$v_bytcnt_waiters jib$r_flags_overlay.jib$r_flag_bits.jib$v_bytcnt_waiters #define jib$v_tqcnt_waiters jib$r_flags_overlay.jib$r_flag_bits.jib$v_tqcnt_waiters #define jib$v_meddle jib$r_flags_overlay.jib$r_flag_bits.jib$v_meddle #endif /* #if !defined(__VAXC) */ #pragma __member_alignment __restore #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __restore /* Restore the previously-defined required ptr size */ #endif #ifdef __cplusplus } #endif #pragma __standard #endif /* __JIBDEF_LOADED */