From f1213b82771ce929c076339c24a777cfd59690e6 Mon Sep 17 00:00:00 2001 From: Damjan Marion Date: Sun, 13 Mar 2016 02:22:06 +0100 Subject: Add clib_memcpy macro based on DPDK rte_memcpy implementation Change-Id: I22cb443c4bd0bf298abb6f06e8e4ca65a44a2854 Signed-off-by: Damjan Marion --- vlib/vlib/buffer.c | 8 ++++---- vlib/vlib/buffer_funcs.h | 7 +++---- vlib/vlib/dpdk_buffer.c | 9 ++++----- vlib/vlib/error.c | 4 ++-- vlib/vlib/main.c | 4 ++-- vlib/vlib/mc.c | 6 +++--- vlib/vlib/node.c | 4 ++-- vlib/vlib/node_funcs.h | 2 +- vlib/vlib/threads.c | 12 ++++++------ vlib/vlib/trace.c | 6 +++--- vlib/vlib/unix/cli.c | 6 +++--- vlib/vlib/unix/mc_socket.c | 2 +- 12 files changed, 34 insertions(+), 36 deletions(-) (limited to 'vlib') diff --git a/vlib/vlib/buffer.c b/vlib/vlib/buffer.c index c28a0c54..b7ae0a6f 100644 --- a/vlib/vlib/buffer.c +++ b/vlib/vlib/buffer.c @@ -1086,7 +1086,7 @@ vlib_packet_template_buffer_init (vlib_main_t * vm, { vlib_buffer_t * b = vlib_get_buffer (vm, buffers[i]); ASSERT (b->current_length == vec_len (t->packet_data)); - memcpy (vlib_buffer_get_current (b), t->packet_data, b->current_length); + clib_memcpy (vlib_buffer_get_current (b), t->packet_data, b->current_length); } } @@ -1143,7 +1143,7 @@ vlib_packet_template_get_packet (vlib_main_t * vm, *bi_result = bi; b = vlib_get_buffer (vm, bi); - memcpy (vlib_buffer_get_current (b), + clib_memcpy (vlib_buffer_get_current (b), t->packet_data, vec_len(t->packet_data)); b->current_length = vec_len(t->packet_data); @@ -1198,7 +1198,7 @@ u32 vlib_buffer_add_data (vlib_main_t * vm, ASSERT (n_buffer_bytes >= b->current_length); n_left_this_buffer = n_buffer_bytes - (b->current_data + b->current_length); n = clib_min (n_left_this_buffer, n_left); - memcpy (vlib_buffer_get_current (b) + b->current_length, d, n); + clib_memcpy (vlib_buffer_get_current (b) + b->current_length, d, n); b->current_length += n; n_left -= n; if (n_left == 0) @@ -1240,7 +1240,7 @@ vlib_buffer_chain_append_data_with_alloc(vlib_main_t *vm, } u16 len = (data_len > max)?max:data_len; - memcpy(vlib_buffer_get_current (l) + l->current_length, data + copied, len); + clib_memcpy(vlib_buffer_get_current (l) + l->current_length, data + copied, len); vlib_buffer_chain_increase_length(first, l, len); data_len -= len; copied += len; diff --git a/vlib/vlib/buffer_funcs.h b/vlib/vlib/buffer_funcs.h index f7bdb12d..1c3ffe2a 100644 --- a/vlib/vlib/buffer_funcs.h +++ b/vlib/vlib/buffer_funcs.h @@ -46,7 +46,6 @@ #undef always_inline // dpdk and clib use conflicting always_inline macros. #include #include -#include #if CLIB_DEBUG > 0 #define always_inline static inline @@ -151,7 +150,7 @@ vlib_buffer_contents (vlib_main_t * vm, u32 buffer_index, u8 * contents) { b = vlib_get_buffer (vm, buffer_index); l = b->current_length; - memcpy (contents + content_len, b->data + b->current_data, l); + clib_memcpy (contents + content_len, b->data + b->current_data, l); content_len += l; if (! (b->flags & VLIB_BUFFER_NEXT_PRESENT)) break; @@ -493,9 +492,9 @@ vlib_buffer_chain_append_data(vlib_main_t *vm, ASSERT(n_buffer_bytes >= last->current_length + last->current_data); u16 len = clib_min(data_len, n_buffer_bytes - last->current_length - last->current_data); #if DPDK == 1 - rte_memcpy(vlib_buffer_get_current (last) + last->current_length, data, len); + clib_memcpy(vlib_buffer_get_current (last) + last->current_length, data, len); #else - memcpy(vlib_buffer_get_current (last) + last->current_length, data, len); + clib_memcpy(vlib_buffer_get_current (last) + last->current_length, data, len); #endif vlib_buffer_chain_increase_length(first, last, len); return len; diff --git a/vlib/vlib/dpdk_buffer.c b/vlib/vlib/dpdk_buffer.c index db1fde18..358d366f 100644 --- a/vlib/vlib/dpdk_buffer.c +++ b/vlib/vlib/dpdk_buffer.c @@ -42,7 +42,6 @@ #include #include #include -#include #include #include #include @@ -771,7 +770,7 @@ vlib_packet_template_buffer_init (vlib_main_t * vm, { vlib_buffer_t * b = vlib_get_buffer (vm, buffers[i]); ASSERT (b->current_length == vec_len (t->packet_data)); - memcpy (vlib_buffer_get_current (b), t->packet_data, b->current_length); + clib_memcpy (vlib_buffer_get_current (b), t->packet_data, b->current_length); } } @@ -812,7 +811,7 @@ vlib_packet_template_get_packet (vlib_main_t * vm, *bi_result = bi; b = vlib_get_buffer (vm, bi); - memcpy (vlib_buffer_get_current (b), + clib_memcpy (vlib_buffer_get_current (b), t->packet_data, vec_len(t->packet_data)); b->current_length = vec_len(t->packet_data); @@ -858,7 +857,7 @@ u32 vlib_buffer_add_data (vlib_main_t * vm, ASSERT (n_buffer_bytes >= b->current_length); n_left_this_buffer = n_buffer_bytes - (b->current_data + b->current_length); n = clib_min (n_left_this_buffer, n_left); - memcpy (vlib_buffer_get_current (b) + b->current_length, d, n); + clib_memcpy (vlib_buffer_get_current (b) + b->current_length, d, n); b->current_length += n; n_left -= n; if (n_left == 0) @@ -900,7 +899,7 @@ vlib_buffer_chain_append_data_with_alloc(vlib_main_t *vm, } u16 len = (data_len > max)?max:data_len; - rte_memcpy(vlib_buffer_get_current (l) + l->current_length, data + copied, len); + clib_memcpy(vlib_buffer_get_current (l) + l->current_length, data + copied, len); vlib_buffer_chain_increase_length(first, l, len); data_len -= len; copied += len; diff --git a/vlib/vlib/error.c b/vlib/vlib/error.c index 66153080..e7380364 100644 --- a/vlib/vlib/error.c +++ b/vlib/vlib/error.c @@ -169,7 +169,7 @@ void vlib_register_errors (vlib_main_t * vm, l = vec_len (em->error_strings_heap); - memcpy (vec_elt_at_index (em->error_strings_heap, n->error_heap_index), + clib_memcpy (vec_elt_at_index (em->error_strings_heap, n->error_heap_index), error_strings, n_errors * sizeof (error_strings[0])); @@ -179,7 +179,7 @@ void vlib_register_errors (vlib_main_t * vm, /* Zero counters for re-registrations of errors. */ if (n->error_heap_index + n_errors <= vec_len (em->counters_last_clear)) - memcpy (em->counters + n->error_heap_index, + clib_memcpy (em->counters + n->error_heap_index, em->counters_last_clear + n->error_heap_index, n_errors * sizeof (em->counters[0])); else diff --git a/vlib/vlib/main.c b/vlib/vlib/main.c index 07cf7fb2..18273bf6 100644 --- a/vlib/vlib/main.c +++ b/vlib/vlib/main.c @@ -1463,10 +1463,10 @@ static void vlib_main_loop (vlib_main_t * vm) void * data; data = vlib_process_signal_event_helper (nm, n, p, te->event_type_index, te->n_data_elts, te->n_data_elt_bytes); if (te->n_data_bytes < sizeof (te->inline_event_data)) - memcpy (data, te->inline_event_data, te->n_data_bytes); + clib_memcpy (data, te->inline_event_data, te->n_data_bytes); else { - memcpy (data, te->event_data_as_vector, te->n_data_bytes); + clib_memcpy (data, te->event_data_as_vector, te->n_data_bytes); vec_free (te->event_data_as_vector); } pool_put (nm->signal_timed_event_data_pool, te); diff --git a/vlib/vlib/mc.c b/vlib/vlib/mc.c index d311e8e0..09426667 100644 --- a/vlib/vlib/mc.c +++ b/vlib/vlib/mc.c @@ -541,7 +541,7 @@ static void serialize_mc_register_stream_name (serialize_main_t * m, va_list * v static void elog_stream_name (char * buf, int n_buf_bytes, char * v) { - memcpy (buf, v, clib_min (n_buf_bytes - 1, vec_len (v))); + clib_memcpy (buf, v, clib_min (n_buf_bytes - 1, vec_len (v))); buf[n_buf_bytes - 1] = 0; } @@ -1307,7 +1307,7 @@ static void serialize_mc_stream (serialize_main_t * m, va_list * va) serialize_integer (m, pool_elts (s->peers), sizeof (u32)); pool_foreach (p, s->peers, ({ u8 * x = serialize_get (m, sizeof (p->id)); - memcpy (x, p->id.as_u8, sizeof (p->id)); + clib_memcpy (x, p->id.as_u8, sizeof (p->id)); serialize_integer (m, p->last_sequence_received, sizeof (p->last_sequence_received)); })); @@ -1327,7 +1327,7 @@ void unserialize_mc_stream (serialize_main_t * m, va_list * va) u8 * x; pool_get (s->peers, p); x = unserialize_get (m, sizeof (p->id)); - memcpy (p->id.as_u8, x, sizeof (p->id)); + clib_memcpy (p->id.as_u8, x, sizeof (p->id)); unserialize_integer (m, &p->last_sequence_received, sizeof (p->last_sequence_received)); mhash_set (&s->peer_index_by_id, &p->id, p - s->peers, /* old_value */ 0); } diff --git a/vlib/vlib/node.c b/vlib/vlib/node.c index 573b3a79..1df786f0 100644 --- a/vlib/vlib/node.c +++ b/vlib/vlib/node.c @@ -339,7 +339,7 @@ static void register_node (vlib_main_t * vm, { vec_resize (n->runtime_data, r->runtime_data_bytes); if (r->runtime_data) - memcpy (n->runtime_data, r->runtime_data, r->runtime_data_bytes); + clib_memcpy (n->runtime_data, r->runtime_data, r->runtime_data_bytes); } vec_resize (n->next_node_names, r->n_next_nodes); @@ -438,7 +438,7 @@ static void register_node (vlib_main_t * vm, ASSERT (vec_len (n->runtime_data) <= sizeof (rt->runtime_data)); if (vec_len (n->runtime_data) > 0) - memcpy (rt->runtime_data, n->runtime_data, vec_len (n->runtime_data)); + clib_memcpy (rt->runtime_data, n->runtime_data, vec_len (n->runtime_data)); vec_free (n->runtime_data); } diff --git a/vlib/vlib/node_funcs.h b/vlib/vlib/node_funcs.h index 80dc3c60..18342e26 100644 --- a/vlib/vlib/node_funcs.h +++ b/vlib/vlib/node_funcs.h @@ -93,7 +93,7 @@ vlib_node_set_runtime_data (vlib_main_t * vm, u32 node_index, ASSERT (vec_len (n->runtime_data) <= sizeof (r->runtime_data)); if (vec_len (n->runtime_data) > 0) - memcpy (r->runtime_data, n->runtime_data, vec_len (n->runtime_data)); + clib_memcpy (r->runtime_data, n->runtime_data, vec_len (n->runtime_data)); } always_inline void diff --git a/vlib/vlib/threads.c b/vlib/vlib/threads.c index efbef379..a2ab0d84 100644 --- a/vlib/vlib/threads.c +++ b/vlib/vlib/threads.c @@ -639,7 +639,7 @@ static clib_error_t * start_workers (vlib_main_t * vm) oldheap = clib_mem_set_heap (w->thread_mheap); vm_clone = clib_mem_alloc (sizeof (*vm_clone)); - memcpy (vm_clone, vlib_mains[0], sizeof (*vm_clone)); + clib_memcpy (vm_clone, vlib_mains[0], sizeof (*vm_clone)); vm_clone->cpu_index = worker_thread_index; vm_clone->heap_base = w->thread_mheap; @@ -674,7 +674,7 @@ static clib_error_t * start_workers (vlib_main_t * vm) { vlib_node_t *n; n = clib_mem_alloc_no_fail (sizeof(*n)); - memcpy (n, nm->nodes[j], sizeof (*n)); + clib_memcpy (n, nm->nodes[j], sizeof (*n)); /* none of the copied nodes have enqueue rights given out */ n->owner_node_index = VLIB_INVALID_NODE_INDEX; memset (&n->stats_total, 0, sizeof (n->stats_total)); @@ -854,7 +854,7 @@ void vlib_worker_thread_node_runtime_update(void) /* Re-clone error heap */ u64 * old_counters = vm_clone->error_main.counters; u64 * old_counters_all_clear = vm_clone->error_main.counters_last_clear; - memcpy (&vm_clone->error_main, &vm->error_main, sizeof (vm->error_main)); + clib_memcpy (&vm_clone->error_main, &vm->error_main, sizeof (vm->error_main)); j = vec_len(vm->error_main.counters) - 1; vec_validate_aligned(old_counters, j, CLIB_CACHE_LINE_BYTES); vec_validate_aligned(old_counters_all_clear, j, CLIB_CACHE_LINE_BYTES); @@ -890,7 +890,7 @@ void vlib_worker_thread_node_runtime_update(void) old_n_clone = old_nodes_clone[j]; new_n_clone = clib_mem_alloc_no_fail (sizeof(*new_n_clone)); - memcpy (new_n_clone, new_n, sizeof (*new_n)); + clib_memcpy (new_n_clone, new_n, sizeof (*new_n)); /* none of the copied nodes have enqueue rights given out */ new_n_clone->owner_node_index = VLIB_INVALID_NODE_INDEX; @@ -905,10 +905,10 @@ void vlib_worker_thread_node_runtime_update(void) else { /* Copy stats if the old data is valid */ - memcpy (&new_n_clone->stats_total, + clib_memcpy (&new_n_clone->stats_total, &old_n_clone->stats_total, sizeof (new_n_clone->stats_total)); - memcpy (&new_n_clone->stats_last_clear, + clib_memcpy (&new_n_clone->stats_last_clear, &old_n_clone->stats_last_clear, sizeof (new_n_clone->stats_last_clear)); diff --git a/vlib/vlib/trace.c b/vlib/vlib/trace.c index 4a611ee9..d430460b 100644 --- a/vlib/vlib/trace.c +++ b/vlib/vlib/trace.c @@ -73,13 +73,13 @@ vlib_trace_frame_buffers_only (vlib_main_t * vm, if (b0->flags & VLIB_BUFFER_IS_TRACED) { t0 = vlib_add_trace (vm, node, b0, n_buffer_data_bytes_in_trace); - memcpy (t0, b0->data + b0->current_data, + clib_memcpy (t0, b0->data + b0->current_data, n_buffer_data_bytes_in_trace); } if (b1->flags & VLIB_BUFFER_IS_TRACED) { t1 = vlib_add_trace (vm, node, b1, n_buffer_data_bytes_in_trace); - memcpy (t1, b1->data + b1->current_data, + clib_memcpy (t1, b1->data + b1->current_data, n_buffer_data_bytes_in_trace); } from += 2; @@ -99,7 +99,7 @@ vlib_trace_frame_buffers_only (vlib_main_t * vm, if (b0->flags & VLIB_BUFFER_IS_TRACED) { t0 = vlib_add_trace (vm, node, b0, n_buffer_data_bytes_in_trace); - memcpy (t0, b0->data + b0->current_data, + clib_memcpy (t0, b0->data + b0->current_data, n_buffer_data_bytes_in_trace); } from += 1; diff --git a/vlib/vlib/unix/cli.c b/vlib/vlib/unix/cli.c index 2cdd4769..2e6e0593 100644 --- a/vlib/vlib/unix/cli.c +++ b/vlib/vlib/unix/cli.c @@ -240,7 +240,7 @@ static int unix_cli_line_edit (unix_main_t * um, unix_cli_file_t * cf) prev = cf->command_history [cf->excursion]; vec_validate (cf->current_command, vec_len(prev)-1); - memcpy (cf->current_command, prev, vec_len(prev)); + clib_memcpy (cf->current_command, prev, vec_len(prev)); _vec_len (cf->current_command) = vec_len(prev); unix_cli_add_pending_output (uf, cf, cf->current_command, vec_len (cf->current_command)); @@ -271,7 +271,7 @@ static int unix_cli_line_edit (unix_main_t * um, unix_cli_file_t * cf) unix_cli_add_pending_output (uf, cf, (u8 *) "\b\b \b\b\r\n", 8); vec_validate (cf->input_vector, vec_len(cf->current_command)-1); - memcpy (cf->input_vector, cf->current_command, + clib_memcpy (cf->input_vector, cf->current_command, vec_len(cf->current_command)); _vec_len(cf->input_vector) = _vec_len (cf->current_command); @@ -342,7 +342,7 @@ static int unix_cli_line_edit (unix_main_t * um, unix_cli_file_t * cf) vec_validate (cf->current_command, vec_len(item)-1); - memcpy (cf->current_command, item, vec_len(item)); + clib_memcpy (cf->current_command, item, vec_len(item)); _vec_len (cf->current_command) = vec_len(item); unix_cli_add_pending_output (uf, cf, cf->current_command, vec_len (cf->current_command)); diff --git a/vlib/vlib/unix/mc_socket.c b/vlib/vlib/unix/mc_socket.c index 1169203f..be68a13c 100644 --- a/vlib/vlib/unix/mc_socket.c +++ b/vlib/vlib/unix/mc_socket.c @@ -893,7 +893,7 @@ find_interface_ip4_address (char * if_name, u32 * ip4_address, u32 * mtu) } sa = (void *) &ifr.ifr_addr; - memcpy (ip4_address, &sa->sin_addr.s_addr, sizeof (ip4_address[0])); + clib_memcpy (ip4_address, &sa->sin_addr.s_addr, sizeof (ip4_address[0])); if (ioctl (fd, SIOCGIFMTU, &ifr) < 0) return -1; -- cgit 1.2.3-korg