test mbuf attach
[dpdk.git] / app / test / test_timer.c
index 944e2ad..5933f56 100644 (file)
@@ -1,34 +1,5 @@
-/*-
- *   BSD LICENSE
- *
- *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.
- *   All rights reserved.
- *
- *   Redistribution and use in source and binary forms, with or without
- *   modification, are permitted provided that the following conditions
- *   are met:
- *
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above copyright
- *       notice, this list of conditions and the following disclaimer in
- *       the documentation and/or other materials provided with the
- *       distribution.
- *     * Neither the name of Intel Corporation nor the names of its
- *       contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- *   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- *   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- *   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- *   A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- *   OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- *   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- *   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- *   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- *   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- *   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- *   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+/* SPDX-License-Identifier: BSD-3-Clause
+ * Copyright(c) 2010-2014 Intel Corporation
  */
 
 #include "test.h"
 #include <rte_common.h>
 #include <rte_log.h>
 #include <rte_memory.h>
-#include <rte_memzone.h>
 #include <rte_launch.h>
 #include <rte_cycles.h>
 #include <rte_eal.h>
 #include <rte_timer.h>
 #include <rte_random.h>
 #include <rte_malloc.h>
+#include <rte_pause.h>
 
-#define TEST_DURATION_S 20 /* in seconds */
+#define TEST_DURATION_S 1 /* in seconds */
 #define NB_TIMER 4
 
 #define RTE_LOGTYPE_TESTTIMER RTE_LOGTYPE_USER3
@@ -166,8 +137,8 @@ mytimer_reset(struct mytimerinfo *timinfo, uint64_t ticks,
 
 /* timer callback for stress tests */
 static void
-timer_stress_cb(__attribute__((unused)) struct rte_timer *tim,
-               __attribute__((unused)) void *arg)
+timer_stress_cb(__rte_unused struct rte_timer *tim,
+               __rte_unused void *arg)
 {
        long r;
        unsigned lcore_id = rte_lcore_id();
@@ -192,7 +163,7 @@ timer_stress_cb(__attribute__((unused)) struct rte_timer *tim,
 }
 
 static int
-timer_stress_main_loop(__attribute__((unused)) void *arg)
+timer_stress_main_loop(__rte_unused void *arg)
 {
        uint64_t hz = rte_get_timer_hz();
        unsigned lcore_id = rte_lcore_id();
@@ -301,11 +272,11 @@ timer_stress2_cb(struct rte_timer *tim __rte_unused, void *arg __rte_unused)
 #define NB_STRESS2_TIMERS 8192
 
 static int
-timer_stress2_main_loop(__attribute__((unused)) void *arg)
+timer_stress2_main_loop(__rte_unused void *arg)
 {
        static struct rte_timer *timers;
        int i, ret;
-       uint64_t delay = rte_get_timer_hz() / 4;
+       uint64_t delay = rte_get_timer_hz() / 20;
        unsigned lcore_id = rte_lcore_id();
        unsigned master = rte_get_master_lcore();
        int32_t my_collisions = 0;
@@ -346,7 +317,7 @@ timer_stress2_main_loop(__attribute__((unused)) void *arg)
                rte_atomic32_add(&collisions, my_collisions);
 
        /* wait long enough for timers to expire */
-       rte_delay_ms(500);
+       rte_delay_ms(100);
 
        /* all cores rendezvous */
        if (lcore_id == master) {
@@ -396,7 +367,7 @@ timer_stress2_main_loop(__attribute__((unused)) void *arg)
        }
 
        /* wait long enough for timers to expire */
-       rte_delay_ms(500);
+       rte_delay_ms(100);
 
        /* now check that we get the right number of callbacks */
        if (lcore_id == master) {
@@ -486,7 +457,7 @@ timer_basic_cb(struct rte_timer *tim, void *arg)
 }
 
 static int
-timer_basic_main_loop(__attribute__((unused)) void *arg)
+timer_basic_main_loop(__rte_unused void *arg)
 {
        uint64_t hz = rte_get_timer_hz();
        unsigned lcore_id = rte_lcore_id();
@@ -495,13 +466,13 @@ timer_basic_main_loop(__attribute__((unused)) void *arg)
 
        /* launch all timers on core 0 */
        if (lcore_id == rte_get_master_lcore()) {
-               mytimer_reset(&mytiminfo[0], hz, SINGLE, lcore_id,
+               mytimer_reset(&mytiminfo[0], hz/4, SINGLE, lcore_id,
                              timer_basic_cb);
-               mytimer_reset(&mytiminfo[1], hz*2, SINGLE, lcore_id,
+               mytimer_reset(&mytiminfo[1], hz/2, SINGLE, lcore_id,
                              timer_basic_cb);
-               mytimer_reset(&mytiminfo[2], hz, PERIODICAL, lcore_id,
+               mytimer_reset(&mytiminfo[2], hz/4, PERIODICAL, lcore_id,
                              timer_basic_cb);
-               mytimer_reset(&mytiminfo[3], hz, PERIODICAL,
+               mytimer_reset(&mytiminfo[3], hz/4, PERIODICAL,
                              rte_get_next_lcore(lcore_id, 0, 1),
                              timer_basic_cb);
        }
@@ -567,17 +538,17 @@ test_timer(void)
        uint64_t cur_time;
        uint64_t hz;
 
+       if (rte_lcore_count() < 2) {
+               printf("Not enough cores for timer_autotest, expecting at least 2\n");
+               return TEST_SKIPPED;
+       }
+
        /* sanity check our timer sources and timer config values */
        if (timer_sanity_check() < 0) {
                printf("Timer sanity checks failed\n");
                return TEST_FAILED;
        }
 
-       if (rte_lcore_count() < 2) {
-               printf("not enough lcores for this test\n");
-               return TEST_FAILED;
-       }
-
        /* init timer */
        for (i=0; i<NB_TIMER; i++) {
                memset(&mytiminfo[i], 0, sizeof(struct mytimerinfo));
@@ -591,7 +562,7 @@ test_timer(void)
        end_time = cur_time + (hz * TEST_DURATION_S);
 
        /* start other cores */
-       printf("Start timer stress tests (%d seconds)\n", TEST_DURATION_S);
+       printf("Start timer stress tests\n");
        rte_eal_mp_remote_launch(timer_stress_main_loop, NULL, CALL_MASTER);
        rte_eal_mp_wait_lcore();
 
@@ -612,7 +583,7 @@ test_timer(void)
        end_time = cur_time + (hz * TEST_DURATION_S);
 
        /* start other cores */
-       printf("\nStart timer basic tests (%d seconds)\n", TEST_DURATION_S);
+       printf("\nStart timer basic tests\n");
        rte_eal_mp_remote_launch(timer_basic_main_loop, NULL, CALL_MASTER);
        rte_eal_mp_wait_lcore();
 
@@ -626,8 +597,4 @@ test_timer(void)
        return TEST_SUCCESS;
 }
 
-static struct test_command timer_cmd = {
-       .command = "timer_autotest",
-       .callback = test_timer,
-};
-REGISTER_TEST_COMMAND(timer_cmd);
+REGISTER_TEST_COMMAND(timer_autotest, test_timer);