PQ02023 Adds d_purge_user() to Clean Up for DDMS Apps Using Temp ACBs --------------------------------------------------------------------- An external DDMS function call is provided (d_purge_user()) to clean up all leftover structures for DDMS apps using temporary ACBs. Prerequisite ------------ Install this fix on top of English 1.3.1 (PTF3) CS/2 UQ05603 or ECS/2 UQ11442. Problem Description ------------------- When running many DDMS apps which use temporary ACB resources, the DAE work pool memory is depleted. Other Fix Included ------------------ Also included in this fix is: PQ18251 - Visual Age app compiled with /Gt traps after many calls to DDMS. APAR Installation ----------------- 1. Shut down CS/2. 2. Backup the files being replaced: a. Under \cs2\backup\ create directories: PQ02023\dll\ PQ02023\dll\32_bit\ PQ02023\include\c\ b. To \cs2\backup\PQ02023\dll\ copy: cs2\dll\cs2dmcls.dll c. To \cs2\backup\PQ02023\dll\32_bit\ copy: cs2\dll\32_bit\cs232dm.dll cs2\dll\32_bit\cs232tdm.dll d. To \cs2\backup\PQ02023\include\c\ copy: cs2\include\c\cs2dmcal.h cs2\include\c\cs2dm.h 3. Download the PQ02023.zip into a temporary directory. 4. Issue: pkunzip PQ02023.zip 5. Copy the 5 files to their respective directories: cs2dmcls.dll -> \cs2\dll cs232dm.dll -> \cs2\dll\32_bit cs232tdm.dll -> \cs2\dll\32_bit cs2dmcal.h -> \cs2\include\c cs2dm.h -> \cs2\include\c 6. Restart CS/2. Documentation Update -------------------- The following has to be added to the "Device Data Management Support" book in Chapter 11 between d_output() and d_query(): -------------------------------------------------------- d_purge_user - Purge DAE ACB +-----------+-------+-------+-------+-------+-------+-------+-------+-------+ | Support | CS/2 | ECS2 | CS/VM | CSDOS | CS6000|ECS6000| CSSUN | CS/NT | +-----------+-------+-------+-------+-------+-------+-------+-------+-------+ | Originator| X | X | X | | X | X | X | X | +-----------+-------+-------+-------+-------+-------+-------+-------+-------+ | Process | X | X | X | | X | X | X | X | +-----------+-------+-------+-------+-------+-------+-------+-------+-------+ Purpose: Purges from the local DDMS server all internal structures associated with the calling ACB name. This command is useful when a DDMS application is started and stopped many times and it is coded to use a DAE Temporary ACB name. Coding this API in such application will prevent the DAE work pool from getting full. NOTE: This API should be invoked as the last DDMS API the program executes before terminating. Ensure that all pending DDMS API calls have been completed prior to issuing this call. Format +---------------------------------------------------------------------------+ | >>---d_purge_user( address of RDS )------------------------------------>< | +---------------------------------------------------------------------------+ RDS: The address of an RDS. See "RDS" on page 10-17. Use the "originator" field to specify the DAE application ACB name. Use the "destination" field to specify the local DDMS server. Related Topics - Chapter 2. "Connection Commands" Common Return codes for d_purge_user E_SUCCESSFUL /* Normal successful completion */ E_ORGNOTCONN /* Originator not connected. */ E_DESNOTCONN /* Destination not connected. */ Coding Example in C #includeCS2AP_RDS_T daerds; /*DAE RDS */ RDS rds; /*DDMS RDS */ char ACB_name [CS2RSNAMSIZ_N]; NAME orig = { NULL, ACB_name }; NAME dest = { NULL, "CS2DMR00.CS2NODE" }; . . tmp.rsname = ACB_name; CS2_TEMP_RES(&daerds, &tmp); . . rds.originator = &orig; rds.destination = &dest; . . d_connect( &rds, &req, &resp); . . /* main program logic */ . . /*------------------------------------------------------------------------*/ /* Program using DAE Temporary ACB names is about to terminate. */ /* Invoke the d_purge_user() so that DDMS deletes all our internal */ /* structures which are not needed for this temporary DAE ACB anymore. */ /*------------------------------------------------------------------------*/ d_purge_user( &rds); CS2_STOP_RES(&daerds); CS2_PURGE_RES(&daerds); - End -------------------------------------------------------------------------
About IBM | Privacy | Terms of use | Contact |