7 #ifndef ESDM_INTERNAL_H
8 #define ESDM_INTERNAL_H
14 #include <esdm-datatypes-internal.h>
15 #include <esdm-stream.h>
16 #include <esdm-debug.h>
22 #define min(x, y) (x < y ? x : y)
23 #define max(x, y) (x > y ? x : y)
168 void esdmI_performance_read_print(FILE* stream,
const char* linePrefix,
const char* indentation,
const esdm_readTimes_t* start,
const esdm_readTimes_t* end);
178 void esdmI_performance_copy_print(FILE* stream,
const char* linePrefix,
const char* indentation,
const esdm_copyTimes_t* start,
const esdm_copyTimes_t* end);
200 int esdmI_backend_fragment_metadata_free (
esdm_backend_t * b,
void * options);
203 int esdmI_backend_fragment_write_stream_blocksize(
esdm_backend_t * b,
estream_write_t * state,
void * cur_buf,
size_t cur_offset, uint32_t cur_size);
205 double esdmI_backendOutputTime();
206 double esdmI_backendInputTime();
207 void esdmI_resetBackendIoTimes();
213 void esdmI_container_init(
char const * name,
esdm_container_t **out_container);
315 void esdmI_fragments_metadata_create(
esdm_fragments_t* me, smd_string_stream_t* s);
319 void esdm_fragment_metadata_create(
esdm_fragment_t *f, smd_string_stream_t * stream);
402 int mkdir_recursive(
const char *path);
403 int posix_recursive_remove(
const char *path);
405 int ea_read_file(
char *filepath,
char **buf);
418 json_t *load_json(
const char *str);
422 void ea_generate_id(
char *str,
size_t length);
423 char* ea_make_id(
size_t length);
458 void*
ea_memdup(
void* data,
size_t size);
460 int ea_compute_hash_str(
const char * str);
461 bool ea_is_valid_dataset_name(
const char *str);
465 typedef clock64_t timer;
467 typedef struct timespec timer;
470 void ea_start_timer(timer *t1);
471 double ea_stop_timer(timer t1);
472 double ea_timer_subtract(timer number, timer subtract);
475 typedef void* (*ea_datatype_converter)(
void* dest,
const void* source,
size_t sourceBytes);
497 .start = a.start > b.start ? a.start : b.start,
498 .end = a.end < b.end ? a.end : b.end
502 static inline bool esdmI_range_isEmpty(
esdmI_range_t range) {
return range.start >= range.end; }
506 static inline int64_t esdmI_range_size(
esdmI_range_t range) {
return esdmI_range_isEmpty(range) ? 0 : range.end - range.start; }
517 esdmI_hypercube_t* esdmI_hypercube_make(int64_t dimensions, int64_t* offset, int64_t* size);
531 uint32_t esdmI_hypercube_hashOffsetSize(int64_t dimCount,
const int64_t* offset,
const int64_t* size);
553 static inline int64_t esdmI_hypercube_dimensions(
const esdmI_hypercube_t* cube) {
return cube->dims; }
599 #define esdmI_hypercubeList_nonredundantSubsets(list, inout_setCount, out_subsets) do {\
600 esdmI_hypercubeList_t* l = list;\
601 esdmI_hypercubeList_nonredundantSubsets_internal(l, l->count, inout_setCount, out_subsets);\
646 SCIL_Datatype_t ea_esdm_datatype_to_scil(smd_basic_type_t type);
esdm_status
Definition: esdm-datatypes.h:37
void * ea_checked_calloc(size_t nmemb, size_t size) __attribute__((alloc_size(1
esdm_status esdmI_readWithFillRegion(esdm_dataset_t *dataset, void *buf, esdm_dataspace_t *memspace, esdmI_hypercubeSet_t **out_fillRegion)
Definition: esdm.c:190
esdm_backend_t ** esdm_modules_makeBackendRecommendation(esdm_modules_t *modules, esdm_dataspace_t *space, int64_t *out_moduleCount, int64_t *out_maxFragmentSize)
Definition: esdm-modules.c:123
esdm_layout_t * esdm_layout_init(esdm_instance_t *esdm)
Definition: esdm-layout.c:59
esdm_config_t * esdm_config_init()
ea_datatype_converter ea_converter_for_types(esdm_type_t destType, esdm_type_t sourceType)
esdm_status esdmI_dataspace_createFromJson(json_t *json, esdm_dataset_t *dataset, esdm_dataspace_t **out_dataspace)
Definition: esdm-datatypes.c:1481
void * ea_checked_malloc(size_t size) __attribute__((alloc_size(1)
void fetch_performance_from_backend(gpointer key, gpointer value, gpointer user_data)
Definition: esdm-performancemodel.c:59
esdm_status esdmI_dataspace_createFromHypercube(esdmI_hypercube_t *extends, esdm_type_t type, esdm_dataspace_t **out_space)
Definition: esdm-datatypes.c:1315
esdm_backend_t * esdm_modules_fastestBackend(esdm_modules_t *modules)
Definition: esdm-modules.c:155
esdm_status esdmI_fragment_create(esdm_dataset_t *dataset, esdm_dataspace_t *memspace, void *buf, esdm_fragment_t **out_fragment)
Definition: esdm-datatypes.c:410
char * ea_checked_strdup(const char *string)
Definition: auxiliary.c:341
esdm_status esdmI_dataset_destroy(esdm_dataset_t *dataset)
Definition: esdm-datatypes.c:1206
esdm_status esdmI_dataspace_setExtends(esdm_dataspace_t *space, esdmI_hypercube_t *extends)
Definition: esdm-datatypes.c:1365
esdm_fragment_t * esdm_layout_reconstruction(esdm_dataset_t *dataset, esdm_dataspace_t *subspace)
Definition: esdm-layout.c:80
esdm_status esdm_layout_finalize(esdm_instance_t *esdm)
Definition: esdm-layout.c:69
esdm_status esdmI_container_destroy(esdm_container_t *container)
Definition: esdm-datatypes.c:340
esdm_config_backends_t * esdm_config_get_backends(esdm_instance_t *esdm)
Definition: esdm-config.c:170
void * ea_memdup(void *data, size_t size)
Definition: auxiliary.c:359
char * ea_checked_strndup(const char *string, size_t n)
Definition: auxiliary.c:350
int ea_read_check(int fd, char *buf, size_t len)
Definition: auxiliary.c:193
esdm_status esdm_scheduler_read_blocking(esdm_instance_t *esdm, esdm_dataset_t *dataset, void *buf, esdm_dataspace_t *memspace, esdmI_hypercubeSet_t **out_fillRegion, bool allowWriteback, bool requestIsInternal)
Definition: esdm-scheduler.c:936
void esdmI_hypercubeList_nonredundantSubsets_internal(esdmI_hypercubeList_t *list, int64_t count, int64_t *inout_setCount, uint8_t(*out_subsets)[count])
Definition: hypercube.c:468
int ea_write_check(int fd, char *buf, size_t len)
Definition: auxiliary.c:175
esdm_status esdm_layout_recommendation(esdm_instance_t *esdm, esdm_fragment_t *in, esdm_fragment_t *out)
Definition: esdm-layout.c:99
void * ea_checked_realloc(void *ptr, size_t size) __attribute__((alloc_size(2)
char * esdm_config_gather()
Definition: esdm-config.c:101
esdm_status esdmI_dataspace_getExtends(esdm_dataspace_t *space, esdmI_hypercube_t **out_extends)
Definition: esdm-datatypes.c:1356
esdm_status esdm_performance_recommendation(esdm_instance_t *esdm, esdm_fragment_t *in, esdm_fragment_t *out)
Definition: esdm-performancemodel.c:66
void esdmI_hypercube_getOffsetAndSize(const esdmI_hypercube_t *cube, int64_t *out_offset, int64_t *out_size)
Definition: hypercube.c:216
void print_stat(struct stat sb)
Definition: auxiliary.c:215
Definition: esdm-datatypes-internal.h:360
Definition: esdm-datatypes-internal.h:445
Definition: esdm-datatypes-internal.h:367
Definition: esdm-datatypes-internal.h:354
Definition: esdm-datatypes-internal.h:349
Definition: esdm-datatypes-internal.h:483
Definition: esdm-datatypes-internal.h:197
Definition: esdm-datatypes-internal.h:252
Definition: esdm-datatypes-internal.h:269
Definition: esdm-datatypes-internal.h:297
Definition: esdm-datatypes-internal.h:41
Definition: esdm-datatypes-internal.h:475
Definition: esdm-datatypes-internal.h:59
Definition: esdm-datatypes.h:81
Definition: esdm-datatypes-internal.h:78
Definition: esdm-datatypes-internal.h:501
Definition: esdm-datatypes-internal.h:53
Definition: esdm-datatypes-internal.h:326
Definition: esdm-datatypes-internal.h:309
Definition: esdm-datatypes-internal.h:278
Definition: esdm-datatypes-internal.h:302
Definition: esdm-datatypes-internal.h:456
Definition: esdm-datatypes-internal.h:313
Definition: esdm-datatypes-internal.h:466
Definition: esdm-stream.h:158
Definition: esdm-datatypes-internal.h:222