/**/ /***************************************************************************/ /** **/ /** © 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:08 by OpenVMS SDL EV3-3 */ /* Source: 12-APR-2006 13:17:31 $1$DGA7274:[LIB_H.SRC]CSCHEDDEF.SDL;1 */ /********************************************************************************************************************************/ /*** MODULE $CSCHEDDEF ***/ #ifndef __CSCHEDDEF_LOADED #define __CSCHEDDEF_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 /*++ */ /* The following structure is the format of the records in the class */ /* scheduler database file. The class record is the largest record. */ /* The qualifying records (username, account name, and UIC) are subsets */ /* of the class record. */ /*-- */ #define CSCHED$K_CLASS_NUMBER_POS 2 #define CSCHED$K_CLASS_NUMSIZE 2 #define CSCHED$K_NODE_NAME_POS 4 #define CSCHED$K_NODE_RECORD 20 /* End of Node record */ #define CSCHED$K_USER_NAME_POS 20 #define CSCHED$K_USERNAME_RECORD 52 /* End of User name record */ #define CSCHED$K_ACCOUNT_NAME_POS 52 #define CSCHED$K_ACCOUNT_RECORD 84 /* End of Account record */ #define CSCHED$K_UIC_POS 84 #define CSCHED$K_UIC_GRP_POS 86 #define CSCHED$K_UIC_SIZE 4 #define CSCHED$K_UIC_RECORD 88 /* End of UIC record */ #define CSCHED$M_WINDFALL 0x1 #define CSCHED$M_CLUSTER 0x2 #define CSCHED$M_DELPND 0x4 #define CSCHED$M_MONDAY 0x1 #define CSCHED$M_TUESDAY 0x2 #define CSCHED$M_WEDNESDAY 0x4 #define CSCHED$M_THURSDAY 0x8 #define CSCHED$M_FRIDAY 0x10 #define CSCHED$M_SATURDAY 0x20 #define CSCHED$M_SUNDAY 0x40 #define CSCHED$K_CLASS_NAME_POS 144 #define CSCHED$K_CLASS_RECORD 160 /* End of class record */ #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif typedef struct _csched { #pragma __nomember_alignment unsigned short int csched$w_record_type; /* Record type (class, user, account, or UIC) */ unsigned short int csched$w_class_number; /* Class number (values between 0 - 8191) */ char csched$t_node_name [16]; /* Node name */ char csched$t_user_name [32]; /* User name */ char csched$t_account [32]; /* Account name (same as in the UAF file) */ __union { unsigned int csched$l_uic; /* User's UIC value */ __struct { unsigned short int csched$w_mem; /* Member number in UIC */ unsigned short int csched$w_grp; /* Group number in UIC */ } csched$r_fill_1_; } csched$r_fill_0_; unsigned char csched$b_primeday_cpulimit [24]; /* Cpu limits per hour for primary days */ unsigned char csched$b_seconday_cpulimit [24]; /* Cpu limits per hour for secondary days */ __union { unsigned int csched$l_flags; /* Flags field */ __struct { unsigned csched$v_windfall : 1; /* Enable windfall if this bit is set */ unsigned csched$v_cluster : 1; /* Class is valid cluster-wide */ unsigned csched$v_delpnd : 1; /* Class is being deleted */ unsigned csched$v_fill_6_ : 5; } csched$r_fill_3_; } csched$r_fill_2_; __union { unsigned char csched$b_days; /* Days of the week that the class is valid */ __struct { unsigned csched$v_monday : 1; /* If bit is clear, day is a primary day. */ unsigned csched$v_tuesday : 1; /* Otherwise, it's a secondary day. */ unsigned csched$v_wednesday : 1; unsigned csched$v_thursday : 1; unsigned csched$v_friday : 1; unsigned csched$v_saturday : 1; unsigned csched$v_sunday : 1; unsigned csched$v_fill_7_ : 1; } csched$r_fill_5_; } csched$r_fill_4_; unsigned char csched$$$_fill_2 [3]; /* Get alignment back */ char csched$t_class_name [16]; /* Name of scheduling class */ } CSCHED; #if !defined(__VAXC) #define csched$l_uic csched$r_fill_0_.csched$l_uic #define csched$w_mem csched$r_fill_0_.csched$r_fill_1_.csched$w_mem #define csched$w_grp csched$r_fill_0_.csched$r_fill_1_.csched$w_grp #define csched$l_flags csched$r_fill_2_.csched$l_flags #define csched$v_windfall csched$r_fill_2_.csched$r_fill_3_.csched$v_windfall #define csched$v_cluster csched$r_fill_2_.csched$r_fill_3_.csched$v_cluster #define csched$v_delpnd csched$r_fill_2_.csched$r_fill_3_.csched$v_delpnd #define csched$b_days csched$r_fill_4_.csched$b_days #define csched$v_monday csched$r_fill_4_.csched$r_fill_5_.csched$v_monday #define csched$v_tuesday csched$r_fill_4_.csched$r_fill_5_.csched$v_tuesday #define csched$v_wednesday csched$r_fill_4_.csched$r_fill_5_.csched$v_wednesday #define csched$v_thursday csched$r_fill_4_.csched$r_fill_5_.csched$v_thursday #define csched$v_friday csched$r_fill_4_.csched$r_fill_5_.csched$v_friday #define csched$v_saturday csched$r_fill_4_.csched$r_fill_5_.csched$v_saturday #define csched$v_sunday csched$r_fill_4_.csched$r_fill_5_.csched$v_sunday #endif /* #if !defined(__VAXC) */ #define CSCHED$S_CLASS_NAME 16 #define CSCHED$K_LENGTH 160 /* Length of structure */ /* Values for each Record type are: */ #define CSCHED$K_CLASS 1 #define CSCHED$K_USERNAME 2 #define CSCHED$K_UIC 3 #define CSCHED$K_ACCOUNT 4 #define CSCHED$K_NODE 5 /* Define a maximum number of classes. The class scheduler database file is */ /* designed to support an unlimited number of classes. However, we place a */ /* limit of the number of classes so that we can easily determine the size of */ /* the in-memory class scheduler arrays. */ /* */ #define CSCHED$K_MAX_SCHED_CLASSES 256 /* */ /* The following 2 constants define the actual size of the user name and account */ /* name fields. The size of these fields is tied to the size of these same */ /* fields in the sysuaf.dat file. The Authorize image limits these names to */ /* 12 and 8 bytes respectively despite the fact that uafdef.sdl reserves 32 */ /* bytes for each of these fields in the sysuaf.dat file. If Authorize ever */ /* increases the limit on these fields, then these constants should be adjusted */ /* to match the new limits. */ /* */ #define CSCHED$K_USERNAME_REAL_SIZE 12 #define CSCHED$K_ACCOUNT_REAL_SIZE 8 /* */ /* This is the class scheduler's work area. The memory for this work */ /* area is allocated/deallocated by the SMIserver and will be used by */ /* the SMI object routines. This work area holds the RMS data structures */ /* used when reading/writing to the class scheduler database file. */ /* */ #define SCHEDWA$K_LENGTH 1232 struct schedwa { unsigned char schedwa$b_fab [80]; /* FAB for database file */ unsigned char schedwa$b_rab [144]; /* RAB for database file */ unsigned char schedwa$b_class_key0 [100]; /* 6 XAB's to represent 6 different */ unsigned char schedwa$b_class_key1 [100]; /* index keys into database file. */ unsigned char schedwa$b_class_key2 [100]; unsigned char schedwa$b_class_key3 [100]; unsigned char schedwa$b_class_key4 [100]; unsigned char schedwa$b_class_key5 [100]; unsigned char schedwa$b_xabpro [88]; /* Protection XAB */ unsigned char schedwa$b_input_buf [160]; /* Input buffer */ unsigned char schedwa$b_output_buf [160]; /* Output buffer */ } ; /* Bit definitions for the flags field passed between SYSMAN and the SMIserver */ /* for the ADD, DELETE, and SHOW commands. Since both these images include this */ /* file, it is an appropriate place to include them. */ #define CSCHED$K_ALL 0 /* flags for the SHOW command */ #define CSCHED$K_FULL 1 #define CSCHED$K_WINDFALL 0 /* flags for the ADD command and the cluster flag */ #define CSCHED$K_CLUSTER 1 /* is also valid for the DELETE command */ /* Values below represent the item codes for the item list which */ /* contains the user data for a scheduling class. These item codes are used for */ /* the ADD and MODIFY functions. The item list is passed from SYSMAN to the SMI */ /* class scheduler object routine. */ #define CSCHED$K_ADD_USER 1 #define CSCHED$K_ADD_ACCOUNT 2 #define CSCHED$K_ADD_UIC 3 #define CSCHED$K_REMOVE_USER 4 #define CSCHED$K_REMOVE_ACCOUNT 5 #define CSCHED$K_REMOVE_UIC 6 #define CSCHED$K_NUMBER_OF_ITEMCODES 7 #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 /* __CSCHEDDEF_LOADED */