static inline void _mark_spike(uint32_t neuron_id, uint32_t n_spikes) { if (recording_flags > 0) { if (n_spike_buffers_allocated < n_spikes) { uint32_t new_size = 8 + (n_spikes * spike_buffer_size); timed_out_spikes *new_spikes = (timed_out_spikes *) spin1_malloc( new_size); if (new_spikes == NULL) { log_error("Cannot reallocate spike buffer"); rt_error(RTE_SWERR); } uint32_t *data = (uint32_t *) new_spikes; for (uint32_t n = new_size >> 2; n > 0; n--) { data[n - 1] = 0; } if (spikes != NULL) { uint32_t old_size = 8 + (n_spike_buffers_allocated * spike_buffer_size); spin1_memcpy(new_spikes, spikes, old_size); sark_free(spikes); } spikes = new_spikes; n_spike_buffers_allocated = n_spikes; } if (spikes->n_buffers < n_spikes) { spikes->n_buffers = n_spikes; } for (uint32_t n = n_spikes; n > 0; n--) { bit_field_set(_out_spikes(n - 1), neuron_id); } }
void param_generator_free(param_generator_t generator) { param_generators[generator->index].free(generator->data); sark_free(generator); }