aboutsummaryrefslogblamecommitdiffstats
path: root/erts/emulator/beam/erl_alloc.types
blob: 21941ba96e494c8018665b0150c4173efb64cacd (plain) (tree)
1
2
3
4
5

                  
 
                                                       
 










                                                                          
 














                                                                      
                                                                 
                   
                                                                       
                                    















                                                                      

                                                    



                                                                              
                                                              










                                                                      






                                                           
                                                             


                                                          
 


                                                            
                                                          
 

























                                                                              


                                                                     
                                                            


                                                                    
                                                                 
                                                                    
                                                                 
                                                                 
                                                                     



                                                                 
                                                               

                                                                             

                                                                  
                                                                     



                                                                     

                                                                       









                                                                   
                                                              










                                                                    
                                                              


                                                                           


                                                                    



                                                                 


                                                                
                                                                           
                                                              
                                                              





                                                                            


                                                                               






                                                                             
                                                                       



                                                                                
                                                                            
                                                                  



                                                                     
                                                                             

                                                                    
                                                                      


                                                                            




                                                                      
                                                                     











                                                                             
                                                                      
                                                                       
                                                                      

                                                                         

                                                                            
                                                                       
                                                                        

                                                                           
                                                                         



                                                                               
                                                                         
                                                                   
                                                                  
                                                                              
 

                                                                        
                                                                     



                                                                             
                                                             
                                                            
 

                                                                       
                                                                           

                                                                              
                                                                          
                                                                            




                                                                                
                                                                                
                                                                                 
                                                                           
                                                                                
                                                                            
 

                                                                   

                                                                         
                                                                                 
 



                                  


                                                                           
 

                                                                             

                                                                          


        


                                                                        
 



                                                                 

      


                                                                 
                                                         


      

                                                                 
                                                                      

                                                                        
                                                            
                                                               
                                                                        
                                                                  


                                                                            
 

                                                                             
                                                                    
                                                               
                                                                       
                                                            
                                                                          
                                                                               
                                                                       
                                                                      
                                                                             
                                                                            
                                                                       
                                                                        
 



                                    










                                                                                        



                                                                    

                                                                    
                                                                    
 
                                                                     






                                                                    
                                                                     


      


                                                               
                                                                              
#
# %CopyrightBegin%
#
# Copyright Ericsson AB 2003-2018. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# %CopyrightEnd%
#

#
# Rules:
# * Types, allocators, and classes can be declared.
# * Types, allocators, classes, and descriptions can only contain
#   alphanumeric characters.
# * Allocators and classes have to be declared before they are used in
#   type declarations.
# * Descriptions have only one name space (i.e. class descriptions,
#   allocator descriptions, and type descriptions are all in the same
#   name space).
# * Types, allocators, classes, and descriptions have different name
#   spaces.
# * The type, allocator, and class names INVALID are reserved and
#   cannot be used.
# * The descriptions invalid_allocator, invalid_class, and invalid_type
#   are reserved and cannot be used.
# * Declarations can be done conditionally by use of a
#     +if <boolean_variable>
#
#     +else
#
#     +endif
#   or a
#     +ifnot <boolean_variable>
#
#     +else
#
#     +endif
#   construct (else branches are optional). The boolean variable X is
#   true after a "+enable X" statement or if it has been passed as a
#   command line argument to make_alloc_types. The variable X is false
#   after a "+disable X" statement or if it has never been mentioned.
#
# IMPORTANT! Only use 7-bit ascii text in this file!


# --- Allocator declarations -------------------------------------------------
#
# If, and only if, the same thread performs *all* allocations,
# reallocations and deallocations of all memory types that are handled
# by a specific allocator (<ALLOCATOR> in type declaration), set 
# <MULTI_THREAD> for this specific allocator to false; otherwise, set
# it to true.
#
# Syntax: allocator <ALLOCATOR> <MULTI_THREAD> <DESCRIPTION>
#
#		<ALLOCATOR>	<MULTI_THREAD>	<DESCRIPTION>

allocator	SYSTEM		true		sys_alloc

allocator	TEMPORARY	true		temp_alloc
allocator	SHORT_LIVED	true		sl_alloc
allocator	STANDARD	true		std_alloc
allocator	LONG_LIVED	true		ll_alloc
allocator	EHEAP		true		eheap_alloc
allocator	ETS		true		ets_alloc
allocator	FIXED_SIZE	true		fix_alloc
allocator	LITERAL 	true		literal_alloc
+if exec_alloc
allocator	EXEC     	true	        exec_alloc
+endif

allocator	BINARY		true		binary_alloc
allocator	DRIVER		true		driver_alloc

allocator	TEST            true            test_alloc

# --- Class declarations -----------------------------------------------------
#
# Syntax: class <CLASS> <DESCRIPTION>
#
#	<CLASS>		<DESCRIPTION>

class	PROCESSES	process_data
class	ATOM		atom_data
class	CODE		code_data
class	ETS		ets_data
class	BINARIES	binary_data
class	SYSTEM		system_data

# --- Type declarations ------------------------------------------------------
# 
# Syntax: type <TYPE> <ALLOCATOR> <CLASS> <DESCRIPTION>
#
# Use ERTS_ALC_T_<TYPE> as first parameter to erts_alloc(), erts_alloc_fnf(),
# erts_realloc(), erts_realloc_fnf() or erts_free() in order to allocate,
# reallocate or deallocate a memory block of type <TYPE>.
#
# NOTE: Only use temp_alloc for memory types that *really* are *temporarily*
#	allocated. A good thumb rule: all memory allocated by temp_alloc
#       should be deallocated before the emulator starts executing Erlang
#       code again.
#
#	<TYPE>		<ALLOCATOR>	<CLASS>		<DESCRIPTION>

type	PROC		FIXED_SIZE	PROCESSES	proc
type	PORT		DRIVER		SYSTEM		port
type	ATOM		LONG_LIVED	ATOM		atom_entry
type	MODULE		LONG_LIVED	CODE		module_entry
type	REG_PROC	STANDARD	PROCESSES	reg_proc
type	PROC_LIST	SHORT_LIVED	PROCESSES	proc_list
type	SAVED_ESTACK	SHORT_LIVED	PROCESSES	saved_estack
type	FUN_ENTRY	LONG_LIVED	CODE		fun_entry
type	ATOM_TXT	LONG_LIVED	ATOM		atom_text
type 	BEAM_REGISTER	EHEAP		PROCESSES	beam_register
type	HEAP		EHEAP		PROCESSES	heap
type	OLD_HEAP	EHEAP		PROCESSES	old_heap
type	HEAP_FRAG	EHEAP		PROCESSES	heap_frag
type	TMP_HEAP	TEMPORARY	PROCESSES	tmp_heap
type	MSG_REF		FIXED_SIZE	PROCESSES	msg_ref
type	MSG		EHEAP		PROCESSES	message
type	MSGQ_CHNG	SHORT_LIVED	PROCESSES	messages_queue_change
type	ROOTSET		TEMPORARY	PROCESSES	root_set
type	LOADER_TMP	TEMPORARY	CODE		loader_tmp
type	PREPARED_CODE	SHORT_LIVED	CODE		prepared_code
type	TIMER_SERVICE	LONG_LIVED	SYSTEM		timer_service
type    LL_PTIMER	FIXED_SIZE	PROCESSES	ll_ptimer
type    HL_PTIMER	FIXED_SIZE	PROCESSES	hl_ptimer
type    BIF_TIMER	FIXED_SIZE	PROCESSES	bif_timer
type    TIMER_REQUEST	SHORT_LIVED	PROCESSES	timer_request
type    BTM_YIELD_STATE	SHORT_LIVED	PROCESSES	btm_yield_state
type	REG_TABLE	STANDARD	SYSTEM		reg_tab
type	FUN_TABLE	STANDARD	CODE		fun_tab
type	DIST_TABLE	STANDARD	SYSTEM		dist_tab
type	NODE_TABLE	STANDARD	SYSTEM		node_tab
type	ATOM_TABLE	LONG_LIVED	ATOM		atom_tab
type	EXPORT_TABLE	LONG_LIVED	CODE		export_tab
type	MODULE_TABLE	LONG_LIVED	CODE		module_tab
type	TAINT		LONG_LIVED	CODE		taint_list
type	MODULE_REFS	STANDARD	CODE		module_refs
type	NC_TMP		TEMPORARY	SYSTEM		nc_tmp
type	NC_STD		STANDARD	SYSTEM		nc_std
type	TMP		TEMPORARY	SYSTEM		tmp
type	UNDEF		SYSTEM		SYSTEM		undefined
type	DCACHE		STANDARD	SYSTEM		dcache
type	DCTRL_BUF	TEMPORARY	SYSTEM		dctrl_buf
type	DIST_ENTRY	STANDARD	SYSTEM		dist_entry
type	NODE_ENTRY	STANDARD	SYSTEM		node_entry
type	PROC_TABLE	LONG_LIVED	PROCESSES	proc_tab
type	PORT_TABLE	LONG_LIVED	SYSTEM		port_tab
type	TIMER_WHEEL	LONG_LIVED	SYSTEM		timer_wheel
type	DRV		DRIVER		SYSTEM		drv_internal
type	DRV_BINARY	BINARY		BINARIES	drv_binary
type	DRIVER		DRIVER		SYSTEM		driver
type	DRV_CMD_DATA	DRIVER		SYSTEM		driver_command_data
type	DRV_CTRL_DATA	DRIVER		SYSTEM		driver_control_data
type	DRV_CALL_DATA	DRIVER		SYSTEM		driver_call_data
type	NIF		DRIVER		SYSTEM		nif_internal
type	BINARY		BINARY		BINARIES	binary
type	NBIF_TABLE	SYSTEM		SYSTEM		nbif_tab
type	ARG_REG		STANDARD	PROCESSES	arg_reg
type	PROC_DICT	STANDARD	PROCESSES	proc_dict
type	CALLS_BUF	STANDARD	PROCESSES	calls_buf
type	BPD		STANDARD	SYSTEM		bpd
type	LINEBUF		STANDARD	SYSTEM		line_buf
type	IOQ		STANDARD	SYSTEM		io_queue
type	BITS_BUF	STANDARD	SYSTEM		bits_buf
type	ASYNC_DATA	LONG_LIVED	SYSTEM		internal_async_data
type	ESTACK		TEMPORARY	SYSTEM		estack
type	DB_TABLE	ETS		ETS		db_tab
type	DB_FIXATION	SHORT_LIVED	ETS		db_fixation
type	DB_FIX_DEL	SHORT_LIVED	ETS		fixed_del
type	DB_TABLES	LONG_LIVED	ETS		db_tabs
type    DB_NTAB_ENT	STANDARD	ETS		db_named_table_entry
type	DB_TMP		TEMPORARY	ETS		db_tmp
type	DB_MC_STK	TEMPORARY	ETS		db_mc_stack
type	DB_MS_RUN_HEAP	SHORT_LIVED	ETS		db_match_spec_run_heap
type	DB_MS_CMPL_HEAP	TEMPORARY	ETS		db_match_spec_cmpl_heap
type	DB_SEG		ETS		ETS		db_segment
type	DB_STK		ETS		ETS		db_stack
type	DB_TRANS_TAB	ETS		ETS		db_trans_tab
type	DB_SEL_LIST	ETS		ETS		db_select_list
type	DB_DMC_ERROR	ETS		ETS		db_dmc_error
type	DB_DMC_ERR_INFO	ETS		ETS		db_dmc_error_info
type	DB_TERM		ETS		ETS		db_term
type	DB_PROC_CLEANUP SHORT_LIVED	ETS		db_proc_cleanup_state
type	ETS_ALL_REQ	SHORT_LIVED	ETS		ets_all_request
type	LOGGER_DSBUF	TEMPORARY	SYSTEM		logger_dsbuf
type	TMP_DSBUF	TEMPORARY	SYSTEM		tmp_dsbuf
type	INFO_DSBUF	SYSTEM		SYSTEM		info_dsbuf
# INFO_DSBUF have to use the SYSTEM allocator; otherwise, a deadlock might occur
type	SCHDLR_SLP_INFO	LONG_LIVED	SYSTEM		scheduler_sleep_info
type	RUNQS		LONG_LIVED	SYSTEM		run_queues
type	DDLL_HANDLE	STANDARD	SYSTEM		ddll_handle
type	DDLL_ERRCODES	LONG_LIVED	SYSTEM		ddll_errcodes
type	DDLL_TMP_BUF	TEMPORARY	SYSTEM		ddll_tmp_buf
type	PORT_TASK	SHORT_LIVED	SYSTEM		port_task
type	PT_HNDL_LIST	SHORT_LIVED	SYSTEM		port_task_handle_list
type	MISC_OP_LIST	SHORT_LIVED	SYSTEM		misc_op_list
type	PORT_NAMES	SHORT_LIVED	SYSTEM		port_names
type	PORT_DATA_LOCK	DRIVER		SYSTEM		port_data_lock
type	PTAB_LIST_DEL	SHORT_LIVED	PROCESSES	ptab_list_deleted_el
type	PTAB_LIST_CNKI	SHORT_LIVED	PROCESSES	ptab_list_chunk_info
type	PTAB_LIST_PIDS	SHORT_LIVED	PROCESSES	ptab_list_pids
type	RE_TMP_BUF	TEMPORARY	SYSTEM		re_tmp_buf
type    RE_SUBJECT      SHORT_LIVED     SYSTEM          re_subject
type  	RE_HEAP 	STANDARD	SYSTEM		re_heap
type	RE_STACK 	SHORT_LIVED	SYSTEM		re_stack
type	UNICODE_BUFFER 	SHORT_LIVED	SYSTEM		unicode_buffer
type	BINARY_BUFFER 	SHORT_LIVED	SYSTEM		binary_buffer
type	PRE_ALLOC_DATA	LONG_LIVED	SYSTEM		pre_alloc_data
type	DRV_THR_OPTS	DRIVER		SYSTEM		driver_thread_opts
type	DRV_TID		DRIVER		SYSTEM		driver_tid
type	DRV_MTX		DRIVER		SYSTEM		driver_mutex
type	DRV_CND		DRIVER		SYSTEM		driver_cond
type	DRV_RWLCK	DRIVER		SYSTEM		driver_rwlock
type	DRV_TSD		DRIVER		SYSTEM		driver_tsd
type	PSD		STANDARD	PROCESSES	process_specific_data
type	PRTSD		STANDARD	SYSTEM		port_specific_data
type	CPUDATA		LONG_LIVED	SYSTEM		cpu_data
type	TMP_CPU_IDS	SHORT_LIVED	SYSTEM		tmp_cpu_ids
type	EXT_TERM_DATA	SHORT_LIVED	PROCESSES	external_term_data
type	CPU_GRPS_MAP	LONG_LIVED	SYSTEM		cpu_groups_map
type	MISC_AUX_WORK_Q	LONG_LIVED	SYSTEM		misc_aux_work_q
type	CODE_IX_LOCK_Q  SHORT_LIVED	SYSTEM		code_ix_lock_q
type    BUSY_CALLER_TAB	SHORT_LIVED	SYSTEM		busy_caller_table
type    BUSY_CALLER	SHORT_LIVED	SYSTEM		busy_caller
type	PROC_SYS_TSK	SHORT_LIVED	PROCESSES	proc_sys_task
type	PROC_SYS_TSK_QS	SHORT_LIVED	PROCESSES	proc_sys_task_queues
type    NEW_TIME_OFFSET	SHORT_LIVED	SYSTEM		new_time_offset
type	IOB_REQ		SHORT_LIVED	SYSTEM		io_bytes_request
type    TRACER_NIF      LONG_LIVED      SYSTEM          tracer_nif
type    TRACE_MSG_QUEUE SHORT_LIVED     SYSTEM          trace_message_queue
type    DIRTY_SL	SHORT_LIVED	SYSTEM		dirty_short_lived
type    MREF_NSCHED_ENT	FIXED_SIZE	SYSTEM		nsched_magic_ref_entry
type    MREF_ENT	STANDARD	SYSTEM		magic_ref_entry
type	MREF_TAB_BKTS	STANDARD	SYSTEM		magic_ref_table_buckets
type	MREF_TAB	LONG_LIVED	SYSTEM		magic_ref_table
type	MINDIRECTION	FIXED_SIZE	SYSTEM		magic_indirection
type	BINARY_FIND	SHORT_LIVED	PROCESSES	binary_find
type	CRASH_DUMP	STANDARD	SYSTEM		crash_dump
type	DIST_TRANSCODE  SHORT_LIVED	SYSTEM		dist_transcode_context

type	THR_Q_EL	STANDARD   	SYSTEM		thr_q_element
type	THR_Q_EL_SL	FIXED_SIZE	SYSTEM		sl_thr_q_element
type	MISC_AUX_WORK	SHORT_LIVED	SYSTEM		misc_aux_work
type	THR_Q		STANDARD	SYSTEM		thr_queue
type	THR_Q_SL	SHORT_LIVED	SYSTEM		short_lived_thr_queue
type	THR_Q_LL	LONG_LIVED	SYSTEM		long_lived_thr_queue

type	ASYNC		SHORT_LIVED	SYSTEM		async
type	ZLIB		STANDARD	SYSTEM		zlib

type	DRIVER_LOCK	STANDARD	SYSTEM		driver_lock
type	XPORTS_LIST	SHORT_LIVED	SYSTEM		extra_port_list
type	RUNQ_BLNS	LONG_LIVED	SYSTEM		run_queue_balancing
type	THR_PRGR_IDATA	LONG_LIVED	SYSTEM		thr_prgr_internal_data
type	THR_PRGR_DATA	LONG_LIVED	SYSTEM		thr_prgr_data
type	T_THR_PRGR_DATA	SHORT_LIVED	SYSTEM		temp_thr_prgr_data
type	RELEASE_LAREA	SHORT_LIVED	SYSTEM		release_literal_area
type	SIG_DATA	SHORT_LIVED	PROCESSES	signal_data
type	DIST_DEMONITOR	SHORT_LIVED	PROCESSES	dist_demonitor
type	CML_CLEANUP	SHORT_LIVED	SYSTEM		connection_ml_cleanup
type	ML_YIELD_STATE	SHORT_LIVED	SYSTEM		monitor_link_yield_state
type	ML_DIST		STANDARD	SYSTEM		monitor_link_dist
type	PF3_ARGS	SHORT_LIVED	PROCESSES	process_flag_3_arguments
type	SETUP_CONN_ARG	SHORT_LIVED	PROCESSES	setup_connection_argument
type    LIST_TRAP       SHORT_LIVED     PROCESSES       list_bif_trap_state
type    CONT_EXIT_TRAP  SHORT_LIVED     PROCESSES       continue_exit_trap_state
type    SEQ_YIELD_STATE SHORT_LIVED     SYSTEM          dist_seq_yield_state

type	ENVIRONMENT	SYSTEM		SYSTEM		environment

type	PERSISTENT_TERM	LONG_LIVED	CODE		persisten_term
type	PERSISTENT_LOCK_Q SHORT_LIVED	SYSTEM		persistent_lock_q
type	PERSISTENT_TERM_TMP SHORT_LIVED	SYSTEM		persistent_term_tmp_table

#
# Types used for special emulators
#

type	ETHR_STD	STANDARD	SYSTEM		ethread_standard
type	ETHR_SL		SHORT_LIVED	SYSTEM		ethread_short_lived
type	ETHR_LL		LONG_LIVED	SYSTEM		ethread_long_lived

type	SYS_MSG_Q	SHORT_LIVED	PROCESSES	system_messages_queue
type	FP_EXCEPTION	LONG_LIVED	SYSTEM		fp_exception
type	LL_MPATHS	LONG_LIVED	SYSTEM		ll_migration_paths
type	SL_MPATHS	SHORT_LIVED	SYSTEM		sl_migration_paths

+if hipe

type	HIPE_LL		LONG_LIVED	SYSTEM		hipe_long_lived
type	HIPE_SL		SHORT_LIVED	SYSTEM		hipe_short_lived
type	HIPE_STK	STANDARD	SYSTEM		hipe_nstack

+if exec_alloc
type	HIPE_EXEC	EXEC            CODE		hipe_code
+endif

+endif

+if lcnt

type    LCNT_CARRIER   STANDARD    SYSTEM  lcnt_lock_info_carrier
type    LCNT_VECTOR SHORT_LIVED SYSTEM lcnt_sample_vector

+endif

type	DEBUG	        SHORT_LIVED	SYSTEM          debugging

type	DDLL_PROCESS	STANDARD	SYSTEM		ddll_processes
type	MONITOR_EXT	STANDARD	PROCESSES	monitor_extended
type	LINK_EXT	STANDARD	PROCESSES	link_extended
type	CODE		LONG_LIVED	CODE		code
type	LITERAL		LITERAL 	CODE		literal
type	LITERAL_REF	SHORT_LIVED	CODE		literal_area_ref
type	PURGE_DATA	SHORT_LIVED	CODE		purge_data
type	DB_HEIR_DATA	STANDARD	ETS		db_heir_data
type	DB_MS_PSDO_PROC	LONG_LIVED	ETS		db_match_pseudo_proc
type	SCHDLR_DATA	LONG_LIVED	SYSTEM		scheduler_data

type	NIF_TRAP_EXPORT	STANDARD	PROCESSES	nif_trap_export_entry
type	NIF_EXP_TRACE	FIXED_SIZE	PROCESSES	nif_export_trace
type	EXPORT		LONG_LIVED	CODE		export_entry
type	MONITOR		FIXED_SIZE	PROCESSES	monitor
type	MONITOR_SUSPEND	STANDARD	PROCESSES	monitor_suspend
type	LINK		FIXED_SIZE	PROCESSES	link
type	AINFO_REQ	SHORT_LIVED	SYSTEM		alloc_info_request
type	SCHED_WTIME_REQ	SHORT_LIVED	SYSTEM		sched_wall_time_request
type	GC_INFO_REQ	SHORT_LIVED	SYSTEM		gc_info_request
type	PORT_DATA_HEAP	STANDARD	SYSTEM		port_data_heap
type    MSACC           DRIVER          SYSTEM          microstate_accounting
type	SYS_CHECK_REQ	SHORT_LIVED	SYSTEM		system_check_request
type	ATOMICS		STANDARD	SYSTEM		erl_bif_atomics
type	COUNTERS	STANDARD	SYSTEM		erl_bif_counters

#
# Types used by system specific code
#

type  	TEMP_TERM       	TEMPORARY	SYSTEM		temp_term
type  	SHORT_LIVED_TERM 	SHORT_LIVED	SYSTEM		short_lived_term
type	DRV_TAB		        LONG_LIVED	SYSTEM		drv_tab
type	DRV_EV_STATE	        LONG_LIVED	SYSTEM		driver_event_state
type	DRV_SEL_D_STATE	        FIXED_SIZE	SYSTEM		driver_select_data_state
type	NIF_SEL_D_STATE	        FIXED_SIZE	SYSTEM		enif_select_data_state
type	POLLSET		        LONG_LIVED	SYSTEM		pollset
type	POLLSET_UPDREQ	        SHORT_LIVED	SYSTEM		pollset_update_req
type	POLL_FDS	        LONG_LIVED	SYSTEM		poll_fds
type	FD_STATUS	        LONG_LIVED	SYSTEM		fd_status
type	SELECT_FDS	        LONG_LIVED	SYSTEM		select_fds

+if unix

type	SYS_READ_BUF	TEMPORARY	SYSTEM		sys_read_buf
type	FD_ENTRY_BUF	STANDARD	SYSTEM		fd_entry_buf
type	CS_PROG_PATH	LONG_LIVED	SYSTEM		cs_prog_path
type	SYS_BLOCKING	STANDARD	SYSTEM		sys_blocking

type	SYS_WRITE_BUF	TEMPORARY	SYSTEM		sys_write_buf

+endif

+if win32

type	DRV_DATA_BUF	SYSTEM		SYSTEM		drv_data_buf
type	PRELOADED	LONG_LIVED	SYSTEM		preloaded
type	WAITER_OBJ	LONG_LIVED	SYSTEM		waiter_object

+endif

# This type should only be used for test
type	TEST		TEST		SYSTEM		testing

# ----------------------------------------------------------------------------