4073 assert(major > 0, "invalid OS version"); |
4073 assert(major > 0, "invalid OS version"); |
4074 const int minor = atoi(uts.release); |
4074 const int minor = atoi(uts.release); |
4075 assert(minor > 0, "invalid OS release"); |
4075 assert(minor > 0, "invalid OS release"); |
4076 _os_version = (major << 24) | (minor << 16); |
4076 _os_version = (major << 24) | (minor << 16); |
4077 char ver_str[20] = {0}; |
4077 char ver_str[20] = {0}; |
4078 char *name_str = "unknown OS"; |
4078 const char* name_str = "unknown OS"; |
4079 if (strcmp(uts.sysname, "OS400") == 0) { |
4079 if (strcmp(uts.sysname, "OS400") == 0) { |
4080 // We run on AS/400 PASE. We do not support versions older than V5R4M0. |
4080 // We run on AS/400 PASE. We do not support versions older than V5R4M0. |
4081 _on_pase = 1; |
4081 _on_pase = 1; |
4082 if (os_version_short() < 0x0504) { |
4082 if (os_version_short() < 0x0504) { |
4083 trcVerbose("OS/400 releases older than V5R4M0 not supported."); |
4083 trcVerbose("OS/400 releases older than V5R4M0 not supported."); |
4084 assert(false, "OS/400 release too old."); |
4084 assert(false, "OS/400 release too old."); |
4085 } |
4085 } |
4086 name_str = "OS/400 (pase)"; |
4086 name_str = "OS/400 (pase)"; |
4087 jio_snprintf(ver_str, sizeof(ver_str), "%u.%u", major, minor); |
4087 jio_snprintf(ver_str, sizeof(ver_str), "%u.%u", major, minor); |
4088 } else if (strcmp(uts.sysname, "AIX") == 0) { |
4088 } else if (strcmp(uts.sysname, "AIX") == 0) { |
4089 // We run on AIX. We do not support versions older than AIX 5.3. |
4089 // We run on AIX. We do not support versions older than AIX 7.1. |
4090 _on_pase = 0; |
4090 _on_pase = 0; |
4091 // Determine detailed AIX version: Version, Release, Modification, Fix Level. |
4091 // Determine detailed AIX version: Version, Release, Modification, Fix Level. |
4092 odmWrapper::determine_os_kernel_version(&_os_version); |
4092 odmWrapper::determine_os_kernel_version(&_os_version); |
4093 if (os_version_short() < 0x0503) { |
4093 if (os_version_short() < 0x0701) { |
4094 trcVerbose("AIX release older than AIX 5.3 not supported."); |
4094 trcVerbose("AIX releases older than AIX 7.1 are not supported."); |
4095 assert(false, "AIX release too old."); |
4095 assert(false, "AIX release too old."); |
4096 } |
4096 } |
4097 name_str = "AIX"; |
4097 name_str = "AIX"; |
4098 jio_snprintf(ver_str, sizeof(ver_str), "%u.%u.%u.%u", |
4098 jio_snprintf(ver_str, sizeof(ver_str), "%u.%u.%u.%u", |
4099 major, minor, (_os_version >> 8) & 0xFF, _os_version & 0xFF); |
4099 major, minor, (_os_version >> 8) & 0xFF, _os_version & 0xFF); |
4100 } else { |
4100 } else { |
4101 assert(false, name_str); |
4101 assert(false, "%s", name_str); |
4102 } |
4102 } |
4103 trcVerbose("We run on %s %s", name_str, ver_str); |
4103 trcVerbose("We run on %s %s", name_str, ver_str); |
4104 } |
4104 } |
4105 |
4105 |
4106 guarantee(_on_pase != -1 && _os_version, "Could not determine AIX/OS400 release"); |
4106 guarantee(_on_pase != -1 && _os_version, "Could not determine AIX/OS400 release"); |