This patch doesn't appear to apply to the current master.  Needs a rebase?

bill@Ubuntu15:~/linaro/ivanpatch$ git am --reject ~/Mail/Incoming/Ivan/1
Applying: example: timer: free resources while termination
Checking patch example/timer/odp_timer_test.c...
Hunk #1 succeeded at 334 (offset 3 lines).
Hunk #2 succeeded at 366 (offset 3 lines).
error: while searching for:
gbls->pool = odp_pool_create("msg_pool", &params);

if (gbls->pool == ODP_POOL_INVALID) {
EXAMPLE_ERR("Pool create failed.\n");
return -1;
}

tparams.res_ns = gbls->args.resolution_us*ODP_TIME_USEC;

error: patch failed: example/timer/odp_timer_test.c:404
Hunk #4 succeeded at 424 (offset 2 lines).
Hunk #5 succeeded at 451 (offset 2 lines).
Hunk #6 succeeded at 491 (offset 2 lines).
Applying patch example/timer/odp_timer_test.c with 1 reject...
Hunk #1 applied cleanly.
Hunk #2 applied cleanly.
Rejected hunk #3.
Hunk #4 applied cleanly.
Hunk #5 applied cleanly.
Hunk #6 applied cleanly.
Patch failed at 0001 example: timer: free resources while termination


On Mon, Dec 14, 2015 at 9:29 AM, Ivan Khoronzhuk <[email protected]
> wrote:

> ping
>
> On 19.11.15 12:54, Ivan Khoronzhuk wrote:
>
>> Example should free resources in right order when terminates.
>> Also it should have correct error path.
>>
>> Signed-off-by: Ivan Khoronzhuk <[email protected]>
>> ---
>>   example/timer/odp_timer_test.c | 46
>> ++++++++++++++++++++++++++++++++++--------
>>   1 file changed, 38 insertions(+), 8 deletions(-)
>>
>> diff --git a/example/timer/odp_timer_test.c
>> b/example/timer/odp_timer_test.c
>> index 94619e4..2d74e4c 100644
>> --- a/example/timer/odp_timer_test.c
>> +++ b/example/timer/odp_timer_test.c
>> @@ -331,18 +331,21 @@ int main(int argc, char *argv[])
>>         char cpumaskstr[ODP_CPUMASK_STR_SIZE];
>>         odp_shm_t shm;
>>         test_globals_t  *gbls;
>> +       int err = 0;
>>
>>         printf("\nODP timer example starts\n");
>>
>>         if (odp_init_global(NULL, NULL)) {
>> +               err = 1;
>>                 printf("ODP global init failed.\n");
>> -               return -1;
>> +               goto err;
>>         }
>>
>>         /* Init this thread. */
>>         if (odp_init_local(ODP_THREAD_CONTROL)) {
>> +               err = 1;
>>                 printf("ODP local init failed.\n");
>> -               return -1;
>> +               goto err_global;
>>         }
>>
>>         printf("\n");
>> @@ -360,14 +363,16 @@ int main(int argc, char *argv[])
>>         shm = odp_shm_reserve("shm_test_globals", sizeof(test_globals_t),
>>                               ODP_CACHE_LINE_SIZE, 0);
>>         if (ODP_SHM_INVALID == shm) {
>> +               err = 1;
>>                 EXAMPLE_ERR("Error: shared mem reserve failed.\n");
>> -               return -1;
>> +               goto err_local;
>>         }
>>
>>         gbls = odp_shm_addr(shm);
>>         if (NULL == gbls) {
>> +               err = 1;
>>                 EXAMPLE_ERR("Error: shared mem alloc failed.\n");
>> -               return -1;
>> +               goto err_shm;
>>         }
>>         memset(gbls, 0, sizeof(test_globals_t));
>>
>> @@ -404,8 +409,9 @@ int main(int argc, char *argv[])
>>         gbls->pool = odp_pool_create("msg_pool", &params);
>>
>>         if (gbls->pool == ODP_POOL_INVALID) {
>> +               err = 1;
>>                 EXAMPLE_ERR("Pool create failed.\n");
>> -               return -1;
>> +               goto err_shm;
>>         }
>>
>>         tparams.res_ns = gbls->args.resolution_us*ODP_TIME_USEC;
>> @@ -416,8 +422,9 @@ int main(int argc, char *argv[])
>>         tparams.clk_src = ODP_CLOCK_CPU;
>>         gbls->tp = odp_timer_pool_create("timer_pool", &tparams);
>>         if (gbls->tp == ODP_TIMER_POOL_INVALID) {
>> +               err = 1;
>>                 EXAMPLE_ERR("Timer pool create failed.\n");
>> -               return -1;
>> +               goto err_msg_pool;
>>         }
>>         odp_timer_pool_start();
>>
>> @@ -442,8 +449,9 @@ int main(int argc, char *argv[])
>>         queue = odp_queue_create("timer_queue", ODP_QUEUE_TYPE_SCHED,
>> &param);
>>
>>         if (queue == ODP_QUEUE_INVALID) {
>> +               err = 1;
>>                 EXAMPLE_ERR("Timer queue create failed.\n");
>> -               return -1;
>> +               goto err_timer_pool;
>>         }
>>
>>         printf("CPU freq %"PRIu64" Hz\n", odp_sys_cpu_hz());
>> @@ -481,7 +489,29 @@ int main(int argc, char *argv[])
>>         /* Wait for worker threads to exit */
>>         odph_linux_pthread_join(thread_tbl, num_workers);
>>
>> -       printf("ODP timer test complete\n\n");
>> +       /* free resources */
>> +       if (odp_queue_destroy(queue))
>> +               err = 1;
>> +err_timer_pool:
>> +       odp_timer_pool_destroy(gbls->tp);
>> +err_msg_pool:
>> +       if (odp_pool_destroy(gbls->pool))
>> +               err = 1;
>> +err_shm:
>> +       if (odp_shm_free(shm))
>> +               err = 1;
>> +err_local:
>> +       if (odp_term_local())
>> +               err = 1;
>> +err_global:
>> +       if (odp_term_global())
>> +               err = 1;
>> +err:
>> +       if (err) {
>> +               printf("Err: ODP timer test failed\n\n");
>> +               return -1;
>> +       }
>>
>> +       printf("ODP timer test complete\n\n");
>>         return 0;
>>   }
>>
>>
> --
> Regards,
> Ivan Khoronzhuk
>
> _______________________________________________
> lng-odp mailing list
> [email protected]
> https://lists.linaro.org/mailman/listinfo/lng-odp
>
_______________________________________________
lng-odp mailing list
[email protected]
https://lists.linaro.org/mailman/listinfo/lng-odp

Reply via email to