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;