Beispiel #1
0
void initialize_structs(void) {
    numthreads=0;
    if (control_init(&wq.control))
        dabort();
    queue_init(&wq.work);
    if (control_init(&cq.control)) {
        control_destroy(&wq.control);
        dabort();
    }
    queue_init(&wq.work);
    control_activate(&wq.control);
}
Beispiel #2
0
int main(void) {
    int x;
    wnode *mywork;
    initialize_structs();
    /* CREATION */

    if (create_threads()) {
        printf("Error starting threads... cleaning up.\n");
        join_threads();
        dabort();
    }
    pthread_mutex_lock(&wq.control.mutex);
    for (x=0; x<16000; x++) {
        mywork=malloc(sizeof(wnode));
        if (!mywork) {
            printf("ouch! can't malloc!\n");
            break;
        }
        mywork->jobnum=x;
        queue_put(&wq.work,(node *) mywork);
    }
    pthread_mutex_unlock(&wq.control.mutex);
    pthread_cond_broadcast(&wq.control.cond);
    printf("sleeping...\n");
    sleep(2);
    printf("deactivating work queue...\n");
    control_deactivate(&wq.control);
    /* CLEANUP  */
    join_threads();
    cleanup_structs();
}
Beispiel #3
0
static void mt_write(struct dhara_map *m, dhara_sector_t s, int seed)
{
	const size_t page_size = 1 << m->journal.nand->log2_page_size;
	uint8_t buf[page_size];
	dhara_error_t err;

	seq_gen(seed, buf, sizeof(buf));
	if (dhara_map_write(m, s, buf, &err) < 0)
		dabort("map_write", err);
}