Skip to content

Commit 09be5b0

Browse files
authored
Zowe Suite v3.1.0
2 parents 73d53c8 + 940ad1a commit 09be5b0

13 files changed

+115
-11
lines changed

CHANGELOG.md

+3
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22

33
All notable changes to the ZSS package will be documented in this file.
44

5+
## `3.1.0`
6+
- Enhancement: module registry (#732)
7+
58
## `3.0.0`
69
- Enhancement: if no `zowe.logDirectory` is defined in config, logging is disabled. (#726)
710
- Bugfix: Support cross-memory server parameters longer than 128 characters (#684)

build/build_dynamic.sh

+6
Original file line numberDiff line numberDiff line change
@@ -50,12 +50,15 @@ xlc -S -M -qmetal -q64 -DSUBPOOL=132 -DMETTLE=1 -DMSGPREFIX=\"ZWE\" \
5050
-DZISDYN_REVISION="$micro" \
5151
-DZISDYN_VERSION_DATE_STAMP="$date_stamp" \
5252
-DZISDYN_PLUGIN_VERSION=${DYNLINK_PLUGIN_VERSION} \
53+
-DLPA_LOG_DEBUG_MSG_ID=\"ZWES0100I\" \
54+
-DMODREG_LOG_DEBUG_MSG_ID=\"ZWES0100I\" \
5355
-qreserved_reg=r12 \
5456
-DRCVR_CPOOL_STATES \
5557
-DHAVE_METALIO=1 \
5658
-Wc,langlvl\(extc99\),arch\(8\),agg,exp,list\(\),so\(\),off,xref,roconst,longname,lp64 \
5759
-I ${COMMON}/h -I ${ZSS}/h \
5860
-I ${ZSS}/zis-aux/include -I ${ZSS}/zis-aux/src \
61+
-I /usr/include/zos \
5962
${ZSS}/c/zis/zisdynamic.c \
6063
${ZSS}/c/zis/server-api.c \
6164
${ZSS}/c/zis/client.c \
@@ -81,6 +84,7 @@ xlc -S -M -qmetal -q64 -DSUBPOOL=132 -DMETTLE=1 -DMSGPREFIX=\"ZWE\" \
8184
${COMMON}/c/logging.c \
8285
${COMMON}/c/lpa.c \
8386
${COMMON}/c/metalio.c \
87+
${COMMON}/c/modreg.c \
8488
${COMMON}/c/nametoken.c \
8589
${COMMON}/c/pause-element.c \
8690
${COMMON}/c/pc.c \
@@ -125,6 +129,7 @@ for file in \
125129
logging \
126130
lpa \
127131
metalio \
132+
modreg \
128133
nametoken \
129134
pause-element \
130135
pc \
@@ -173,6 +178,7 @@ le.o \
173178
logging.o \
174179
lpa.o \
175180
metalio.o \
181+
modreg.o \
176182
nametoken.o \
177183
pause-element.o \
178184
pc.o \

build/build_zis.sh

+7-1
Original file line numberDiff line numberDiff line change
@@ -56,9 +56,12 @@ xlc -S -M -qmetal -q64 -DSUBPOOL=132 -DMETTLE=1 -DMSGPREFIX=\"ZWE\" \
5656
-DZIS_VERSION_DATE_STAMP="$date_stamp" \
5757
-DRADMIN_XMEM_MODE \
5858
-DRCVR_CPOOL_STATES \
59+
-DLPA_LOG_DEBUG_MSG_ID=\"ZWES0100I\" \
60+
-DMODREG_LOG_DEBUG_MSG_ID=\"ZWES0100I\" \
5961
-qreserved_reg=r12 \
6062
-Wc,arch\(8\),agg,exp,list\(\),so\(\),off,xref,roconst,longname,lp64 \
6163
-I ${COMMON}/h -I ${ZSS}/h -I ${ZSS}/zis-aux/include -I ${ZSS}/zis-aux/src \
64+
-I /usr/include/zos \
6265
${COMMON}/c/alloc.c \
6366
${COMMON}/c/as.c \
6467
${COMMON}/c/cellpool.c \
@@ -70,6 +73,7 @@ xlc -S -M -qmetal -q64 -DSUBPOOL=132 -DMETTLE=1 -DMSGPREFIX=\"ZWE\" \
7073
${COMMON}/c/logging.c \
7174
${COMMON}/c/lpa.c \
7275
${COMMON}/c/metalio.c \
76+
${COMMON}/c/modreg.c \
7377
${COMMON}/c/mtlskt.c \
7478
${COMMON}/c/nametoken.c \
7579
${COMMON}/c/pause-element.c \
@@ -102,7 +106,7 @@ xlc -S -M -qmetal -q64 -DSUBPOOL=132 -DMETTLE=1 -DMSGPREFIX=\"ZWE\" \
102106
${ZSS}/zis-aux/src/aux-host.c
103107

104108
for file in \
105-
alloc as cellpool cmutils collections crossmemory isgenq le logging lpa metalio mtlskt nametoken \
109+
alloc as cellpool cmutils collections crossmemory isgenq le logging lpa metalio modreg mtlskt nametoken \
106110
pause-element pc qsam radmin recovery resmgr scheduling shrmem64 stcbase timeutls utils xlate \
107111
zos zvt \
108112
parm plugin server server-api service \
@@ -125,6 +129,7 @@ ld -V -b ac=1 -b rent -b case=mixed -b map -b xref -b reus \
125129
logging.o \
126130
lpa.o \
127131
metalio.o \
132+
modreg.o \
128133
mtlskt.o \
129134
nametoken.o \
130135
qsam.o \
@@ -165,6 +170,7 @@ ld -V -b ac=1 -b rent -b case=mixed -b map -b xref -b reus \
165170
logging.o \
166171
lpa.o \
167172
metalio.o \
173+
modreg.o \
168174
mtlskt.o \
169175
nametoken.o \
170176
pause-element.o \

c/zis/server-api.c

+4
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,10 @@ _Bool zisIsLPADevModeOn(const ZISContext *context) {
3131
return (context->cmsFlags & devFlags) || ZIS_LPA_DEV_MODE;
3232
}
3333

34+
_Bool zisIsModregOn(const ZISContext *context) {
35+
return context->cmsFlags & CMS_SERVER_FLAG_USE_MODREG;
36+
}
37+
3438
void zisGetServerVersion(int *major, int *minor, int *revision) {
3539
*major = -1;
3640
*minor = -1;

c/zis/server.c

+57-7
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
#include "stcbase.h"
3333
#include "utils.h"
3434
#include "recovery.h"
35+
#include "modreg.h"
3536

3637
#include "zis/message.h"
3738
#include "zis/parm.h"
@@ -82,6 +83,9 @@ See details in the ZSS Cross Memory Server installation guide
8283
#define ZIS_PARM_DEV_MODE_LPA CMS_PROD_ID".DEV_MODE.LPA"
8384
#define ZIS_PARM_DEV_MODE_ON "YES"
8485

86+
#define ZIS_PARM_MODREG CMS_PROD_ID".MODULE_REGISTRY"
87+
#define ZIS_PARM_MODREG_OFF "NO"
88+
8589
#define ZIS_PARMLIB_PARM_SERVER_NAME CMS_PROD_ID".NAME"
8690

8791
#define ZIS_DYN_LINKAGE_PLUGIN_MOD_SUFFIX "ISDL"
@@ -676,18 +680,49 @@ static int relocatePluginToLPAIfNeeded(ZISContext *context,
676680
/* Check if LPA, and load if needed */
677681
if (lpaNeeded) {
678682

683+
const char *status = "n/a";
684+
679685
if (!lpaPresent) {
680686

681687
EightCharString ddname = {"STEPLIB "};
682-
int lpaRSN = 0;
683-
int lpaRC = lpaAdd(&anchor->moduleInfo, &ddname, &moduleName, &lpaRSN);
684-
if (lpaRC != 0) {
685-
zowelog(NULL, LOG_COMP_ID_CMS, ZOWE_LOG_SEVERE, ZIS_LOG_LPA_FAILURE_MSG,
686-
"ADD", anchor->moduleInfo.inputInfo.name, lpaRC, lpaRSN);
687-
return RC_ZIS_ERROR;
688+
689+
if (zisIsModregOn(context) && !zisIsLPADevModeOn(context)) {
690+
uint64_t modregRSN;
691+
int modregRC = modregRegister(ddname, moduleName, &anchor->moduleInfo,
692+
&modregRSN);
693+
if (modregRC == RC_MODREG_OK) {
694+
status = "new instance added to registry";
695+
lpaPresent = true;
696+
} else if (modregRC == RC_MODREG_ALREADY_REGISTERED) {
697+
status = "existing instance reused from registry";
698+
lpaPresent = true;
699+
} else if (modregRC == RC_MODREG_MARK_MISSING) {
700+
zowelog(NULL, LOG_COMP_ID_CMS, ZOWE_LOG_INFO,
701+
ZIS_LOG_MODREG_NO_MARK_MSG, moduleName.text);
702+
} else {
703+
zowelog(NULL, LOG_COMP_ID_CMS, ZOWE_LOG_SEVERE,
704+
ZIS_LOG_MODREG_FAILURE_MSG, moduleName.text,
705+
modregRC, modregRSN);
706+
return RC_ZIS_ERROR;
707+
}
708+
}
709+
710+
if (!lpaPresent) {
711+
int lpaRSN = 0;
712+
int lpaRC = lpaAdd(&anchor->moduleInfo, &ddname, &moduleName, &lpaRSN);
713+
if (lpaRC == 0) {
714+
status = "own instance loaded to LPA";
715+
} else {
716+
zowelog(NULL, LOG_COMP_ID_CMS, ZOWE_LOG_SEVERE,
717+
ZIS_LOG_LPA_FAILURE_MSG,
718+
"ADD", moduleName.text, lpaRC, lpaRSN);
719+
return RC_ZIS_ERROR;
720+
}
688721
}
689722

690723
anchor->flags |= ZIS_PLUGIN_ANCHOR_FLAG_LPA;
724+
} else {
725+
status = "previously added/loaded instance reused";
691726
}
692727

693728
/* Invoke EP to get relocated services */
@@ -699,6 +734,16 @@ static int relocatePluginToLPAIfNeeded(ZISContext *context,
699734

700735
*pluginAddr = getPluginDescriptor();
701736

737+
zowelog(NULL, LOG_COMP_ID_CMS, ZOWE_LOG_INFO,
738+
ZIS_LOG_MODULE_STATUS_MSG" (%p)", moduleName.text, status,
739+
lpaInfo->outputInfo.stuff.successInfo.loadPointAddr);
740+
741+
} else {
742+
743+
zowelog(NULL, LOG_COMP_ID_CMS, ZOWE_LOG_INFO,
744+
ZIS_LOG_MODULE_STATUS_MSG, moduleName.text,
745+
"private storage instance used");
746+
702747
}
703748

704749
return RC_ZIS_OK;
@@ -1443,7 +1488,7 @@ static int loadConfig(ZISContext *context,
14431488

14441489
static int getCMSConfigFlags(const ZISParmSet *zisParms) {
14451490

1446-
int flags = CMS_SERVER_FLAG_NONE;
1491+
int flags = CMS_SERVER_FLAG_USE_MODREG;
14471492

14481493
const char *coldStartValue = zisGetParmValue(zisParms, ZIS_PARM_COLD_START);
14491494
if (coldStartValue && strlen(coldStartValue) == 0) {
@@ -1475,6 +1520,11 @@ static int getCMSConfigFlags(const ZISParmSet *zisParms) {
14751520
flags |= CMS_SERVER_FLAG_RESET_LOOKUP;
14761521
}
14771522

1523+
const char *modregMode = zisGetParmValue(zisParms, ZIS_PARM_MODREG);
1524+
if (modregMode && !strcmp(modregMode, ZIS_PARM_MODREG_OFF)) {
1525+
flags &= ~CMS_SERVER_FLAG_USE_MODREG;
1526+
}
1527+
14781528
return flags;
14791529
}
14801530

c/zis/stubinit.c

+2
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
stubVector[ZIS_STUB_ZISDYNPV] = (void*)zisdynGetPluginVersion;
1313
stubVector[ZIS_STUB_ZISGVRSN] = (void*)zisGetServerVersion;
1414
stubVector[ZIS_STUB_ZISLPADV] = (void*)zisIsLPADevModeOn;
15+
stubVector[ZIS_STUB_ZISMDREG] = (void*)zisIsModregOn;
1516
stubVector[ZIS_STUB_ZISCSRVC] = (void*)zisCallService;
1617
stubVector[ZIS_STUB_ZISCUSVC] = (void*)zisCallServiceUnchecked;
1718
stubVector[ZIS_STUB_ZISCVSVC] = (void*)zisCallVersionedService;
@@ -558,6 +559,7 @@
558559
stubVector[ZIS_STUB_ZVTFENTR] = (void*)zvtFreeEntry;
559560
stubVector[ZIS_STUB_ZVTGXMLR] = (void*)zvtGetCMSLookupRoutineAnchor;
560561
stubVector[ZIS_STUB_ZVTSXMLR] = (void*)zvtSetCMSLookupRoutineAnchor;
562+
stubVector[ZIS_STUB_MODRRGST] = (void*)modregRegister;
561563
/*
562564
This program and the accompanying materials are
563565
made available under the terms of the Eclipse Public License v2.0 which accompanies

c/zis/zisdynamic.c

+3
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
#include "logging.h"
3232
#include "lpa.h"
3333
#include "metalio.h"
34+
#include "modreg.h"
3435
#include "nametoken.h"
3536
#include "pause-element.h"
3637
#include "pc.h"
@@ -423,6 +424,8 @@ static int verifyZISVersion(void) {
423424

424425
ZISPlugin *getPluginDescriptor(void) {
425426

427+
MODREG_MARK_MODULE();
428+
426429
if (verifyZISVersion() != 0) {
427430
return NULL;
428431
}

h/zis/message.h

+12
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,18 @@
116116
#define ZIS_LOG_CXMS_MOD_NAME_FAILED_MSG_TEXT "ZSS Cross-Memory server module member name not determined, RC = %d"
117117
#define ZIS_LOG_CXMS_MOD_NAME_FAILED_MSG ZIS_LOG_CXMS_MOD_NAME_FAILED_MSG_ID" "ZIS_LOG_CXMS_MOD_NAME_FAILED_MSG_TEXT
118118

119+
#define ZIS_LOG_MODULE_STATUS_MSG_ID ZIS_MSG_PRFX"0022I"
120+
#define ZIS_LOG_MODULE_STATUS_MSG_TEXT "Module %-8.8s status: %s"
121+
#define ZIS_LOG_MODULE_STATUS_MSG ZIS_LOG_MODULE_STATUS_MSG_ID" "ZIS_LOG_MODULE_STATUS_MSG_TEXT
122+
123+
#define ZIS_LOG_MODREG_NO_MARK_MSG_ID ZIS_MSG_PRFX"0023I"
124+
#define ZIS_LOG_MODREG_NO_MARK_MSG_TEXT "Module %-8.8s not eligible for registry, proceeding with LPA ADD"
125+
#define ZIS_LOG_MODREG_NO_MARK_MSG ZIS_LOG_MODREG_NO_MARK_MSG_ID" "ZIS_LOG_MODREG_NO_MARK_MSG_TEXT
126+
127+
#define ZIS_LOG_MODREG_FAILURE_MSG_ID ZIS_MSG_PRFX"0024E"
128+
#define ZIS_LOG_MODREG_FAILURE_MSG_TEXT "Module %-8.8s not registered, RC = %d, RSN = 0x%016llX"
129+
#define ZIS_LOG_MODREG_FAILURE_MSG ZIS_LOG_MODREG_FAILURE_MSG_ID" "ZIS_LOG_MODREG_FAILURE_MSG_TEXT
130+
119131
/* ZIS AUX messages */
120132

121133
#define ZISAUX_LOG_STARTUP_MSG_ID ZIS_MSG_PRFX"0050I"

h/zis/server-api.h

+8
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
#pragma map(zisGetServerVersion, "ZISGVRSN")
2020
#pragma map(zisIsLPADevModeOn, "ZISLPADV")
21+
#pragma map(zisIsModregOn, "ZISMDREG")
2122

2223
/**
2324
* Get the version of ZIS. In case of failure, all the results are set to -1.
@@ -36,6 +37,13 @@ struct ZISContext_tag;
3637
*/
3738
_Bool zisIsLPADevModeOn(const struct ZISContext_tag *context);
3839

40+
/**
41+
* Check if the module registry is enabled for ZIS.
42+
* @param[in] context The server context.
43+
* @return @c true if on, otherwise @c false.
44+
*/
45+
_Bool zisIsModregOn(const struct ZISContext_tag *context);
46+
3947
#endif /* ZIS_SERVER_API_H_ */
4048

4149
/*

h/zis/zisstubs.h

+5-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
FULL BACKWARD COMPATIBILITY MUST BE MAINTAINED
2121
*/
2222

23-
#define ZIS_STUBS_VERSION 4
23+
#define ZIS_STUBS_VERSION 5
2424

2525
/*
2626
How does a user check for compatibility?
@@ -48,6 +48,7 @@
4848
#define ZIS_STUB_ZISDYNPV 2 /* zisdynGetPluginVersion mapped */
4949
#define ZIS_STUB_ZISGVRSN 3 /* zisGetServerVersion mapped */
5050
#define ZIS_STUB_ZISLPADV 4 /* zisIsLPADevModeOn mapped */
51+
#define ZIS_STUB_ZISMDREG 5 /* zisIsModregOn mapped */
5152

5253
/* zis/client, 50-79 */
5354
#define ZIS_STUB_ZISCSRVC 50 /* zisCallService */
@@ -693,6 +694,9 @@
693694
#define ZIS_STUB_ZVTGXMLR 904 /* zvtGetCMSLookupRoutineAnchor mapped */
694695
#define ZIS_STUB_ZVTSXMLR 905 /* zvtSetCMSLookupRoutineAnchor mapped */
695696

697+
/* modreg, 915-920 */
698+
#define ZIS_STUB_MODRRGST 915 /* modregRegister mapped */
699+
696700
#endif /* ZIS_ZISSTUBS_H_ */
697701

698702
/*

plugins/zis/intro to zis plugins.mp4

-97.9 MB
Binary file not shown.

samplib/zis/ZWESIP00

+7-1
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,13 @@
5353
//* AT START UP. THIS MODE MUST NEVER BE USED IN PRODUCTION */
5454
//* AS IT MAY AFFECT THE CALLERS OF THE CROSS-MEMORY SERVER. */
5555
//* USE THIS MODE TO DECREASE THE MEMORY FOOTPRINT DURING */
56-
//* DEVELOPMENT. */
56+
//* DEVELOPMENT. ADDITIONALLY, THIS MODE WILL DISABLE THE */
57+
//* MODULE REGISTRY FEATURE BECAUSE ZIS CANNOT REMOVE SHARED */
58+
//* MODULE FROM LPA. */
59+
//* MODULE_REGISTRY - MODULE REGISTRY MODE. DEFAULT IS YES. IF */
60+
//* SET TO NO, DISABLES THE MODULE REGISTRY FEATURE, SO THAT */
61+
//* ZIS WILL ALWAYS USE ITS OWN INSTANCES OF LOAD MODULES IN */
62+
//* LPA. */
5763
//* */
5864
//********************************************************************/
5965

0 commit comments

Comments
 (0)