Opened 16 months ago

Last modified 12 months ago

#353 assigned defect

ssu_$add_request_table fails to store table position for testing in subsequent calls — at Version 4

Reported by: Gary Dixon Owned by: Eric Swenson
Priority: major Milestone: MR12.9
Component: General Version: MR12.5
Keywords: Cc:

Description (last modified by Gary Dixon)

Request table position value is not preserved by ssu_$add_request_table when adding a new request table to an ssu_ subsystem.

Therefore, subsequent ssu_$add_request_table calls cannot compare the requested table position with position specified for each existing request table.

To correct this deficiency, the version of the structure in ssu_request_tables_list.incl.pl1 must be incremented to version 2 so the given table position can be preserved. It will occupy storage space formerly defined as a .pad element in the version 1 structure.

Recommend changes to ssu_request_tables_list structure are shown below.

cpa [lpn ssu_request_tables_list.ip] ==

A1        /* BEGIN INCLUDE FILE ... ssu_request_tables_list.incl.pl1 */
Changed by B to:
B1        /*  START OF:       ssu_request_tables_list.incl.pl1          *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  * */
B2        


A4        /* The list of request tables in use by a subsystem invocation */
Changed by B to:
B5                  /*  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *   */
B6                  /*                                                                                                */
B7                  /* The list of request tables in use by a subsystem invocation.  The caller of                    */
B8                  /* ssu_$add_request_table declares a request table by name as a fixed bin external static         */
B9                  /* variable.  For example:                                                                        */
B10                 /*                                                                                                */
B11                 /*   dcl  azm_request_table_$azm_request_table_ fixed bin external static;                        */
B12                 /*                                                                                                */
B13                 /* The request_tables_list.table_ptr points to that variable.  This permits the caller to obtain  */
B14                 /* pointers to the current request table(s) without knowing their internal format.                */
B15                 /*                                                                                                */
B16                 /* Existing callers are encouraged to upgrade their calls to ssu_$list_request_tables to request  */
B17                 /* the REQUEST_TABLES_LIST_VERSION_2 structure, which is shown below.                             */
B18                 /*                                                                                                */
B19                 /*  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *   */


A9                3 version fixed binary,                             /* version of this structure */
A10               3 n_tables fixed binary,                            /* # of request tables in the list */
A11             2 tables (request_tables_list_n_tables refer (request_tables_list.n_tables)),
A12               3 table_ptr pointer,                                /* -> this request table */
A13               3 flags,
A14                 4 table_valid bit (1) unaligned,                  /* "1"b => this request table is valid */
A15                 4 pad bit (35) unaligned,
A16               3 pad bit (36);
A17       
A18       dcl  rtl_ptr pointer;
A19       
A20       dcl  request_tables_list_n_tables fixed binary;             /* for allocating the above structure */
Changed by B to:
B24               3 version fixed binary,                             /* version of this structure                              */
B25               3 n_tables fixed binary,                            /* # of request tables in the list                        */
B26             2 tables (request_tables_list_n_tables refer (request_tables_list.n_tables)),
B27               3 table_ptr pointer,                                /* -> this request table                                  */
B28               3 flags,
B29                 4 table_valid bit (1) unaligned,                  /* "1"b => this request table is valid                    */
B30                 4 pad bit (35) unaligned,
B31               3 table_position fixed binary;                      /* Position of this request table related to the others.  */
B32                                                                   /*  Version 1 of this structure declares this element     */
B33                                                                   /*  as: pad bit(36) aligned.                              */
B34       dcl  rtl_ptr pointer;
B35       
B36       dcl  request_tables_list_n_tables fixed binary;             /* for allocating the above structure                     */


A23       
A24       /* END INCLUDE FILE ... ssu_request_tables_list.incl.pl1 */
Changed by B to:
B39       dcl  REQUEST_TABLES_LIST_VERSION_2 fixed binary static options (constant) initial (2);
B40       
B41       /*  END OF:         ssu_request_tables_list.incl.pl1          *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  * */

Comparison finished: 4 differences, 49 lines.

Change History (4)

comment:1 by Gary Dixon, 16 months ago

Description: modified (diff)

comment:2 by Gary Dixon, 16 months ago

Description: modified (diff)

comment:3 by Gary Dixon, 16 months ago

Description: modified (diff)

comment:4 by Gary Dixon, 16 months ago

Description: modified (diff)
Note: See TracTickets for help on using tickets.