Trying to understanding the source

This is merely a historical archive of years 2008-2021, before the migration to mailman3.

A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/OpenBSC@lists.osmocom.org/.

Lars Immisch lars at ibp.de
Fri Jun 5 21:45:02 UTC 2009


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




More information about the OpenBSC mailing list