static void
test_reset(void)
{
    protothread_t const pt = protothread_create() ;
    reset_context_t * const c = calloc(1, sizeof(*c)) ;

    /* Start running the thread and then make sure we
     * can really reset the thread location
     */
    pt_create(pt, &c->pt_thread, reset_thr, c) ;

    protothread_run(pt) ;
    assert(c->i == 0) ;

    protothread_run(pt) ;
    assert(c->i == 1) ;
    pt_reset(c) ;

    protothread_run(pt) ;
    assert(c->i == 0) ;

    while (protothread_run(pt)) ;

    free(c) ;
    protothread_free(pt) ;
}
Beispiel #2
0
int qm_aonpt_reset(const qm_aonc_t aonc)
{
	QM_CHECK(aonc < QM_AONC_NUM, -EINVAL);

	pt_reset(aonc);

	return 0;
}
Beispiel #3
0
int qm_aonpt_reset(const qm_scss_aon_t aonc)
{
	QM_CHECK(aonc < QM_SCSS_AON_NUM, -EINVAL);

	pt_reset(aonc);

	return 0;
}
Beispiel #4
0
int qm_aonpt_set_config(const qm_aonc_t aonc,
			const qm_aonpt_config_t *const cfg)
{
	QM_CHECK(aonc < QM_AONC_NUM, -EINVAL);
	QM_CHECK(cfg != NULL, -EINVAL);

	QM_AONC[aonc].aonpt_cfg = cfg->count;
	if (cfg->int_en) {
		callback = cfg->callback;
		callback_data = cfg->callback_data;
	} else {
		callback = NULL;
	}
	pt_reset(aonc);

	return 0;
}
Beispiel #5
0
int qm_aonpt_set_config(const qm_scss_aon_t aonc,
			const qm_aonpt_config_t *const cfg)
{
	QM_CHECK(aonc < QM_SCSS_AON_NUM, -EINVAL);
	QM_CHECK(cfg != NULL, -EINVAL);

	QM_SCSS_AON[aonc].aonpt_ctrl |= BIT(0); /* Clear pending interrupts */
	QM_SCSS_AON[aonc].aonpt_cfg = cfg->count;
	if (cfg->int_en) {
		callback = cfg->callback;
		callback_data = cfg->callback_data;
	} else {
		callback = NULL;
	}
	pt_reset(aonc);

	return 0;
}