w6100 소스 중에 질문드릴게 있습니다.

  1. socket.c 에 보면
  • SOCK_IO_BLOCK
  • SOCK_IO_NONBLOCK

두개가 define 되어 있는데 무슨 용도인지 알려 주실 수 있나요?

  1. socket.c 에 보면
  • int8_t setsockopt(uint8_t sn, sockopt_type sotype, void* arg)

함수에서 opt라는 단어가 자주 나오는거 같은데 혹시 무슨 약자 인가요?

  1. socket을 nonblock으로 동작실건지 block으로 동작시킬건지 설정하기 위해 사용됩니다.
    기본적으로 block으로 동작되게 되어있습니다.

  2. option 입니다.

이런 질문을 하시는 이유를 말씀해주실수 있나요?

개발을 위해 소스를 파악하고 있습니다.

현재 1개의 보드에 총 3개의 W6100을 사용하여서 제품을 개발할려고 하는데

제공된 라이브러리를 좀 수정을 해야 할거 같아서요…

그러기 위해선 제공된 소스가 어떻게 동작하는지 알아야 정확히 수정이 가능 할거 같아서 그렇습니다.

귀찮게 해드렸다면 죄송합니다 ㅜㅜ

의도를 알아야 맞게 대답을 드릴 수 있을 것 같아서 질문드렸습니다.

각 socket별로 non block인지 block인지 sock_io_mode변수에 값을 저장하게 되어있습니다.
0번 socket의 경우 0번 bit에 1번 bit일 경우 1번 bit에 값을 저장하며,
값이 0일경우 block mode, 1일 경우 non block mode입니다.
최초로 값이 설정될때는 socket()에서 설정되며, socket 함수를 호출할때 전달한 매개변수 flag에 따라 설정됩니다.
매개변수에 SF_IO_NONBLOCK을 전달해주지 않으면 Block으로 동작합니다.
image
image

cltsocket 함수를 통해서도 io mode 변경이 가능합니다.
image

sock_io_mode는 아래와 같이 send recv 등의 함수에서 반복문이 사용될때 nonblock 일 경우 빠져나오기 위해 사용됩니다.
image

전체적으로 sock_io_mode 를 검색하셔서 사용되는 경우를 체크하시는게 좋을 것 같습니다.