Changeset 0d56712 in mainline for kernel/test/synch/workq-test-core.h


Ignore:
Timestamp:
2012-07-07T00:27:01Z (12 years ago)
Author:
Adam Hraska <adam.hraska+hos@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
ff90f5f
Parents:
8a64e81e
Message:

workq: Added magic cookie integrity checks. Fixed test workqueue1.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/test/synch/workq-test-core.h

    r8a64e81e r0d56712  
    8282}
    8383
     84static void free_work(test_work_t *work)
     85{
     86        memsetb(work, sizeof(test_work_t), 0xfa);
     87        free(work);
     88}
     89
    8490static void reproduce(work_t *work_item)
    8591{
     
    112118                        if (child) {
    113119                                if (!core_workq_enqueue(&child->work_item, reproduce))
    114                                         free(child);
     120                                        free_work(child);
    115121                        }
    116122                }
    117123               
    118124                if (!core_workq_enqueue(work_item, reproduce)) {
    119                         if (!work->master) {
    120                                 free(work);
    121                         }
     125                        if (work->master)
     126                                TPRINTF("\nErr: Master work item exiting prematurely!\n");
     127
     128                        free_work(work);
    122129                }
    123130        } else {
     
    125132               
    126133                if (work->master && new_wave(work)) {
    127                                 core_workq_enqueue(work_item, reproduce);
     134                        if (!core_workq_enqueue(work_item, reproduce)) {
     135                                TPRINTF("\nErr: Master work could not start a new wave!\n");
     136                                free_work(work);
     137                        }
    128138                } else {
    129139                        if (work->master)
    130                                 TPRINTF("\nMaster work item done!\n");
     140                                TPRINTF("\nMaster work item done.\n");
    131141                               
    132                         memsetb(work, sizeof(test_work_t), 0xfa);
    133                         free(work);
     142                        free_work(work);
    134143                }
    135144        }
     
    180189       
    181190        for (int i = 0; i < WAVES; ++i) {
    182                 if (atomic_get(&call_cnt[i]) != exp_call_cnt) {
     191                if (atomic_get(&call_cnt[i]) == exp_call_cnt) {
     192                        TPRINTF("Ok: %u calls in wave %d, as expected.\n",
     193                                atomic_get(&call_cnt[i]), i);
     194                } else {
    183195                        success = false;
    184196                        TPRINTF("Error: %u calls in wave %d, but %zu expected.\n",
    185197                                atomic_get(&call_cnt[i]), i, exp_call_cnt);
    186                 }
     198                } 
    187199        }
    188200       
Note: See TracChangeset for help on using the changeset viewer.