diff options
author | Rickard Green <rickard@erlang.org> | 2013-09-11 21:49:32 +0200 |
---|---|---|
committer | Rickard Green <rickard@erlang.org> | 2013-09-25 16:24:31 +0200 |
commit | cabfe2cdc0b8d879431f81233addd2a43ff1f742 (patch) | |
tree | 8971e09324be75eefaa259acdf7cfcc91d9bf280 /erts/emulator/beam/erl_alloc.h | |
parent | f083e4298d751bb564915b03f0c32114d533d086 (diff) | |
download | otp-cabfe2cdc0b8d879431f81233addd2a43ff1f742.tar.gz otp-cabfe2cdc0b8d879431f81233addd2a43ff1f742.tar.bz2 otp-cabfe2cdc0b8d879431f81233addd2a43ff1f742.zip |
Implement platform specific aligned sys_alloc and use when supported
erts_sys_aligned_alloc() is currently implemented using posix_memalign if
it exist, or using _aligned_malloc on Windows.
If erts_sys_aligned_alloc() exist allocators will create sys_alloc
carriers similar to how this was done pre-R16.
Diffstat (limited to 'erts/emulator/beam/erl_alloc.h')
-rw-r--r-- | erts/emulator/beam/erl_alloc.h | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/erts/emulator/beam/erl_alloc.h b/erts/emulator/beam/erl_alloc.h index ba5ec9c367..7168241f76 100644 --- a/erts/emulator/beam/erl_alloc.h +++ b/erts/emulator/beam/erl_alloc.h @@ -54,6 +54,16 @@ void erts_sys_alloc_init(void); void *erts_sys_alloc(ErtsAlcType_t, void *, Uint); void *erts_sys_realloc(ErtsAlcType_t, void *, void *, Uint); void erts_sys_free(ErtsAlcType_t, void *, void *); +#if ERTS_HAVE_ERTS_SYS_ALIGNED_ALLOC +/* + * Note 'alignment' must remain the same in calls to + * 'erts_sys_aligned_realloc()' and 'erts_sys_aligned_free()' + * as in the initial call to 'erts_sys_aligned_alloc()'. + */ +void *erts_sys_aligned_alloc(UWord alignment, UWord size); +void *erts_sys_aligned_realloc(UWord alignment, void *ptr, UWord size, UWord old_size); +void erts_sys_aligned_free(UWord alignment, void *ptr); +#endif Eterm erts_memory(int *, void *, void *, Eterm); Eterm erts_allocated_areas(int *, void *, void *); |