{5} Accepted, Active Tickets by Owner (Full Description) (8 matches)
List tickets accepted, group by ticket owner. This report demonstrates the use of full-row display.
Eric Swenson (2 matches)
| Ticket | Summary | Component | Milestone | Type | Created | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Description | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| #405 | Update >t>crossref.ec to include new >ldd>net library | Tools | MR12.9 | defect | 5 days ago | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
The crossref exec_com generates cross references of the Multics libraries. Now that the new network library has been added to the release, this exec_com needs to include this library in its "total" cross reference. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| #272 | Crank runs give warnings about missing PDTs | Administration | No Milestore | issue | 5 years ago | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
When you run the crank on a newly-coldbooted system, you get the following warnings: pdt_copy: Entry not found. Operator.pdt pdt_copy: Entry not found. HFED.pdt pdt_copy: Entry not found. Terminals.pdt compute_bill: Entry not found. Operator.pdt compute_bill: Entry not found. HFED.pdt compute_bill: Entry not found. Terminals.pdt update_pdts_from_reqfile: Entry not found. Operator.pdt update_pdts_from_reqfile: Entry not found. HFED.pdt update_pdts_from_reqfile: Entry not found. Terminals.pdt These are not fatal, and probably even reasonable. It probably makes sense to NOT install the Operator, HFED, and Terminals projects automatically. However, if we agree that this is true, it might be nice to update the crank to not provide these warnings (or not). This ticket is here so that we can decide. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Gary Dixon (6 matches) |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| #403 | Add ipc_$read_ev_chn to pl1.dcl | Tools | MR12.9 | defect | 5 days ago | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
All of the external entry points of ipc_ are included in pl1.dcl (because they are all referenced via the ipc_.alm transfer vector) except for:
Because $run_event_calls entry point is only expected to be called by the wkp_signal_handler_, one could argue there is no need to include its declaration in the pl1.dcl segment. But if so, then why is its entry point documented in ipc_.info? Perhaps it should not be so documented. ipc_$read_ev_chn is definitely designed for use by IPC users, and therefore should be declared in pl1.dcl. This ticket recommends that repair. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| #397 | Need a tool to display IPC Event Channels | Tools | MR12.9 | enhancement | 4 weeks ago | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
It is sometimes necessary to display status information for the IPC event channels in-use by a given process in order to determine why the communication between two Multics processes is not functioning properly. An Event Channel Table (ECT) is created in each active ring of a user process which invokes ipc_$create_event_channel (or one of the earlier channel creation subroutines) to request creation of a new event wait or event call channel for use in that ring. A new tool is needed to:
Ideally, the new tool would be able to display unhandled events recorded in the table on a particular event channel. However, this may be difficult to do, since there is no particular format required for the event messages sent through event wait and event call channels. Providing meters, and showing status of existing event channels would be a good start for such tool. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| #398 | Install new token command/active function | Tools | MR12.9 | enhancement | 4 weeks ago | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
token is a new command/active function which captures the output returned by a command (like dump_segment or ring_zero_dump), parses it into tokens, then uses specifications (rules) to select desired information from that output. The command displays the selected tokens; the active function returns value items (numbers, pointer values, etc) to the caller. token is designed to be used in an exec_com script to select specific information from a data segment (using dump_segment's structure display interface to select the particular items), and save that data as an exec_com variable for eventual display to the user. A given data item can be acquired and saved in a single exec_com &set statement. For example, the following &set statement dumps the first 1200_o words of the stack_header structure and selects the stack_header.ect_ptr pointer value as the return string from the token active function. vptr uses that pointer to locate the Event Channel Table for the given ring (whose stack_header is being displayed), and assigns that location to the ectP exec_com variable. The rules for selecting the return string are tailored to dump_segment structure output strings. The -dump_segment_as_value (-dsav) control_arg selects those canned rules as -match specifications. &set ectP &[vptr ||[token -cmd "rzd &(stackP) +0 1200 -as stack_header.ect_ptr" -dsav] -null] The calling sequence for the proposed token command/AF is shown below. 2026-08-10 token Syntax as a command: token -control_args Syntax as an active function: [token -control_args] Control arguments (input): -input TOKEN_STRING, -command COMMAND_LINE, -in TOKEN_STRING -cmd COMMAND_LINE Control arguments (specifications): -match SPECIFICATION, -dump_segment_as_value, -m SPECIFICATION -dsav Control arguments (debugging): -mode MODE_STRING, -md MODE_STRING List of matching specifiers: <element_name> <value> <array_index> <value: if <element_name>> <entrypoint_name> <value: if <element_name> returns "1"b> <skip> <value: if <element_name> returns "0"b> <skip: N> <value: if <entrypoint_name>> List of mode names: args input, in specifications, specs, sp match, mh, m |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| #399 | analyze_multics (azm) display request should accept -in control arg | Tools | MR12.9 | enhancement | 3 weeks ago | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
The dump_segment command currently supports display of a region of memory as holding elements of a PL/I structure. It obtains descriptors for elements of the structure from a source program which declares the structure and is compiled with a symbol table. help dump_segment -scn "structure display" >doc>info>dump_segment.info (24 lines follow; 372 lines in info) 2026-06-12 dump_segment, ds Control arguments (structure display as a command): The following control arguments may not be given when dump_segment is invoked as an active function. -as STRUCTURE_NAME displays the data as a PL/I structure defined by STRUCTURE_NAME. The STRUCTURE_NAME can be a structure defined in one of the system include files supported by the analyze_multics display request. See >doc>ss>azm>structure_names.info for a list of supported include files and structures. Or the STRUCTURE_NAME can be a PL/I structure declared in an object program specified in the -in control argument. See "Notes for structure display" below. -in VIRTUAL_ENTRY identifies an object program compiled with the -table control argument which declares the STRUCTURE_NAME given with the -as control argument. If -in is not given, then STRUCTURE_NAME must be found in one of the segments listed in the structure search list. For example: dump_segment 234|0 -as stack_header.ect_ptr 000000 ect_ptr = 247|17240 [pd]>!BBBKbhJCBqLBMM.area.linker If dump_segment -as is given without using -in control argument, the object segments named in the structure search paths are searched for the given STRUCTURE_NAME.ELEMENT_NAME. These objects are compiled with a symbol table (pl1 -table ...) declaring the STRUCTURE_NAME variable's elements. psp structure
structure
>tools>structure_library_1_
>tools>structure_library_2_
>tools>structure_library_3_
>tools>structure_library_4_
>tools>structure_library_5_
>tools>structure_library_6_
>udd>m>gd>lib>gcd_structure_library_1_
If the -in control argument is also given, it specifies the pathname of another object segment compiled with -table which includes the structure variable declared as STRUCTURE_NAME. The example below shows the ring_zero_dump (rzd) entrypoint of dump_segment specifying location of a pds object segment using the -in control argument. rzd pds -as pds.process_group_id -in [hd]>lib>structures>pds 000000 , process_group_id = "GDixon.Multics.a " The analyze_multics (azm) display (d) request also supports the -as control argument, but only looks for an object segment using the structure search list. If the desired structure is not declared in one of those object programs, display of the structure (or its elements) cannot be done using the display request. This ticket requests an enhancement to azm display to support the -in control argument as an additional way to locate descriptors for a structure declaration. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| #406 | Make fast event-wait channels easier to poll | Administration | MR12.9 | enhancement | 4 days ago | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
The Inter-Process Communication (IPC) facility provides 4 types of event channels for notifying a process of an external event: fast event-wait, (regular) event-wait, event-call and async event-call channel types. The caller of ipc_$create_event_channel selects one of these types when creating a new channel.
The other two types are the event-call channel, and async event-call channel. Neither of these two types factor into this discussion.
For a fast event-wait channel, there should be some way to return a pointer to fast_event_bit. That would permit the owner of a channel to rapidly check if an event had been reported while his process had been blocked (preempted for quantum run-out, or waiting for a timer to expire, or perhaps calling ipc_$block directly to wait for other event-wait channels). This would allow the owner to poll event status directly.
Note that cost of checking and clearing the fast_event_bit is significantly less than the cost of calling ipc_$read_ev_chn. Depending upon the owner's non-polling activity, he might often find posting of that bit due to other blocking of his process; and thereby avoid the overhead of the ips_$read_ev_chn call. Therefore, this ticket requests an enhancement to ips_$create_event_channel to return a pointer to the fast_event_bit associated with a new fast event-wait channel as one of its output values. The input to ipc_$create_event_channel is a data structure. dcl 1 ipc_create_arg_structure aligned based (ipc_create_arg_structure_ptr),
2 version char (8) unaligned init(ipc_create_arg_structure_v1),
2 channel_type fixed bin, /* See constants below. */
2 pad1 fixed bin,
2 call_entry variable entry (ptr), /* For event call channels -- who to call. */
2 call_data_ptr ptr, /* For event call channels -- something to tell them. */
2 call_priority fixed bin (17), /* For event call channels -- who's first? */
2 pad5 fixed bin,
ipc_create_arg_structure_ptr ptr;
When creating either regular or fast event-wait channel, only version and channel_type elements are referenced. The other elements relate to event-call channel creation. So my suggestion is to make use of the call_data_ptr element when creating a fast event-wait channel by having ipc_$create_event_channel make it point to the fast_event_bit associated with the newly-created channel. This could be done by adding two structures designed to create event-wait channels. dcl 1 ipc_create_wait_event aligned automatic,
2 version char (8) unaligned init(ipc_create_arg_structure_v1),
2 channel_type fixed bin init(WAIT_EVENT_CHANNEL_TYPE),
2 pad1 fixed bin,
2 pad2 variable entry (ptr),
2 pad3 ptr,
2 pad4 fixed bin,
2 pad5 fixed bin;
dcl 1 ipc_create_fast_event aligned automatic,
2 version char (8) unaligned init(ipc_create_arg_structure_v1),
2 channel_type fixed bin init(FAST_EVENT_CHANNEL_TYPE),
2 pad1 fixed bin,
2 pad2 variable entry (ptr),
2 event_bit_ptr ptr init(null()),
/* For fast event wait channels */
/* -- output ptr which locates fast_event_bit */
2 pad4 fixed bin,
2 pad5 fixed bin,
fast_event_bit bit(1) unaligned based (ipc_create_fast_event.event_bit_ptr);
In the current ipc_create_arg.incl.pl1, the existing ipc_create_arg_structure is declared: dcl 1 ipc_create_arg_structure aligned based (ipc_create_arg_structure_ptr),
2 version char (8) unaligned, /* From above. */
2 channel_type fixed bin, /* See constants below. */
2 call_entry variable entry (ptr), /* For event call channels -- who to call. */
2 call_data_ptr ptr, /* For event call channels -- something to tell them. */
2 call_priority fixed bin (17); /* For event call channels -- who's first? */
The pad1 and pad5 elements are missing, but the gap between channel_type and call_entry still exists, because the entry data type must be aligned on an even-word boundary; and the pad5 word does exist because the entire structure is aligned on a double-word boundary and is an even number of words in length. Coding standards require that all space within a public structure be explicitly declared. So I have added the pad1 and pad5 elements to represent this hidden space in my proposal above. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| #360 | ring0_get_ declares Multics status code parameter incorrectly | Administration | MR12.9 | defect | 17 months ago | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
The ring0_get_ subroutine was written in 1976 before Multics status code arguments were upgraded from a fixed bin aligned integer to a fixed bin(35) aligned encoding of a packed pointer. ring0_get_'s code parameter has never been upgraded from:
to:
Therefore, display_entrypoint_dcl (depd) and the emacs pl1dcl function return information about its entrypoint calling sequences ending with an incorrect code parameter declaration. It would be nice if this program's code argument declaration was changed to correct this problem. Meanwhile, programs declaring these entrypoints can manually change the declaration of the code argument to fixed bin(35). Storage for both fixed bin aligned and fixed bin(35) aligned values is the same size. This saves the programmer from having to declare an old_style_code variable to prevent the PL1 compiler from passing the normal code variable (fixed bin(35)) by value rather than by reference. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
