Naordin,
I'm a bit ashamed to ask, but I'll ask anyway,
could someone help me
explaining the OpenBSC source?
make_sock():
I didn't know it's possible to call select() on a read signal to finally
call the accept() for the socket_fd. Logically seen, socket_fd receives
something (in this case a new connection), so it works. I just thought
select() is only used for reading/writing data (or an except) on file
descriptors.
Why is OpenBSC written to work synchronously and not multihtreaded? If
somewhere in the chain hangs (by a bug), telnet for example won't
respond, right? What is the idea behind this concept? Is it a popular
concept in the Linux world (so I can be familiar with)?
This is called the Reactor pattern and it is not at all restricted to
Linux. It's not synchronous, it's synchronous event dispatching.
This style of programming was popularized with the ACE Framework by
Douglas Schmidt and a fairly well-known modern-day example is Twisted
(Python):
http://twistedmatrix.com/trac/.
Another - simpler - example is libevent:
http://www.monkey.org/~provos/libevent/.
Here is a short overview on Wikipedia:
http://en.wikipedia.org/wiki/Reactor_pattern
- Lars