1 /* ***********************************************************
  2    *                                                         *
  3    * Copyright, (C) Honeywell Bull Inc., 1987                *
  4    *                                                         *
  5    * Copyright, (C) Honeywell Information Systems Inc., 1982 *
  6    *                                                         *
  7    * Copyright (c) 1972 by Massachusetts Institute of        *
  8    * Technology and Honeywell Information Systems, Inc.      *
  9    *                                                         *
 10    *********************************************************** */
 11 
 12 
 13 /* SYSERR_DATA - The syserr database.   */
 14 /* Last modified (Date and reason):
 15    16 Nov 84 by K. Loepere to use up a full page.
 16    7 Mar 79 by D. Spector to fix "like to refer" bug
 17    2/6/76 by S. Webber Initial coding */
 18 
 19 syserr_data: proc;
 20 
 21 /* This program creates the syserr_data data base */
 22 
 23 /* Automatic */
 24 
 25 dcl 1 cdsa aligned like cds_args;
 26 dcl  code fixed bin (35);
 27 dcl  tsegp (1) ptr;
 28 
 29 /* Static */
 30 
 31 dcl  big_time fixed bin (71) init (100000000000000);
 32 dcl  exclude_pad (1) char (32) aligned static options (constant) init ("pad*");
 33 dcl  syserr_dataname char (11) aligned static init ("syserr_data") options (constant);
 34 
 35 /* Builtins */
 36 
 37 dcl (addr, bin, mod, rel, size, string) builtin;
 38 
 39 /* Entries */
 40 
 41 dcl  com_err_ entry options (variable);
 42 dcl  create_data_segment_ entry (ptr, fixed bin (35));
 43 dcl  get_temp_segments_ entry (char (*), (*) ptr, fixed bin (35));
 44 dcl  release_temp_segments_ entry (char (*), (*) ptr, fixed bin (35));
 45 %page;
 46 
 47 /* The following structure describes the overall format of syserr_data */
 48 
 49 dcl  syserr_datap ptr;
 50 
 51 dcl 1 syserr_data aligned based (syserr_datap),
 52     2 log_meters (16) fixed bin,
 53     2 syserr_size fixed bin (18),                           /* size of "sd" structure above */
 54     2 wired_log_size fixed bin (18),                        /* size of "wlog" structure above */
 55     2 logger_proc_id bit (36),                              /* process ID for logger HPROC */
 56     2 pad fixed bin,
 57     2 logger_ec fixed bin (71),                             /* event channel for special wakeups for HPROC */
 58     2 syserr_area aligned like sd,
 59     2 wired_log_area aligned like wlog,
 60     2 pad_extra_wmess (size (wmess)) bit (36);              /* extra header at end of wired section */
 61 %page;
 62           call get_temp_segments_ ("syserr_data", tsegp, code);
 63           syserr_datap = tsegp (1);
 64           wlog_ptr = addr (syserr_data.wired_log_area);
 65 
 66 /* Now begins the initialization */
 67 
 68           syserr_data.syserr_size = size (sd);
 69           syserr_data.wired_log_area.head.bsize = 968;
 70           syserr_data.wired_log_size = size (wlog) + size (wmess);
 71 
 72           call check (addr (syserr_data.syserr_area), "syserr_area", 2);
 73 
 74 /* Now set up call to create data base */
 75 
 76           cdsa.sections (1).p = addr (syserr_data);
 77           cdsa.sections (1).len = size (syserr_data);
 78           cdsa.sections (1).struct_name = "syserr_data";
 79 
 80           cdsa.seg_name = "syserr_data";
 81           cdsa.num_exclude_names = 1;
 82           cdsa.exclude_array_ptr = addr (exclude_pad);
 83 
 84           string (cdsa.switches) = "0"b;
 85           cdsa.switches.have_text = "1"b;
 86 
 87           call create_data_segment_ (addr (cdsa), code);
 88 
 89           call release_temp_segments_ ("syserr_data", tsegp, code);
 90 %page;
 91 check:    proc (where, message, modulo);
 92 
 93 dcl  message char (*) parameter;
 94 dcl  modulo fixed bin parameter;
 95 dcl  where ptr parameter;
 96 
 97                if mod (bin (rel (where), 18), modulo) ^= 0 then
 98                     call com_err_ (0, syserr_dataname, "The variable ^a is not aligned on a ^d-word boundary.",
 99                     message, modulo);
100 
101           end check;
102 %page; %include cds_args;
103 %page; %include syserr_data;
104      end syserr_data;