bug #255
enums must include DRMAA2_UNSET_ENUM
Status: | closed | Start date: | 02/03/2015 | |
---|---|---|---|---|
Priority: | High | Due date: | ||
Assignee: | - | % Done: | 0% |
|
Category: | - | |||
Target version: | - |
Description
DRMAA2_UNSET_ENUM is defined as -1 and not part of the ENUMs defined
by the standard. Those are all positive numbers.
Hence some compilers complaining about the tests if a specific
enum value is UNSET. The compiler seems to choose an int for the
ENUM and hence they have different types.
Therefore all enums need to include DRMAA2_UNSET_ENUM as value.
Probably we would need for each enum a different constant name.
History
Updated by Daniel Gruber over 7 years ago
I meant the compiler chooses an unsigned int since all values are positive.
/libs/drmaa2/drmaa2_types.c:95:21: error: comparison of constant -1 with expression of type 'const drmaa2_os' (aka 'const enum drmaa2_os') is always
true [-Werror,-Wtautological-constant-out-of-range-compare]
|| (os != DRMAA2_UNSET_ENUM && architectures[i].os == os)) {
Updated by Daniel Gruber over 7 years ago
Changing this for the next Univa Grid Engine release. Should be backward compatible since
DRMAA2_UNSET_ENUM is still defined and -1.
/* Constants for boolean values. */
typedef enum drmaa2_bool {
DRMAA2_FALSE = 0,
DRMAA2_TRUE = 1
} drmaa2_bool;
/* Constants for capabilities. */
typedef enum drmaa2_capability {
DRMAA2_UNSET_CAPABILITY = -1,
DRMAA2_ADVANCE_RESERVATION = 0,
DRMAA2_RESERVE_SLOTS = 1,
DRMAA2_CALLBACK = 2,
DRMAA2_BULK_JOBS_MAXPARALLEL = 3,
DRMAA2_JT_EMAIL = 4,
DRMAA2_JT_STAGING = 5,
DRMAA2_JT_DEADLINE = 6,
DRMAA2_JT_MAXSLOTS = 7,
DRMAA2_JT_ACCOUNTINGID = 8,
DRMAA2_RT_STARTNOW = 9,
DRMAA2_RT_DURATION = 10,
DRMAA2_RT_MACHINEOS = 11,
DRMAA2_RT_MACHINEARCH = 12
} drmaa2_capability;
/* Constants for the CPU type. */
typedef enum drmaa2_cpu {
DRMAA2_UNSET_CPU = -1,
DRMAA2_OTHER_CPU = 0,
DRMAA2_ALPHA = 1,
DRMAA2_ARM = 2,
DRMAA2_ARM64 = 3,
DRMAA2_CELL = 4,
DRMAA2_PARISC = 5,
DRMAA2_PARISC64 = 6,
DRMAA2_X86 = 7,
DRMAA2_X64 = 8,
DRMAA2_IA64 = 9,
DRMAA2_MIPS = 10,
DRMAA2_MIPS64 = 11,
DRMAA2_PPC = 12,
DRMAA2_PPC64 = 13,
DRMAA2_SPARC = 14,
DRMAA2_SPARC64 = 15
} drmaa2_cpu;
/* Constants for errors. */
typedef enum drmaa2_error {
DRMAA2_UNSET_ERROR = -1,
DRMAA2_SUCCESS = 0,
DRMAA2_DENIED_BY_DRMS = 1,
DRMAA2_DRM_COMMUNICATION = 2,
DRMAA2_TRY_LATER = 3,
DRMAA2_SESSION_MANAGEMENT = 4,
DRMAA2_TIMEOUT = 5,
DRMAA2_INTERNAL = 6,
DRMAA2_INVALID_ARGUMENT = 7,
DRMAA2_INVALID_SESSION = 8,
DRMAA2_INVALID_STATE = 9,
DRMAA2_OUT_OF_RESOURCE = 10,
DRMAA2_UNSUPPORTED_ATTRIBUTE = 11,
DRMAA2_UNSUPPORTED_OPERATION = 12,
DRMAA2_IMPLEMENTATION_SPECIFIC = 13,
DRMAA2_LASTERROR = 14
} drmaa2_error;
/* Constants for the event interface. */
typedef enum drmaa2_event {
DRMAA2_UNSET_EVEMT = -1,
DRMAA2_NEW_STATE = 0,
DRMAA2_MIGRATED = 1,
DRMAA2_ATTRIBUTE_CHANGE = 2
} drmaa2_event;
/* Constants for list types. */
typedef enum drmaa2_listtype {
DRMAA2_UNSET_LISTTYPE = -1,
DRMAA2_STRINGLIST = 0,
DRMAA2_JOBLIST = 1,
DRMAA2_QUEUEINFOLIST = 2,
DRMAA2_MACHINEINFOLIST = 3,
DRMAA2_SLOTINFOLIST = 4,
DRMAA2_RESERVATIONLIST = 5
} drmaa2_listtype;
/* Constants for the operating system name. */
typedef enum drmaa2_os {
DRMAA2_UNSET_OS = -1,
DRMAA2_OTHER_OS = 0,
DRMAA2_AIX = 1,
DRMAA2_BSD = 2,
DRMAA2_LINUX = 3,
DRMAA2_HPUX = 4,
DRMAA2_IRIX = 5,
DRMAA2_MACOS = 6,
DRMAA2_SUNOS = 7,
DRMAA2_TRU64 = 8,
DRMAA2_UNIXWARE = 9,
DRMAA2_WIN = 10,
DRMAA2_WINNT = 11
} drmaa2_os;
/* Constants for the job state. */
typedef enum drmaa2_jstate {
DRMAA2_UNSET_JSTATE = -1,
DRMAA2_UNDETERMINED = 0,
DRMAA2_QUEUED = 1,
DRMAA2_QUEUED_HELD = 2,
DRMAA2_RUNNING = 3,
DRMAA2_SUSPENDED = 4,
DRMAA2_REQUEUED = 5,
DRMAA2_REQUEUED_HELD = 6,
DRMAA2_DONE = 7,
DRMAA2_FAILED = 8
} drmaa2_jstate;
Updated by Peter Tröger over 7 years ago
This seems to be a very reasonable approach for the (gcc-implementation-specific) problem. Completely agreed.
Updated by Peter Tröger over 7 years ago
- Status changed from submitted to closed
Fixed in July 2015 errata.
(Other formats not available in this archive.