summaryrefslogtreecommitdiff
path: root/erts/emulator/beam/erl_alloc.types
blob: 7738531142b8ba246f7c8e90d1853383427078e0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
#
# %CopyrightBegin%
#
# Copyright Ericsson AB 2003-2014. 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 can
#   not be used.
# * The descriptions invalid_allocator, invalid_class, and invalid_type
#   are reserved and can not 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!

+if smp
+disable threads_no_smp
+else
+if threads
+enable threads_no_smp
+else
+disable threads_no_smp
+endif
+endif

# --- Allocator declarations -------------------------------------------------
#
# If, and only if, the same thread performes *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

+if smp

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

+if halfword
allocator	LONG_LIVED_LOW	true		ll_low_alloc
allocator	STANDARD_LOW	true		std_low_alloc
+endif

+else # Non smp build

allocator	TEMPORARY	false		temp_alloc
allocator	SHORT_LIVED	false		sl_alloc
allocator	STANDARD	false		std_alloc
allocator	LONG_LIVED	false		ll_alloc
allocator	EHEAP		false		eheap_alloc
allocator	ETS		false		ets_alloc
allocator	FIXED_SIZE	false		fix_alloc

+if halfword
allocator	LONG_LIVED_LOW	false		ll_low_alloc
allocator	STANDARD_LOW	false		std_low_alloc
+endif

+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	LINK_LH		STANDARD	PROCESSES	link_lh
type	SUSPEND_MON	STANDARD	PROCESSES	suspend_monitor
type	PEND_SUSPEND	SHORT_LIVED	PROCESSES	pending_suspend
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_ROOTS	TEMPORARY	PROCESSES	msg_roots
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    ABIF_TIMER	FIXED_SIZE	PROCESSES	accessor_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	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	TMP_DIST_BUF	TEMPORARY	SYSTEM		tmp_dist_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_SEG_TAB	ETS		ETS		db_segment_tab
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	INSTR_INFO	LONG_LIVED	SYSTEM		instr_info
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	NODES_MON	STANDARD	PROCESSES	nodes_monitor
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	ZLIB		STANDARD	SYSTEM		zlib
type	CPU_GRPS_MAP	LONG_LIVED	SYSTEM		cpu_groups_map
type	AUX_WORK_TMO	LONG_LIVED	SYSTEM		aux_work_timeouts
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	PROC_INTERVAL	LONG_LIVED	SYSTEM		process_interval
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

+if threads_no_smp
# Need thread safe allocs, but std_alloc and fix_alloc are not;
# use driver_alloc which is...
type	THR_Q_EL	DRIVER 	   	SYSTEM		thr_q_element
type	THR_Q_EL_SL	DRIVER		SYSTEM		sl_thr_q_element
type	MISC_AUX_WORK	DRIVER		SYSTEM		misc_aux_work
+else
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
+endif
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

+if smp
type	ASYNC		SHORT_LIVED	SYSTEM		async
+else
# sl_alloc is not thread safe in non smp build; therefore, we use driver_alloc
type	ASYNC		DRIVER		SYSTEM		async
+endif

+if smp
type	PORT_LOCK	STANDARD	SYSTEM		port_lock
type	DRIVER_LOCK	STANDARD	SYSTEM		driver_lock
type	XPORTS_LIST	SHORT_LIVED	SYSTEM		extra_port_list
type	PROC_LCK_WTR	LONG_LIVED	SYSTEM		proc_lock_waiter
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
+endif

#
# Types used for special emulators
#

+if threads

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

+endif

+if shared_heap

type	STACK		STANDARD	PROCESSES	stack
type	ACTIVE_PROCS	STANDARD	PROCESSES	active_procs

+endif

+if smp
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
+endif

+if hipe

# Currently most hipe code use this type.
type	HIPE		SYSTEM		SYSTEM		hipe_data

+endif

+if heap_frag_elim_test

type	SSB		SHORT_LIVED	PROCESSES	ssb

+endif


+if halfword

type	DDLL_PROCESS	STANDARD_LOW	SYSTEM		ddll_processes
type	MONITOR_LH	STANDARD_LOW	PROCESSES	monitor_lh
type	NLINK_LH	STANDARD_LOW	PROCESSES	nlink_lh
type	CODE		LONG_LIVED_LOW	CODE		code
type	DB_HEIR_DATA	STANDARD_LOW	ETS		db_heir_data
type	DB_MS_PSDO_PROC	LONG_LIVED_LOW	ETS		db_match_pseudo_proc
type	SCHDLR_DATA	LONG_LIVED_LOW	SYSTEM		scheduler_data
type  	LL_TEMP_TERM 	LONG_LIVED_LOW	SYSTEM		ll_temp_term

type	NIF_TRAP_EXPORT	STANDARD_LOW	CODE		nif_trap_export_entry
type	EXPORT		LONG_LIVED_LOW	CODE		export_entry
type	MONITOR_SH	STANDARD_LOW	PROCESSES	monitor_sh
type	NLINK_SH	STANDARD_LOW	PROCESSES	nlink_sh
type	AINFO_REQ	STANDARD_LOW	SYSTEM		alloc_info_request
type	SCHED_WTIME_REQ	STANDARD_LOW	SYSTEM		sched_wall_time_request
type	GC_INFO_REQ	STANDARD_LOW	SYSTEM		gc_info_request
type	PORT_DATA_HEAP	STANDARD_LOW	SYSTEM		port_data_heap
type	SYS_CHECK_REQ	STANDARD_LOW	SYSTEM		system_check_request

+else # "fullword"

type	DDLL_PROCESS	STANDARD	SYSTEM		ddll_processes
type	MONITOR_LH	STANDARD	PROCESSES	monitor_lh
type	NLINK_LH	STANDARD	PROCESSES	nlink_lh
type	CODE		LONG_LIVED	CODE		code
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  	LL_TEMP_TERM 	LONG_LIVED	SYSTEM		ll_temp_term

type	NIF_TRAP_EXPORT	STANDARD	CODE		nif_trap_export_entry
type	EXPORT		LONG_LIVED	CODE		export_entry
type	MONITOR_SH	FIXED_SIZE	PROCESSES	monitor_sh
type	NLINK_SH	FIXED_SIZE	PROCESSES	nlink_sh
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	SYS_CHECK_REQ	SHORT_LIVED	SYSTEM		system_check_request

+endif


#
# Types used by system specific code
#

type  	TEMP_TERM 	TEMPORARY	SYSTEM		temp_term
type	DRV_TAB		LONG_LIVED	SYSTEM		drv_tab
type	DRV_EV_STATE	LONG_LIVED	SYSTEM		driver_event_state
type	DRV_EV_D_STATE	FIXED_SIZE	SYSTEM		driver_event_data_state
type	DRV_SEL_D_STATE	FIXED_SIZE	SYSTEM		driver_select_data_state
type	FD_LIST		SHORT_LIVED	SYSTEM		fd_list
type	ACTIVE_FD_ARR	SHORT_LIVED	SYSTEM		active_fd_array
type	POLLSET		LONG_LIVED	SYSTEM		pollset
type	POLLSET_UPDREQ	SHORT_LIVED	SYSTEM		pollset_update_req
type	POLL_FDS	LONG_LIVED	SYSTEM		poll_fds
type	POLL_RES_EVS	LONG_LIVED	SYSTEM		poll_result_events
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_TAB		LONG_LIVED	SYSTEM		fd_tab
type	FD_ENTRY_BUF	STANDARD	SYSTEM		fd_entry_buf
type	CS_PROG_PATH	LONG_LIVED	SYSTEM		cs_prog_path
type	ENVIRONMENT	TEMPORARY	SYSTEM		environment
type	PUTENV_STR	SYSTEM		SYSTEM		putenv_string
type	PRT_REP_EXIT	STANDARD	SYSTEM		port_report_exit
type	SYS_BLOCKING	STANDARD	SYSTEM		sys_blocking

+if smp
type	SYS_WRITE_BUF	TEMPORARY	SYSTEM		sys_write_buf
+else
type	SYS_WRITE_BUF	BINARY		SYSTEM		sys_write_buf
+endif

+endif

+if ose

type	SYS_READ_BUF	TEMPORARY	SYSTEM		sys_read_buf
type	FD_TAB		LONG_LIVED	SYSTEM		fd_tab
type	FD_ENTRY_BUF	STANDARD	SYSTEM		fd_entry_buf
type	FD_SIG_LIST	SHORT_LIVED	SYSTEM		fd_sig_list
type    DRV_EV		STANDARD	SYSTEM		driver_event
type	CS_PROG_PATH	LONG_LIVED	SYSTEM		cs_prog_path
type	ENVIRONMENT	TEMPORARY	SYSTEM		environment
type	PUTENV_STR	SYSTEM		SYSTEM		putenv_string
type	PRT_REP_EXIT	STANDARD	SYSTEM		port_report_exit

+endif


+if win32

type	DRV_DATA_BUF	SYSTEM		SYSTEM		drv_data_buf
type	PRELOADED	LONG_LIVED	SYSTEM		preloaded
type	PUTENV_STR	SYSTEM		SYSTEM		putenv_string
type	WAITER_OBJ	LONG_LIVED	SYSTEM		waiter_object
type	ENVIRONMENT	SYSTEM		SYSTEM		environment
type	CON_VPRINTF_BUF	TEMPORARY	SYSTEM		con_vprintf_buf

+endif

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

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