/* * create_node_record - create a node record and set its values to defaults * IN config_ptr - pointer to node's configuration information * IN node_name - name of the node * RET pointer to the record or NULL if error * NOTE: allocates memory at node_record_table_ptr that must be xfreed when * the global node table is no longer required */ extern struct node_record *create_node_record ( struct config_record *config_ptr, char *node_name) { struct node_record *node_ptr; int old_buffer_size, new_buffer_size; last_node_update = time (NULL); xassert(config_ptr); xassert(node_name); /* round up the buffer size to reduce overhead of xrealloc */ old_buffer_size = (node_record_count) * sizeof (struct node_record); old_buffer_size = ((int) ((old_buffer_size / BUF_SIZE) + 1)) * BUF_SIZE; new_buffer_size = (node_record_count + 1) * sizeof (struct node_record); new_buffer_size = ((int) ((new_buffer_size / BUF_SIZE) + 1)) * BUF_SIZE; if (!node_record_table_ptr) { node_record_table_ptr = (struct node_record *) xmalloc (new_buffer_size); } else if (old_buffer_size != new_buffer_size) xrealloc (node_record_table_ptr, new_buffer_size); node_ptr = node_record_table_ptr + (node_record_count++); node_ptr->name = xstrdup(node_name); node_ptr->config_ptr = config_ptr; /* these values will be overwritten when the node actually registers */ node_ptr->cpus = config_ptr->cpus; node_ptr->cpu_load = NO_VAL; node_ptr->free_mem = NO_VAL64; node_ptr->cpu_spec_list = xstrdup(config_ptr->cpu_spec_list); node_ptr->boards = config_ptr->boards; node_ptr->sockets = config_ptr->sockets; node_ptr->cores = config_ptr->cores; node_ptr->core_spec_cnt = config_ptr->core_spec_cnt; node_ptr->threads = config_ptr->threads; node_ptr->mem_spec_limit = config_ptr->mem_spec_limit; node_ptr->real_memory = config_ptr->real_memory; node_ptr->node_spec_bitmap = NULL; node_ptr->tmp_disk = config_ptr->tmp_disk; node_ptr->select_nodeinfo = select_g_select_nodeinfo_alloc(); node_ptr->energy = acct_gather_energy_alloc(1); node_ptr->ext_sensors = ext_sensors_alloc(); node_ptr->owner = NO_VAL; node_ptr->mcs_label = NULL; node_ptr->protocol_version = SLURM_MIN_PROTOCOL_VERSION; xassert (node_ptr->magic = NODE_MAGIC) /* set value */; return node_ptr; }
/* * create_node_record - create a node record and set its values to defaults * IN config_ptr - pointer to node's configuration information * IN node_name - name of the node * RET pointer to the record or NULL if error * NOTE: allocates memory at node_record_table_ptr that must be xfreed when * the global node table is no longer required */ extern struct node_record *create_node_record ( struct config_record *config_ptr, char *node_name) { struct node_record *node_ptr; int old_buffer_size, new_buffer_size; last_node_update = time (NULL); xassert(config_ptr); xassert(node_name); /* round up the buffer size to reduce overhead of xrealloc */ old_buffer_size = (node_record_count) * sizeof (struct node_record); old_buffer_size = ((int) ((old_buffer_size / BUF_SIZE) + 1)) * BUF_SIZE; new_buffer_size = (node_record_count + 1) * sizeof (struct node_record); new_buffer_size = ((int) ((new_buffer_size / BUF_SIZE) + 1)) * BUF_SIZE; if (!node_record_table_ptr) { node_record_table_ptr = (struct node_record *) xmalloc (new_buffer_size); } else if (old_buffer_size != new_buffer_size) xrealloc (node_record_table_ptr, new_buffer_size); node_ptr = node_record_table_ptr + (node_record_count++); node_ptr->name = xstrdup(node_name); node_ptr->config_ptr = config_ptr; /* these values will be overwritten when the node actually registers */ node_ptr->cpus = config_ptr->cpus; node_ptr->cpu_load = NO_VAL; node_ptr->boards = config_ptr->boards; node_ptr->sockets = config_ptr->sockets; node_ptr->cores = config_ptr->cores; node_ptr->threads = config_ptr->threads; node_ptr->real_memory = config_ptr->real_memory; node_ptr->tmp_disk = config_ptr->tmp_disk; node_ptr->select_nodeinfo = select_g_select_nodeinfo_alloc(); node_ptr->energy = acct_gather_energy_alloc(); xassert (node_ptr->magic = NODE_MAGIC) /* set value */; return node_ptr; }