jobid format and parse

This commit is contained in:
Rongsong Shen 2025-11-19 14:44:49 +08:00
parent 26e3c21c87
commit 3488b62716
6 changed files with 212 additions and 15 deletions

View file

@ -41,16 +41,21 @@ typedef uint64_t jobid_t;
#define N_ARRAY_IDX_BITS (15)
#define N_SEQENCE_BITS \
#define N_SEQUENCE_BITS \
(N_JOBID_BITS - N_CLUSTER_ID_BITS - N_APISERVER_ID_BITS - N_TIMESTAMP_BITS \
- N_TAG_BITS)
#define SEQUENCE_HIGH_SHIFT (N_ARRAY_IDX_BITS)
#define UMAX_BITS(w) ((((uint64_t)0x01) << (int)w) - 1)
#define N_MAX_FIELDS_JOBID (5)
#define UMAX_BITS(w) ((((uint64_t)0x01) << ((int)w)) - 1)
#define MAX_CLUSTER_ID (UMAX_BITS(N_CLUSTER_ID_BITS))
#define MAX_APISERVER_ID (UMAX_BITS(N_APISERVER_ID_BITS))
#define MAX_ARRAY_IDX (UMAX_BITS(N_ARRAY_IDX_BITS))
#define REGEX_JOBID "[ \t]*([0-9]+)-([0-9]+)-([0-9]+)-([0-9]+)[ \t]*"
#define REGEX_JOBARRAY_ID "[ \t]*([0-9]+)-([0-9]+)-([0-9]+)-([0-9]+)\\[([0-9]+)\\][ \t]*"
#endif

View file

@ -18,7 +18,30 @@
((((uint64_t)cluster) << CLUSTER_ID_SHIFT) \
| (((uint64_t)apiserver) << APISERVER_ID_SHIFT) \
| (((uint64_t)timestamp) << TIMESTAMP_SHIFT) \
| (((uint64_t)tag) << TAG_SHIFT) | sequence)
| (((uint64_t)tag) << TAG_SHIFT) | (sequence))
#define EXTRACT_BITS(id, shift, bits) (((id) >> (shift)) & (UMAX_BITS(bits)))
#define EXTRACT_ID_TAG(id) EXTRACT_BITS(id, TAG_SHIFT, N_TAG_BITS)
#define EXTRACT_ID_CLUSTER(id) \
EXTRACT_BITS(id, CLUSTER_ID_SHIFT, N_CLUSTER_ID_BITS)
#define EXTRACT_ID_APISERVER(id) \
EXTRACT_BITS(id, APISERVER_ID_SHIFT, N_APISERVER_ID_BITS)
#define EXTRACT_ID_TIMESTAMP(id) \
EXTRACT_BITS(id, TIMESTAMP_SHIFT, N_TIMESTAMP_BITS)
#define EXTRACT_ID_SEQUENCE(id) EXTRACT_BITS(id, 0, N_SEQUENCE_BITS)
#define EXTRACT_ARRAY_JOB(id) \
((((id) >> SEQUENCE_HIGH_SHIFT) \
& UMAX_BITS(N_SEQUENCE_BITS - SEQUENCE_HIGH_SHIFT)) \
<< SEQUENCE_HIGH_SHIFT)
#define EXTRACT_ARRAY_IDX(id) \
EXTRACT_BITS(id, 0, (N_SEQUENCE_BITS - SEQUENCE_HIGH_SHIFT))
#define ROUNDUP(v, bits) (((v) + UMAX_BITS(bits)) & ~UMAX_BITS(bits))
@ -44,9 +67,6 @@
#define N_EL_ARRAY(arr) (sizeof(arr) / sizeof(arr[0]))
#define PTR_STEP(p, delta) ((void*)(((char*)p) + (delta)))
#define N_EL_ARRAY(arr) (sizeof(arr) / sizeof(arr[0]))
#define PTR_STEP(p, delta) ((void*)(((char*)p) + (delta)))
/* move the owner ship of pointer from src to dst */
#define MOVE_PTR(dst, src) \
do { \
@ -100,4 +120,7 @@ extern xce_res_threshold_t** dup_resource_thresholds(xce_res_threshold_t**,
extern void free_resval_with_idx_list(xce_val_with_idx_t***, int);
extern void free_strlist(xce_strlist_t*);
extern int fmt_jobid(char*, size_t, uint64_t);
extern int parse_jobid(uint64_t*, char*);
#endif