doc: whitespace changes in licenses
[dpdk.git] / app / test / test_interrupts.c
index f16cf5a..d135242 100644 (file)
@@ -1,35 +1,34 @@
 /*-
- *   BSD LICENSE
- * 
- *   Copyright(c) 2010-2013 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.
- * 
+ *  BSD LICENSE
+ *
+ *  Copyright(c) 2010-2013 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.
  */
 
 #include <stdio.h>
@@ -171,13 +170,16 @@ static void
 test_interrupt_callback(struct rte_intr_handle *intr_handle, void *arg)
 {
        if (test_interrupt_handle_sanity_check(intr_handle) < 0) {
-               printf("null or invalid intr_handle for %s\n", __FUNCTION__);
+               printf("null or invalid intr_handle for %s\n", __func__);
+               flag = -1;
                return;
        }
 
        if (rte_intr_callback_unregister(intr_handle,
-                       test_interrupt_callback, arg) <= 0) {
-               printf("fail to unregister callback\n");
+                       test_interrupt_callback, arg) >= 0) {
+               printf("%s: unexpectedly able to unregister itself\n",
+                       __func__);
+               flag = -1;
                return;
        }
 
@@ -188,15 +190,12 @@ test_interrupt_callback(struct rte_intr_handle *intr_handle, void *arg)
 }
 
 static void
-test_interrupt_callback_1(struct rte_intr_handle *intr_handle, void *arg)
+test_interrupt_callback_1(struct rte_intr_handle *intr_handle,
+       __attribute__((unused)) void *arg)
 {
        if (test_interrupt_handle_sanity_check(intr_handle) < 0) {
-               printf("null or invalid intr_handle for %s\n", __FUNCTION__);
-               return;
-       }
-       if (rte_intr_callback_unregister(intr_handle,
-                       test_interrupt_callback_1, arg) <= 0) {
-               printf("fail to unregister callback\n");
+               printf("null or invalid intr_handle for %s\n", __func__);
+               flag = -1;
                return;
        }
 }
@@ -281,7 +280,7 @@ test_interrupt_disable(void)
 int
 test_interrupt(void)
 {
-       int count = 0, ret = -1;
+       int count, ret;
        struct rte_intr_handle test_intr_handle;
 
        if (test_interrupt_init() < 0) {
@@ -291,6 +290,8 @@ test_interrupt(void)
 
        printf("check if callback registered can be called\n");
 
+       ret = -1;
+
        /* check if callback registered can be called */
        flag = 0;
        test_intr_handle = intr_handles[TEST_INTERRUPT_HANDLE_VALID];
@@ -305,13 +306,28 @@ test_interrupt(void)
                goto out;
        }
        /* check flag in 3 seconds */
-       while (flag == 0 && count++ < 3)
+       for (count = 0; flag == 0 && count < 3; count++)
                rte_delay_ms(TEST_INTERRUPT_CHECK_INTERVAL);
+
+       rte_delay_ms(TEST_INTERRUPT_CHECK_INTERVAL);
+
+       if ((ret = rte_intr_callback_unregister(&test_intr_handle,
+                       test_interrupt_callback, NULL)) < 0) {
+               printf("rte_intr_callback_unregister() failed with error "
+                       "code: %d\n", ret);
+               goto out;
+       }
+
+       ret = -1;
+       
        if (flag == 0) {
                printf("registered callback has not been called\n");
                goto out;
+       } else if (flag < 0) {
+               printf("registered callback failed\n");
+               ret = flag;
+               goto out;
        }
-       rte_delay_ms(1000);
 
        printf("start register/unregister test\n");
 
@@ -386,18 +402,18 @@ test_interrupt(void)
                        "for all\n");
                goto out;
        }
-       rte_delay_ms(1000);
+       rte_delay_ms(TEST_INTERRUPT_CHECK_INTERVAL);
 
        printf("start interrupt enable/disable test\n");
 
        /* check interrupt enable/disable functions */
        if (test_interrupt_enable() < 0)
                goto out;
-       rte_delay_ms(1000);
+       rte_delay_ms(TEST_INTERRUPT_CHECK_INTERVAL);
 
        if (test_interrupt_disable() < 0)
                goto out;
-       rte_delay_ms(1000);
+       rte_delay_ms(TEST_INTERRUPT_CHECK_INTERVAL);
 
        ret = 0;
 
@@ -409,7 +425,7 @@ out:
        rte_intr_callback_unregister(&test_intr_handle,
                        test_interrupt_callback_1, (void *)-1);
 
-       rte_delay_ms(2000);
+       rte_delay_ms(2 * TEST_INTERRUPT_CHECK_INTERVAL);
        /* deinit */
        test_interrupt_deinit();