0xff. Пропадаю. Попр спросить здесь(на qnx.org.ru день не отвечают), учитывая богатый опыт участников конфы (qnx) (+) Традиционные мододы локолизации bug в таких случаях? Заранее спасибо.
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено /гоша/ 21 сентября 2004 г. 16:41

Сознаю себя полным неучем. Пропадаю- проблемы с ждущими болкировакми

Использую ждущие блокировки стандартно, но адрес передаю как параметр ф-ии.
При таком использовании, ждущие блокировки не работают. Подскажите пожалуйста где туплю/собака порылась. Спасибо.


char volatile go_flg, continue_flg;
struct run_cmd_t
{char volatile * flg;
char _cmd[128];
};
/*==============================================================================*/
int run_cmd(...., char volatile * flg)
{long rc;
char s[512];
{pthread_sleepon_lock();
while ( !(*flg) ) {sprintf(s,"%s on addr=%p", _sleep_on_wait_msg, flg);msg_to_log(s);pthread_sleepon_wait(flg);}
pthread_sleepon_unlock();

....
return EOK;
}
int export_cmd (struct run_cmd_t *_cmd)
{struct plc_ascii_cmd_qry qry;
struct ea_errcode_rep rep;
int rc;

qry.type= PLC_ASCII_CMD;
strncpy(qry.cmd, _cmd->_cmd, 64);
rc=run_cmd((char *)&qry, sizeof(struct plc_ascii_cmd_qry), &rep, _cmd->flg);
return rc;
}

void main(void)
{.....
case CONTINUE:
pthread_sleepon_lock();
continue_flg= 1;
pthread_sleepon_broadcast(&continue_flg);
pthread_sleepon_unlock();
.....


PS: адреса flg main и thread совпадают (проверял отладочными printf)

Переделал все на condvar. Результат такой же: pidin утверждает, что thread в сост CONDVAR висят на разных condvar с разными адресами(разные condvar), но каждый на 8 байт ниже печатаемого отладочным printf в программе.

Триггерации не происходит.

Спасибо.

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru