aboutsummaryrefslogtreecommitdiffstats
path: root/src/bitvec.c
AgeCommit message (Collapse)AuthorFilesLines
2016-07-16bitvec: Force inlining of bitvec_set_bit_pos/bitvec_set_bitHolger Hans Peter Freyther1-2/+2
The PCU is using bitvec_write_field a lot but on the arm-poky-linux-gnueabi-gcc v4.8.1 the calls to set_bit and set_bit_pos are not inlined. The inlined variant has been a more quick for the PCU compressed bitmap decompression testcase. Used objdump -d to look at the bitvec_write_field before and after the change. The branch to bitvec_set_bit is gone and a inlined version has been used. Change-Id: I0b6b90610f4c17f02e4efa064c3bf1ac2dccb22a
2016-06-27Mark input parameter to bitvec_set_bits() as 'const'Harald Welte1-1/+1
The input data is accessed in a read-only manner, so it should be marked with the const qualifier. Change-Id: I0d6b86289fa647594f3da1f1c0e0168685307a37
2016-05-05Update doxygen annotations in libosmocoreHarald Welte1-11/+40
This adds and improves doxygen API descriptions all over libosmocore, reducing the 'white spots' that don't have any documentation.
2016-03-17Add function to add bits from array to bitvecMax1-0/+40
Add function which adds specified number of bits from each element of array to the bit vector prefixing each addition with one and finishing entire sequence with adding 0. This is very common patter for various repetitive data structures described with CSN.1 in 3GPP standards. Corresponding test vectors and doxygen headers are added too.
2016-02-18bitvec: Untested speculative UBAN fix for the new routineHolger Hans Peter Freyther1-1/+1
int << 31 does not seem to be defined, let's try to make it an unsigned variable and see if that is pleasing the system. Fixes: bitvec.c:219:15: runtime error: left shift of 1 by 31 places cannot be represented in type 'int'
2016-02-18Expand bitvec interfaceMax1-5/+129
Add bit filling, shifting and other functions necessary for bit compression implementation. Add corresponding tests.
2016-01-30bitvec: Test and fix regression for C++->C conversionHolger Hans Peter Freyther1-9/+9
bitvec_read_field/bitvec_write_field in the PCU used a C++ reference and when porting to C it was decided to pass the parameter by value and this lost the "back propagation" of the new index. Change the parameter to be an in/out parameter and this way do not have a silent semantic break in the osmo-pcu (where we copy the reference in csn.1 by value) and have a true compile failure. Add Max's simple test for bitvec_unhex function leaving the checking of bitvec_read_field and the side effect in the datastructure about the number of bits still open.
2016-01-30Add doxygen comments to clarify function useMax1-1/+14
2016-01-27bitvec: Fix build on older gccHolger Hans Peter Freyther1-1/+3
bitvec.c: In function 'bitvec_unhex': bitvec.c:389: error: 'for' loop initial declarations are only allowed in C99 mode bitvec.c:389: note: use option -std=c99 or -std=gnu99 to compile your code
2016-01-26Add bitvec-related functions from Osmo-PCUMax1-0/+95
Allocation, pack/unpack, field access and helper routines used extensively by Osmo-PCU. Whenever memory allocation happens, alocator context is passed explicitly by caller.
2016-01-22bitvec: Fix interface to consistently use unsigned intMax1-7/+7
Use unsigned int for the length throughout the interface. We will never have a a negative length. Sponsored-by: On-Waves ehf
2016-01-15bitvec: Add get/set byte sequencesJacob Erlbeck1-0/+75
The new functions bitvec_get_bytes and bitvec_set_bytes copy byte sequences from bitvecs to uint8_t arrays and vice versa. While the bytes in the bitvecs do not need to be aligned, the uint8_t arrays always are. In case the bytes in the bitvec are aligned, the implementation uses memcpy. Note that the implementation like the other existing functions assume MSB first encoding. [hfreyther: Squash the comment fix into this commit as well] Sponsored-by: On-Waves ehf
2013-02-15misc: Doxygen tweaks: fixed some typos and minor errorsKaterina Barone-Adesi1-1/+1
Doxygen generates quite a lot of warnings on libosmocore. Some of them are obvious typos - this patch aims to fix such low-hanging fruit.
2012-04-18doc: Fix the Doxygen section endingsSylvain Munaut1-1/+1
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
2011-08-17some more doxygen work (include the notion of modules)Harald Welte1-11/+42
2011-03-28bitvec: add bitvec_find_first_bit_pos() from gsm/rxlev_stat.cPablo Neira Ayuso1-0/+14
This patch adds bitvec_find_bit_pos() to bitvec.c where it really belongs to. Before this patch used to be part of gsm/rxlev_stat.c
2011-03-23include: reorganize headers file to include/osmocom/[gsm|core]0.2.0Pablo Neira Ayuso1-1/+1
This patch moves all GSM-specific definitions to include/osmocom/gsm. Moreover, the headers in include/osmocore/ have been moved to include/osmocom/core. This has been proposed by Harald Welte and Sylvain Munaunt. Tested with `make distcheck'. Signed-off-by: Pablo Neira Ayuso <pablo@gnumonks.org>
2010-10-24bitvec: Fix decoding of H / L valuesAndreas.Eversberg1-1/+1
it returns if a given bit in the vector is "high" or "low". the bitval that represents "high" depends on the bit position. bitval2mask returns that. so we must check if the bit in the vector equals the returned bitval.
2010-05-19Added some "get"-functions to bitvec of libosmocore.Andreas.Eversberg1-0/+49
- Getting Low or High value from current postion - Getting unsigned interger from current postion
2010-03-06mark some occasions of bitvec as 'const' as appropriateHarald Welte1-2/+2
2010-02-20intial checkin of the libosmocore projectHarald Welte1-0/+170