Перейти к содержанию
    

sim732

Участник
  • Постов

    3
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный
  1. Спасибо Юрий за комментарий. Я так и поступил. Хотя и добавил пару строк в tn_tcp_send.c для того, чтобы было соответствие с документацией. if(m) break; else { if(so->so_state & SS_NBIO) { splx(tnet, sm); return -EWOULDBLOCK; } else { splx(tnet, sm); tn_net_wait(&so->so_rcv.sb_sem); } } Спасибо еще раз за Вашу работу. Отличная RTOS и стиль написания очень ясный.
  2. Почитал tn-net-sockets.pdf. Оказывается в Вашей реализации сокет можно перевести в неблокирующий режим. Не очень хорошее решение моей проблемы (напрасно будет тратится процессорное время), но все же лучше, чем ничего. Использую предоставленную функцию s_ioctl(). Сокет переводиться в неблокирующий режим не хочет. Смотрю исходные тексты и вижу, что в функции tcp_s_recv() проверка состояния so->so_state на SS_NBIO вообще отсутствует. Т.е. в этой версии tcp/ip стека(0.9) перевести открытый сокет в неблокирующее состояние нельзя.
  3. Здравствуйте Юрий. Пытаюсь использовать Ваш TCP/IP stack с TN kernel в одном проекте и столкнулся с такой проблемой. Есть задача, которая с одной стороны работает с клиентом на host PC по tcp/ip, а сдругой стороны с двумя очередями. Если задача читает сокет, то она естественно засыпает при отсутствии сообщений от клиента. Но тогда она может прозевать сообщение из очереди. Есть ли в Вашей реализации стека что-либо такое (типа select), что может сообщать о событии появления сообщения через сокет до вызова функции s_recv ?
×
×
  • Создать...