diff --git a/Makefile.am b/Makefile.am index 93254e811..e391de897 100644 --- a/Makefile.am +++ b/Makefile.am @@ -5,7 +5,7 @@ INCLUDES = $(all_includes) -I$(top_srcdir)/include SUBDIRS = include src tests pkgconfigdir = $(libdir)/pkgconfig -pkgconfig_DATA = libosmocore.pc libosmocodec.pc libosmovty.pc +pkgconfig_DATA = libosmocore.pc libosmocodec.pc libosmovty.pc libosmogsm.pc BUILT_SOURCES = $(top_srcdir)/.version $(top_srcdir)/.version: diff --git a/configure.in b/configure.in index 165cecb75..b572bf4cc 100644 --- a/configure.in +++ b/configure.in @@ -101,6 +101,7 @@ AC_OUTPUT( libosmocore.pc libosmocodec.pc libosmovty.pc + libosmogsm.pc include/osmocom/Makefile include/osmocom/vty/Makefile include/osmocom/codec/Makefile @@ -111,6 +112,7 @@ AC_OUTPUT( src/Makefile src/vty/Makefile src/codec/Makefile + src/gsm/Makefile tests/Makefile tests/timer/Makefile tests/sms/Makefile diff --git a/include/osmocore/Makefile.am b/include/osmocore/Makefile.am index a3b12ef4c..b65589a68 100644 --- a/include/osmocore/Makefile.am +++ b/include/osmocore/Makefile.am @@ -2,7 +2,8 @@ osmocore_HEADERS = signal.h linuxlist.h timer.h select.h msgb.h bits.h \ tlv.h bitvec.h comp128.h statistics.h gsm_utils.h utils.h \ gsmtap.h write_queue.h rsl.h gsm48.h rxlev_stat.h mncc.h \ gsm48_ie.h logging.h gsm0808.h rate_ctr.h gsmtap_util.h \ - plugin.h crc16.h panic.h process.h gsm0480.h msgfile.h + plugin.h crc16.h panic.h process.h gsm0480.h msgfile.h \ + backtrace.h if ENABLE_TALLOC osmocore_HEADERS += talloc.h diff --git a/include/osmocore/backtrace.h b/include/osmocore/backtrace.h new file mode 100644 index 000000000..bbbb2c288 --- /dev/null +++ b/include/osmocore/backtrace.h @@ -0,0 +1,6 @@ +#ifndef _OSMO_BACKTRACE_H_ +#define _OSMO_BACKTRACE_H_ + +void generate_backtrace(); + +#endif diff --git a/include/osmocore/gsm_utils.h b/include/osmocore/gsm_utils.h index 0aadd2e42..19adb70a8 100644 --- a/include/osmocore/gsm_utils.h +++ b/include/osmocore/gsm_utils.h @@ -114,5 +114,4 @@ int gprs_tlli_type(uint32_t tlli); uint32_t gprs_tmsi2tlli(uint32_t p_tmsi, enum gprs_tlli_type type); -void generate_backtrace(); #endif diff --git a/libosmogsm.pc.in b/libosmogsm.pc.in new file mode 100644 index 000000000..753bb3a11 --- /dev/null +++ b/libosmogsm.pc.in @@ -0,0 +1,11 @@ +prefix=@prefix@ +exec_prefix=@exec_prefix@ +libdir=@libdir@ +includedir=@includedir@ + +Name: Osmocom GSM Core Library +Description: GSM Core Library +Version: @VERSION@ +Libs: -L${libdir} -losmogsm +Cflags: -I${includedir}/ + diff --git a/src/Makefile.am b/src/Makefile.am index 94492c537..c5c8a21da 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -1,4 +1,4 @@ -SUBDIRS=. vty codec +SUBDIRS=. vty codec gsm # This is _NOT_ the library release version, it's an API version. # Please read Chapter 6 "Library interface versions" of the libtool documentation before making any modification @@ -9,12 +9,12 @@ AM_CFLAGS = -fPIC -Wall lib_LTLIBRARIES = libosmocore.la -libosmocore_la_SOURCES = timer.c select.c signal.c msgb.c rxlev_stat.c bits.c \ - tlv_parser.c bitvec.c comp128.c gsm_utils.c statistics.c \ - write_queue.c utils.c rsl.c gsm48.c gsm48_ie.c \ - logging.c logging_syslog.c gsm0808.c rate_ctr.c \ - gsmtap_util.c gprs_cipher_core.c crc16.c panic.c \ - process.c gsm0480.c +libosmocore_la_SOURCES = timer.c select.c signal.c msgb.c bits.c \ + bitvec.c statistics.c \ + write_queue.c utils.c \ + logging.c logging_syslog.c rate_ctr.c \ + gsmtap_util.c crc16.c panic.c backtrace.c \ + process.c if ENABLE_PLUGIN libosmocore_la_SOURCES += plugin.c diff --git a/src/backtrace.c b/src/backtrace.c new file mode 100644 index 000000000..42394453d --- /dev/null +++ b/src/backtrace.c @@ -0,0 +1,50 @@ +/* + * (C) 2008 by Daniel Willmann + * (C) 2009 by Holger Hans Peter Freyther + * (C) 2009-2010 by Harald Welte + * (C) 2010 by Nico Golde + * + * All Rights Reserved + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + */ + +#include +#include +#include +#include "config.h" + +#ifdef HAVE_EXECINFO_H +#include +void generate_backtrace() +{ + int i, nptrs; + void *buffer[100]; + char **strings; + + nptrs = backtrace(buffer, ARRAY_SIZE(buffer)); + printf("backtrace() returned %d addresses\n", nptrs); + + strings = backtrace_symbols(buffer, nptrs); + if (!strings) + return; + + for (i = 1; i < nptrs; i++) + printf("%s\n", strings[i]); + + free(strings); +} +#endif diff --git a/src/gsm/Makefile.am b/src/gsm/Makefile.am new file mode 100644 index 000000000..a8c2e5692 --- /dev/null +++ b/src/gsm/Makefile.am @@ -0,0 +1,13 @@ +# This is _NOT_ the library release version, it's an API version. +# Please read Chapter 6 "Library interface versions" of the libtool documentation before making any modification +LIBVERSION=0:0:0 + +INCLUDES = $(all_includes) -I$(top_srcdir)/include +AM_CFLAGS = -fPIC -Wall + +lib_LTLIBRARIES = libosmogsm.la + +libosmogsm_la_SOURCES = rxlev_stat.c tlv_parser.c comp128.c gsm_utils.c \ + rsl.c gsm48.c gsm48_ie.c gsm0808.c \ + gprs_cipher_core.c gsm0480.c +libosmogsm_la_LIBADD = $(top_builddir)/src/libosmocore.la diff --git a/src/comp128.c b/src/gsm/comp128.c similarity index 100% rename from src/comp128.c rename to src/gsm/comp128.c diff --git a/src/gprs_cipher_core.c b/src/gsm/gprs_cipher_core.c similarity index 100% rename from src/gprs_cipher_core.c rename to src/gsm/gprs_cipher_core.c diff --git a/src/gsm0480.c b/src/gsm/gsm0480.c similarity index 100% rename from src/gsm0480.c rename to src/gsm/gsm0480.c diff --git a/src/gsm0808.c b/src/gsm/gsm0808.c similarity index 100% rename from src/gsm0808.c rename to src/gsm/gsm0808.c diff --git a/src/gsm48.c b/src/gsm/gsm48.c similarity index 100% rename from src/gsm48.c rename to src/gsm/gsm48.c diff --git a/src/gsm48_ie.c b/src/gsm/gsm48_ie.c similarity index 100% rename from src/gsm48_ie.c rename to src/gsm/gsm48_ie.c diff --git a/src/gsm_utils.c b/src/gsm/gsm_utils.c similarity index 96% rename from src/gsm_utils.c rename to src/gsm/gsm_utils.c index 31e3cd698..54a13ad8f 100644 --- a/src/gsm_utils.c +++ b/src/gsm/gsm_utils.c @@ -334,29 +334,6 @@ enum gsm_band gsm_band_parse(const char* mhz) } } - -#ifdef HAVE_EXECINFO_H -#include -void generate_backtrace() -{ - int i, nptrs; - void *buffer[100]; - char **strings; - - nptrs = backtrace(buffer, ARRAY_SIZE(buffer)); - printf("backtrace() returned %d addresses\n", nptrs); - - strings = backtrace_symbols(buffer, nptrs); - if (!strings) - return; - - for (i = 1; i < nptrs; i++) - printf("%s\n", strings[i]); - - free(strings); -} -#endif - enum gsm_band gsm_arfcn2band(uint16_t arfcn) { int is_pcs = arfcn & ARFCN_PCS; diff --git a/src/rsl.c b/src/gsm/rsl.c similarity index 100% rename from src/rsl.c rename to src/gsm/rsl.c diff --git a/src/rxlev_stat.c b/src/gsm/rxlev_stat.c similarity index 100% rename from src/rxlev_stat.c rename to src/gsm/rxlev_stat.c diff --git a/src/tlv_parser.c b/src/gsm/tlv_parser.c similarity index 100% rename from src/tlv_parser.c rename to src/gsm/tlv_parser.c diff --git a/src/panic.c b/src/panic.c index 5fb7b565e..21e8fd56b 100644 --- a/src/panic.c +++ b/src/panic.c @@ -22,6 +22,7 @@ #include #include +#include #include "../config.h" diff --git a/tests/sms/Makefile.am b/tests/sms/Makefile.am index a8f1ff6a2..fa4e387f0 100644 --- a/tests/sms/Makefile.am +++ b/tests/sms/Makefile.am @@ -2,4 +2,4 @@ INCLUDES = $(all_includes) -I$(top_srcdir)/include noinst_PROGRAMS = sms_test sms_test_SOURCES = sms_test.c -sms_test_LDADD = $(top_builddir)/src/libosmocore.la +sms_test_LDADD = $(top_builddir)/src/libosmocore.la $(top_builddir)/src/gsm/libosmogsm.la diff --git a/tests/smscb/Makefile.am b/tests/smscb/Makefile.am index 1d0e5384e..9a6fb4fd2 100644 --- a/tests/smscb/Makefile.am +++ b/tests/smscb/Makefile.am @@ -2,4 +2,4 @@ INCLUDES = $(all_includes) -I$(top_srcdir)/include noinst_PROGRAMS = smscb_test smscb_test_SOURCES = smscb_test.c -smscb_test_LDADD = $(top_builddir)/src/libosmocore.la +smscb_test_LDADD = $(top_builddir)/src/libosmocore.la $(top_builddir)/src/gsm/libosmogsm.la diff --git a/tests/ussd/Makefile.am b/tests/ussd/Makefile.am index d29506cc0..ef9aa4924 100644 --- a/tests/ussd/Makefile.am +++ b/tests/ussd/Makefile.am @@ -2,4 +2,4 @@ INCLUDES = $(all_includes) -I$(top_srcdir)/include noinst_PROGRAMS = ussd_test ussd_test_SOURCES = ussd_test.c -ussd_test_LDADD = $(top_builddir)/src/libosmocore.la +ussd_test_LDADD = $(top_builddir)/src/libosmocore.la $(top_builddir)/src/gsm/libosmogsm.la