Libosmocore » History » Version 1
laforge, 02/19/2016 10:49 PM
new page on libosmocore
1 | 1 | laforge | [[PageOutline]] |
---|---|---|---|
2 | = libosmocore = |
||
3 | |||
4 | libosmocore is a library with various utility functions that were originally developed as part of |
||
5 | the [wiki:OpenBSC] project, but which are of a more generic nature and thus useful to (at least) |
||
6 | other programs that we develop in the sphere of Open Source mobile communications. |
||
7 | |||
8 | There is no clear scope of it. We simply move all shared code between [wiki:OsmocomBB] and [wiki:OpenBSC] |
||
9 | in this library to avoid code duplication. |
||
10 | |||
11 | == Obtaining it == |
||
12 | |||
13 | When you download and build [wiki:OsmocomBB], then libosmocore is automatically part of the package, |
||
14 | no special action is required. |
||
15 | |||
16 | If you want to obtain a standalone version of libosmocore, you can use the following git URL: |
||
17 | {{{git clone git://git.osmocom.org/libosmocore.git}}} |
||
18 | |||
19 | == Licensing == |
||
20 | |||
21 | This library is GPL licensed, as the code is taken from the similarly GPL-licensed OpenBSC codebase. |
||
22 | |||
23 | This means you '''cannot use this library from non-GPL licensed code without infringing copyright! |
||
24 | |||
25 | == Features == |
||
26 | |||
27 | === Select loop abstraction === |
||
28 | |||
29 | This is implemented in select.[ch] and enables you to build complex asynchronous/non-blocking I/O |
||
30 | programs in a single thread. |
||
31 | |||
32 | === Message buffer handling === |
||
33 | |||
34 | Inspired by the Linux kernel {{{struct sk_buff}}}, this is our message buffer {{{struct msgb}}} |
||
35 | implementation. It provides handling of packet buffers, putting them in queues, prepending |
||
36 | and appending data to it, etc. |
||
37 | |||
38 | === Bitvector === |
||
39 | |||
40 | A convenient set of routines to deal with bit-vectors in C. This was originally written |
||
41 | for rest-octet parsing. |
||
42 | |||
43 | === TLV handling === |
||
44 | |||
45 | The GSM Layer3 and above are full of TV / TLV / TL16V and other data fields. Our implementation |
||
46 | provides parser and generator functions, tightly coupled to {{{struct msgb}}} |
||
47 | |||
48 | === Timers === |
||
49 | |||
50 | Provides a timer core where you can register timers with a callback function. The function |
||
51 | is called when the timer expires. |
||
52 | |||
53 | === Comp128v1 === |
||
54 | |||
55 | A Comp128v1 implementation by Sylvain Munaut is included. |
||
56 | |||
57 | === Talloc memory allocator === |
||
58 | |||
59 | The talloc memory allocator from the Samba project. |