1
0
mirror of https://github.com/adtools/clib2.git synced 2025-12-08 06:48:52 +00:00
Commit Graph

567 Commits

Author SHA1 Message Date
e35307a7e3 Ignore linker map files, too. 2018-02-17 13:45:21 +01:00
911114c286 add an unimplemented tzset().
ctime_r() and localtime_r() are already using the localtime, so no need to do anything.
http://pubs.opengroup.org/onlinepubs/9699919799/functions/tzset.html

Signed-off-by: Henning Nielsen Lund <hnl_dk@amigaos.dk>
2017-08-27 13:30:12 +02:00
9e998ca108 should have been sys/clib2_stdc.h 2017-08-15 21:53:49 +02:00
99695dec0b we use restrict
Signed-off-by: Henning Nielsen Lund <hnl_dk@amigaos.dk>
2017-08-15 21:45:33 +02:00
0ec7094877 Code depending on statfs or fstatfs do both depend on sys/mount.h and sys/param.h where we only had sys/mount.h
Signed-off-by: Henning Nielsen Lund <hnl_dk@amigaos.dk>
2017-08-15 21:26:45 +02:00
a471e73adf add timespec declaration 2017-08-05 17:28:39 +02:00
c76bf8e20b add strnlen() 2017-08-01 21:28:07 +02:00
309bbd8c8c Add a few extra wide-character prototypes and the missing typedef locale_t 2017-08-01 21:26:59 +02:00
d6e5769bc5 using restrict, so restrict to c99 2017-08-01 14:52:45 +02:00
976b6ae7e1 Change the mbrlen declaration to equal ISO C.
http://pubs.opengroup.org/onlinepubs/9699919799/functions/mbrlen.html

Signed-off-by: Henning Nielsen Lund <hnl_dk@amigaos.dk>
2017-08-01 13:55:11 +02:00
8af96cb6cb Merge branch 'master' of https://github.com/adtools/clib2 2017-07-08 18:10:45 +02:00
febe690623 This got lost last year
The missing calloc() overflow test never made it to the CVS or git repositories :-(
2017-07-08 18:10:28 +02:00
e36ebff16e Merge pull request #3 from adtools/gcc5-fixes
Fixes for compiling with GCC 5.4.0 on AmigaOS 4.1
2017-06-28 08:55:21 +02:00
6a1fd36b3a Revision bump. 2017-06-28 06:35:31 +02:00
feebeb6751 GCC 5 changes 2017-06-28 06:34:57 +02:00
1b2c798467 Fixed calloc() and getopt_long()
Added integer overflow test to calloc().

Tiny change in getopt_long() so that the value pointed to by the "longindex" parameter is always initialized to an invalid index position (that being -1), instead of 0. The value of 0 can break some shell commands, most notably GNU wget.
V1_214
2017-05-01 18:06:23 +02:00
053a61fc4b Create LICENSE 2016-12-05 14:41:06 +01:00
4c54ee3f2d Version bump V1_213 2016-12-04 11:14:17 +01:00
f491e38b38 Added code to temporarily disable profiling 2016-12-04 11:14:00 +01:00
734ce4c1a9 Added code to temporarily disable profiling 2016-12-04 11:13:37 +01:00
ce345df9da Hide warnings for deprecated functions 2016-12-04 11:13:00 +01:00
5e0fa78d61 Only builds with GCC now 2016-12-04 11:12:42 +01:00
bc3e19abe5 Only uses MEMF_PRIVATE on OS4 now 2016-12-04 11:12:32 +01:00
29e02775fb Cleaned up the build rules, added missing files 2016-12-04 11:11:53 +01:00
5cb27db203 Slab allocator is exercised much more 2016-12-04 11:11:28 +01:00
4fc1b13945 Added a rogue malloc/free pair 2016-12-04 11:11:05 +01:00
8beaabac4f Removed unused local variable 2016-12-04 11:10:46 +01:00
271572ed56 Fixed so that it builds correctly with SAS/C again 2016-12-04 11:10:33 +01:00
e0feef8932 Moved __CXV54 into sas_cxv.asm
sas_cxv54.asm is no longer needed.
2016-12-04 11:10:13 +01:00
07259ed7eb This is needed when building with math=ieee option 2016-12-04 11:09:24 +01:00
3203fcf96a Removed unused result variable 2016-12-04 11:08:54 +01:00
bfba44bf83 Rewritten to use setjmp()/longjmp()
Also contains new code which prints the number of times a slab was reused.
2016-12-04 11:08:41 +01:00
35434bdedc Updated to build correctly with SAS/C again 2016-12-04 11:07:40 +01:00
17ba18c731 Added code which temporarily disables profiling 2016-12-04 11:06:50 +01:00
78a8c7655e Added __decay_unused_slabs() 2016-12-04 11:05:50 +01:00
184a127860 Added stdlib_decay_unused_slabs() 2016-12-04 11:05:30 +01:00
5617c0eacf Slab allocator update
Unused slabs which get recycled are no longer reinitialized from scratch if their chunk size matches what the allocator needed. If the chunk size matches, the list of available chunks is left unchanged, and just the various counters are reset.

Added __get_slab_stats() function.

Added support for global __slab_purge_threshold tuning variable.

Added a short test program for the slab allocator.

The malloc-test program was linked against the wrong object file in GNUmakefile.68k. Fixed.
V1_212 V2_212
2016-11-27 15:53:40 +01:00
ac710b333e Accidentally omitted from version 1.211 2016-11-24 09:45:35 +01:00
d2acae7cd7 Slab allocator update
Added more consistency checking to the slab allocator, which is built if DEBUG is defined in "stdlib_slab.c".

Memory allocations are no longer guaranteed to be aligned to 64 bit word boundaries. In fact, this has not even worked reliably in the past 10 years.

Memory allocation request sizes are now rounded to multiples of 32 bit words (the size of an address pointer) instead to the size of a 64 bit word.

Reduced the memory footprint of the memory allocation management data structures by reusing the most significant bit of the memory allocation size. This allows many more allocations to fit into the 32 byte chunk slabs, but limits the maximum memory allocation size to a little less than 2 GBytes.

Added integer overflow checks to the memory management code.

Reduced the memory management overhead further. This cuts an additional 8 bytes per allocation, unless neither the slab allocator nor memory pools are available. With this reduction the slab allocator is able to use 16 byte chunks, which cover memory allocation requests of 1..8 bytes.

Fixed a bug caused by returning an allocation back to a slab which passed the wrong pointer.
V1_211
2016-11-23 16:37:46 +01:00
f8cf752e6a Merge branch 'master' of https://github.com/adtools/clib2 V1_210 2016-11-22 11:07:46 +01:00
0c5b88d2d3 Slab allocator changes
If the first slab in the list of slabs which share the same chunk size has no more room, it means that all other slabs following it have no room either. This speeds up the test to find a slab with free space, which can now abort and directly proceed to allocate memory for a new slab.

If an empty slab's decay count hits zero, it is moved to the front of the empty slab list to be reclaimed more quickly.

Allocations made from the slab now carry a pointer back to the slab which they are a part of. This speeds up deallocation but has the downside of making the smallest usable slab chunk size 64 bytes, which is double what used to be the minimum before.
2016-11-22 11:07:38 +01:00
1ea8953bd3 Added __get_slab_allocations() function
__get_slab_allocations() which will report information about each memory allocation made by the slab allocator which does not come from a slab.
2016-11-22 11:06:29 +01:00
ff908f8a02 Added a malloc test program 2016-11-22 10:54:58 +01:00
525e193113 added missing .codeclimate.yml and .travis.yml 2016-11-22 10:52:01 +01:00
2df2393b81 minor tweak 2016-11-22 10:50:03 +01:00
ecd40943e2 added Travis-CI and CodeClimate code check support. 2016-11-22 10:46:01 +01:00
7e201fea06 Maximum slab size limited, debug mode errors fixed
The maximum slab size is now 2^17 bytes (= 131072). If you request a slab size larger than this, you will get slab sizes of 131072 bytes instead.

Enabling the memory management debugging code no longer produces compiler errors.
V1_209
2016-11-21 12:27:40 +01:00
799ee705e8 New monitoring function for slab allocator
Added __get_slab_usage() function which can be used to query the slab allocator memory usage at runtime.
V1_208
2016-11-19 15:49:21 +01:00
3425e33cf9 New functions and data structures for slab allocator 2016-11-19 15:48:51 +01:00
ef66e530b7 This was missing from the previous commit :-( 2016-11-19 13:08:27 +01:00