[fpc-devel]How to subscribe to list
Sergey.Korshunoff at p5.f2666.n5020.z2.fidonet.org
Mon Nov 6 06:27:13 CET 2000
There is no description in FPC doc's about this list subscription.
May be it is better to put some doc's about this procedure in FPC
doc's insteed of following sentense in readme.txt:
Information about available lists and subscription can be found
I do not have direct internet access. Can You send me answer by
PS: I have modified version of heap manager for FPC (v1.00).
In FPC 1.02 problem of memory fragmentation was solved in "FreeMem"
procedure. I think this is not so good. In my version a merging
is performed in "GetMem" procedure (when we looking freelists
for a free memory block).
This is faster (about 20% faster for a GetMem/FreeMem test cycle)
And my version do not allocate new memory from system if
we have continius memory block of needed size (in v1.02 we do not
merge blocks which start from some block in freelists[1..x])
Well. There is notes about my changes (related to v1.00):
Sergey Korshunoff (seyko at p5.f434.n5020.z2.fidonet.org):
1. Some constants moved from heaph.inc to this file.
2. Value returned by `SysMaxavail' is more correct now.
3. In SysGetMem:
is moved near to succesful exit (or we need to decrement
internal_memavail when we fail to allocate memory).
4. Handle case when `HeapError' return value is not in [0,1,2].
5. Now we repeat a full memory search path when `HeapError' say
to try again. This is like Borland `GetMem' do it. And
this allow us to handle a case when `HeapError' lead to
a `FreeMem' call without adding any new memory from OS.
6. BESTMATCH removed (it is time consuming procedure)
7. SysGetMem now merges blocks.
8. `heaporg', `heapptr' and `beforeheapendmask' are
not used now and removed (new memory from system go directly
to free list)
9. Procedure ReAllocMem in TMemoryManager record now takes
3rd paramater: a size of memory in old block which
contain information (some time it is much faster do not
to copy not used data from the old block)
10. Functions 'SysGetMem, Sys..' are removed from heaph.inc
because you should use MemoryManager for this job.
I replaced a call to syscall_nr_mmap by a call to syscall_nr_brk:
1) with syscall_nr_mmap first block of memory, reserved by FPC option
"-Cs<n> set stack size to <n>",
and second memory block, asked from Linux, will never be merged.
2) Linux do not allow restrict amount of memory (used by
program) if this memory is not allocated by syscall_nr_brk.
cmem.pp from source/packages:
CHeapSize and CMemAvail was added. CMEM do not return memory
to system now (this behavior is like behavior of standard heap package). And
now CMEM really do a work (there was some errors: before changes
adding CMEM in Uses statements lead to not working program).
More information about the fpc-devel