aboutsummaryrefslogtreecommitdiffstats
path: root/erts/doc
diff options
context:
space:
mode:
Diffstat (limited to 'erts/doc')
-rw-r--r--erts/doc/src/crash_dump.xml4
-rw-r--r--erts/doc/src/erl.xml76
-rw-r--r--erts/doc/src/erl_ext_fig.ps153
-rw-r--r--erts/doc/src/erl_fix_alloc.ps646
-rw-r--r--erts/doc/src/erlang.xml4
-rw-r--r--erts/doc/src/erts_alloc.xml86
-rw-r--r--erts/doc/src/escript.xml11
-rw-r--r--erts/doc/src/notes.xml78
8 files changed, 205 insertions, 853 deletions
diff --git a/erts/doc/src/crash_dump.xml b/erts/doc/src/crash_dump.xml
index b3c4671c3d..73212e6143 100644
--- a/erts/doc/src/crash_dump.xml
+++ b/erts/doc/src/crash_dump.xml
@@ -290,6 +290,10 @@
<em>Stack+heap</em>, <em>OldHeap</em>, <em>Heap unused</em>
and <em>OldHeap unused</em> do not exist. Instead this field
presents the size of the process' stack.</item>
+ <tag><em>Memory</em></tag>
+ <item>The total memory used by this process. This includes call stack,
+ heap and internal structures. Same as <seealso marker="erlang#process_info-2">erlang:process_info(Pid,memory)</seealso>.
+ </item>
<tag><em>Program counter</em></tag>
<item>The current instruction pointer. This is only interesting for
runtime system developers. The function into which the program
diff --git a/erts/doc/src/erl.xml b/erts/doc/src/erl.xml
index bb81330fec..8dca7402e8 100644
--- a/erts/doc/src/erl.xml
+++ b/erts/doc/src/erl.xml
@@ -536,15 +536,35 @@
<tag><marker id="file_name_encoding"></marker><c><![CDATA[+fnl]]></c></tag>
<item>
<p>The VM works with file names as if they are encoded using the ISO-latin-1 encoding, disallowing Unicode characters with codepoints beyond 255. This is default on operating systems that have transparent file naming, i.e. all Unixes except MacOSX.</p>
+ <p>See <seealso marker="stdlib:unicode_usage#unicode_file_names">STDLIB User's Guide</seealso> for more infomation about unicode file names.</p>
</item>
- <tag><c><![CDATA[+fnu]]></c></tag>
+ <tag><c><![CDATA[+fnu[{w|i|e}]]]></c></tag>
<item>
<p>The VM works with file names as if they are encoded using UTF-8 (or some other system specific Unicode encoding). This is the default on operating systems that enforce Unicode encoding, i.e. Windows and MacOSX.</p>
- <p>By enabling Unicode file name translation on systems where this is not default, you open up to the possibility that some file names can not be interpreted by the VM and therefore will be returned to the program as raw binaries. The option is therefore considered experimental.</p>
- </item>
- <tag><c><![CDATA[+fna]]></c></tag>
- <item>
- <p>Selection between <c>+fnl</c> and <c>+fnu</c> is done based on the current locale settings in the OS, meaning that if you have set your terminal for UTF-8 encoding, the filesystem is expected to use the same encoding for filenames (use with care).</p>
+ <p>The <c>+fnu</c> switch can be followed by <c>w</c>,
+ <c>i</c>, or <c>e</c> to control the way wrongly encoded file
+ names are to be reported. <c>w</c> means that a warning is
+ sent to the <c>error_logger</c> whenever a wrongly encoded
+ file name is "skipped" in directory listings, <c>i</c> means
+ that those wrongly encoded file names are silently ignored and
+ <c>e</c> means that the API function will return an error
+ whenever a wrongly encoded file (or directory) name is
+ encountered. <c>w</c> is the default. Note that
+ <c>file:read_link/1</c> will always return an error if the
+ link points to an invalid file name.</p>
+ <p>See <seealso marker="stdlib:unicode_usage#unicode_file_names">STDLIB User's Guide</seealso> for more infomation about unicode file names.</p>
+ </item>
+ <tag><c><![CDATA[+fna[{w|i|e}]]]></c></tag>
+ <item>
+ <p>Selection between <c>+fnl</c> and <c>+fnu</c> is done based on the current locale settings in the OS, meaning that if you have set your terminal for UTF-8 encoding, the filesystem is expected to use the same encoding for file names (use with care).</p>
+ <p>The <c>+fna</c> switch can be followed by <c>w</c>,
+ <c>i</c>, or <c>e</c>. This will have effect if the locale
+ settings cause the behavior of <c>+fnu</c> to be selected.
+ See the description of <c>+fnu</c> above. If the locale
+ settings cause the behavior of <c>+fnl</c> to be selected,
+ then <c>w</c>, <c>i</c>, or <c>e</c> will not have any
+ effect.</p>
+ <p>See <seealso marker="stdlib:unicode_usage#unicode_file_names">STDLIB User's Guide</seealso> for more infomation about unicode file names.</p>
</item>
<tag><c><![CDATA[+hms Size]]></c></tag>
<item>
@@ -571,9 +591,9 @@
</item>
<tag><c><![CDATA[+L]]></c></tag>
<item>
- <p>Don't load information about source filenames and line numbers.
+ <p>Don't load information about source file names and line numbers.
This will save some memory, but exceptions will not contain
- information about the filenames and line numbers.
+ information about the file names and line numbers.
</p>
</item>
<tag><marker id="erts_alloc"><c><![CDATA[+MFlag Value]]></c></marker></tag>
@@ -615,7 +635,7 @@
debugging.</item>
</taglist>
</item>
- <tag><marker id="+pc"/><marker id="max_processes"><c><![CDATA[+pc Range]]></c></marker></tag>
+ <tag><marker id="+pc"/><marker id="printable_character_range"><c><![CDATA[+pc Range]]></c></marker></tag>
<item>
<p>Sets the range of characters that the system will consider printable in heuristic detection of strings. This typically affects the shell, debugger and io:format functions (when ~tp is used in the format string).</p>
<p>Currently two values for the <c>Range</c> are supported:
@@ -637,10 +657,11 @@
<p>Se also <seealso marker="stdlib:io#printable_range/0">
io:printable_range/0</seealso>.</p>
</item>
- <tag><marker id="+P"/><marker id="max_processes"><c><![CDATA[+P Number]]></c></marker></tag>
+ <tag><marker id="+P"/><marker id="max_processes"><c><![CDATA[+P Number|legacy]]></c></marker></tag>
<item>
<p>Sets the maximum number of simultaneously existing processes for this
- system. Valid range for <c>Number</c> is <c>[1024-134217727]</c></p>
+ system if a <c>Number</c> is passed as value. Valid range for
+ <c>Number</c> is <c>[1024-134217727]</c></p>
<p><em>NOTE</em>: The actual maximum chosen may be much larger than
the <c>Number</c> passed. Currently the runtime system often,
but not always, chooses a value that is a power of 2. This might,
@@ -648,11 +669,19 @@
checked by calling
<seealso marker="erlang#system_info_process_limit">erlang:system_info(process_limit)</seealso>.</p>
<p>The default value is <c>262144</c></p>
+ <p>If <c>legacy</c> is passed as value, the legacy algorithm for
+ allocation of process identifiers will be used. Using the legacy
+ algorithm, identifiers will be allocated in a strictly increasing
+ fashion until largest possible identifier has been reached. Note that
+ this algorithm suffers from performance issues and can under certain
+ circumstances be extremely expensive. The legacy algoritm is deprecated,
+ and the <c>legacy</c> option is scheduled for removal in OTP-R18.</p>
</item>
- <tag><marker id="+Q"/><marker id="max_ports"><c><![CDATA[+Q Number]]></c></marker></tag>
+ <tag><marker id="+Q"/><marker id="max_ports"><c><![CDATA[+Q Number|legacy]]></c></marker></tag>
<item>
<p>Sets the maximum number of simultaneously existing ports for this
- system. Valid range for <c>Number</c> is <c>[1024-134217727]</c></p>
+ system if a Number is passed as value. Valid range for <c>Number</c>
+ is <c>[1024-134217727]</c></p>
<p><em>NOTE</em>: The actual maximum chosen may be much larger than
the actual <c>Number</c> passed. Currently the runtime system often,
but not always, chooses a value that is a power of 2. This might,
@@ -671,6 +700,13 @@
for setting the maximum number of simultaneously existing ports. This
environment variable is deprecated, and scheduled for removal in
OTP-R17, but can still be used.</p>
+ <p>If <c>legacy</c> is passed as value, the legacy algorithm for
+ allocation of port identifiers will be used. Using the legacy
+ algorithm, identifiers will be allocated in a strictly increasing
+ fashion until largest possible identifier has been reached. Note that
+ this algorithm suffers from performance issues and can under certain
+ circumstances be extremely expensive. The legacy algoritm is deprecated,
+ and the <c>legacy</c> option is scheduled for removal in OTP-R18.</p>
</item>
<tag><marker id="compat_rel"><c><![CDATA[+R ReleaseNumber]]></c></marker></tag>
<item>
@@ -1009,6 +1045,20 @@
documentation of the <seealso marker="#+sbt">+sbt</seealso> flag.
</p>
</item>
+ <tag><marker id="+swct"><c>+sws very_eager|eager|medium|lazy|very_lazy</c></marker></tag>
+ <item>
+ <p>
+ Set scheduler wake cleanup threshold. Default is <c>medium</c>.
+ This flag controls how eager schedulers should be requesting
+ wake up due to certain cleanup operations. When a lazy setting
+ is used, more outstanding cleanup operations can be left undone
+ while a scheduler is idling. When an eager setting is used,
+ schedulers will more frequently be woken, potentially increasing
+ CPU-utilization.
+ </p>
+ <p><em>NOTE:</em> This flag may be removed or changed at any time without prior notice.
+ </p>
+ </item>
<tag><marker id="+sws"><c>+sws default|legacy</c></marker></tag>
<item>
<p>
diff --git a/erts/doc/src/erl_ext_fig.ps b/erts/doc/src/erl_ext_fig.ps
deleted file mode 100644
index 2501dc3c05..0000000000
--- a/erts/doc/src/erl_ext_fig.ps
+++ /dev/null
@@ -1,153 +0,0 @@
-%!PS-Adobe-3.0 EPSF-2.0
-%%BoundingBox: 0 0 600 520
-%%Creator: mscgen 1
-%%EndComments
-0.70 0.70 scale
-0 0 moveto
-0 520 lineto
-600 520 lineto
-600 0 lineto
-closepath
-clip
-%PageTrailer
-%Page: 1 1
-/Helvetica findfont
-10 scalefont
-setfont
-0 520 translate
-/mtrx matrix def
-/ellipse
- { /endangle exch def
- /startangle exch def
- /ydia exch def
- /xdia exch def
- /y exch def
- /x exch def
- /savematrix mtrx currentmatrix def
- x y translate
- xdia 2 div ydia 2 div scale
- 0 0 1 startangle endangle arc
- savematrix setmatrix
-} def
-150 -12 moveto (Client (or Node)) dup stringwidth pop 2 div neg 0 rmoveto show
-450 -12 moveto (EPMD) dup stringwidth pop 2 div neg 0 rmoveto show
-newpath 150 -20 moveto 150 -45 lineto stroke
-newpath 450 -20 moveto 450 -45 lineto stroke
-newpath 150 -32 moveto 450 -32 lineto stroke
-newpath 450 -32 moveto 440 -38 lineto 440 -26 lineto closepath fill
-270 -30 moveto (ALIVE2_REQ) show
-newpath 150 -45 moveto 150 -70 lineto stroke
-newpath 450 -45 moveto 450 -70 lineto stroke
-[2] 0 setdash
-newpath 450 -57 moveto 150 -57 lineto stroke
-[] 0 setdash
-newpath 150 -57 moveto 160 -63 lineto 160 -51 lineto closepath fill
-267 -55 moveto (ALIVE2_RESP) show
-[2] 0 setdash
-newpath 150 -70 moveto 150 -95 lineto stroke
-[] 0 setdash
-[2] 0 setdash
-newpath 450 -70 moveto 450 -95 lineto stroke
-[] 0 setdash
-newpath 150 -95 moveto 150 -120 lineto stroke
-newpath 450 -95 moveto 450 -120 lineto stroke
-newpath 150 -107 moveto 450 -107 lineto stroke
-newpath 450 -107 moveto 440 -113 lineto 440 -101 lineto closepath fill
-253 -105 moveto (ALIVE_CLOSE_REQ) show
-[2] 0 setdash
-newpath 150 -120 moveto 150 -145 lineto stroke
-[] 0 setdash
-[2] 0 setdash
-newpath 450 -120 moveto 450 -145 lineto stroke
-[] 0 setdash
-newpath 150 -145 moveto 150 -170 lineto stroke
-newpath 450 -145 moveto 450 -170 lineto stroke
-newpath 150 -157 moveto 450 -157 lineto stroke
-newpath 450 -157 moveto 440 -163 lineto 440 -151 lineto closepath fill
-248 -155 moveto (PORT_PLEASE2_REQ) show
-newpath 150 -170 moveto 150 -195 lineto stroke
-newpath 450 -170 moveto 450 -195 lineto stroke
-[2] 0 setdash
-newpath 450 -182 moveto 150 -182 lineto stroke
-[] 0 setdash
-newpath 150 -182 moveto 160 -188 lineto 160 -176 lineto closepath fill
-267 -180 moveto (PORT2_RESP) show
-[2] 0 setdash
-newpath 150 -195 moveto 150 -220 lineto stroke
-[] 0 setdash
-[2] 0 setdash
-newpath 450 -195 moveto 450 -220 lineto stroke
-[] 0 setdash
-newpath 150 -220 moveto 150 -245 lineto stroke
-newpath 450 -220 moveto 450 -245 lineto stroke
-newpath 150 -232 moveto 450 -232 lineto stroke
-newpath 450 -232 moveto 440 -238 lineto 440 -226 lineto closepath fill
-269 -230 moveto (NAMES_REQ) show
-newpath 150 -245 moveto 150 -270 lineto stroke
-newpath 450 -245 moveto 450 -270 lineto stroke
-[2] 0 setdash
-newpath 450 -257 moveto 150 -257 lineto stroke
-[] 0 setdash
-newpath 150 -257 moveto 160 -263 lineto 160 -251 lineto closepath fill
-266 -255 moveto (NAMES_RESP) show
-[2] 0 setdash
-newpath 150 -270 moveto 150 -295 lineto stroke
-[] 0 setdash
-[2] 0 setdash
-newpath 450 -270 moveto 450 -295 lineto stroke
-[] 0 setdash
-newpath 150 -295 moveto 150 -320 lineto stroke
-newpath 450 -295 moveto 450 -320 lineto stroke
-newpath 150 -307 moveto 450 -307 lineto stroke
-newpath 450 -307 moveto 440 -313 lineto 440 -301 lineto closepath fill
-272 -305 moveto (DUMP_REQ) show
-newpath 150 -320 moveto 150 -345 lineto stroke
-newpath 450 -320 moveto 450 -345 lineto stroke
-[2] 0 setdash
-newpath 450 -332 moveto 150 -332 lineto stroke
-[] 0 setdash
-newpath 150 -332 moveto 160 -338 lineto 160 -326 lineto closepath fill
-269 -330 moveto (DUMP_RESP) show
-[2] 0 setdash
-newpath 150 -345 moveto 150 -370 lineto stroke
-[] 0 setdash
-[2] 0 setdash
-newpath 450 -345 moveto 450 -370 lineto stroke
-[] 0 setdash
-newpath 150 -370 moveto 150 -395 lineto stroke
-newpath 450 -370 moveto 450 -395 lineto stroke
-newpath 150 -382 moveto 450 -382 lineto stroke
-newpath 450 -382 moveto 440 -388 lineto 440 -376 lineto closepath fill
-277 -380 moveto (KILL_REQ) show
-newpath 150 -395 moveto 150 -420 lineto stroke
-newpath 450 -395 moveto 450 -420 lineto stroke
-[2] 0 setdash
-newpath 450 -407 moveto 150 -407 lineto stroke
-[] 0 setdash
-newpath 150 -407 moveto 160 -413 lineto 160 -401 lineto closepath fill
-274 -405 moveto (KILL_RESP) show
-[2] 0 setdash
-newpath 150 -420 moveto 150 -445 lineto stroke
-[] 0 setdash
-[2] 0 setdash
-newpath 450 -420 moveto 450 -445 lineto stroke
-[] 0 setdash
-newpath 150 -445 moveto 150 -470 lineto stroke
-newpath 450 -445 moveto 450 -470 lineto stroke
-newpath 150 -457 moveto 450 -457 lineto stroke
-newpath 450 -457 moveto 440 -463 lineto 440 -451 lineto closepath fill
-273 -455 moveto (STOP_REQ) show
-newpath 150 -470 moveto 150 -495 lineto stroke
-newpath 450 -470 moveto 450 -495 lineto stroke
-[2] 0 setdash
-newpath 450 -482 moveto 150 -482 lineto stroke
-[] 0 setdash
-newpath 150 -482 moveto 160 -488 lineto 160 -476 lineto closepath fill
-260 -480 moveto (STOP_OK_RESP) show
-newpath 150 -495 moveto 150 -520 lineto stroke
-newpath 450 -495 moveto 450 -520 lineto stroke
-[2] 0 setdash
-newpath 450 -507 moveto 150 -507 lineto stroke
-[] 0 setdash
-newpath 150 -507 moveto 160 -513 lineto 160 -501 lineto closepath fill
-250 -505 moveto (STOP_NOTOK_RESP) show
diff --git a/erts/doc/src/erl_fix_alloc.ps b/erts/doc/src/erl_fix_alloc.ps
deleted file mode 100644
index bf65d1556c..0000000000
--- a/erts/doc/src/erl_fix_alloc.ps
+++ /dev/null
@@ -1,646 +0,0 @@
-%!PS-Adobe-2.0 EPSF-2.0
-%%Title: erl_fix_alloc.fig
-%%Creator: fig2dev Version 3.1 Patchlevel 2
-%%CreationDate: Tue May 20 11:10:33 1997
-%%For: jocke@akvavit (Joakim Greben|,ETX/B/DUP)
-%Magnification: 1.00
-%%Orientation: Portrait
-%%BoundingBox: 0 0 506 462
-%%Pages: 0
-%%BeginSetup
-%%IncludeFeature: *PageSize A4
-%%EndSetup
-%%EndComments
-/MyAppDict 100 dict dup begin def
-/$F2psDict 200 dict def
-$F2psDict begin
-$F2psDict /mtrx matrix put
-/col-1 {0 setgray} bind def
-/col0 {0.000 0.000 0.000 srgb} bind def
-/col1 {0.000 0.000 1.000 srgb} bind def
-/col2 {0.000 1.000 0.000 srgb} bind def
-/col3 {0.000 1.000 1.000 srgb} bind def
-/col4 {1.000 0.000 0.000 srgb} bind def
-/col5 {1.000 0.000 1.000 srgb} bind def
-/col6 {1.000 1.000 0.000 srgb} bind def
-/col7 {1.000 1.000 1.000 srgb} bind def
-/col8 {0.000 0.000 0.560 srgb} bind def
-/col9 {0.000 0.000 0.690 srgb} bind def
-/col10 {0.000 0.000 0.820 srgb} bind def
-/col11 {0.530 0.810 1.000 srgb} bind def
-/col12 {0.000 0.560 0.000 srgb} bind def
-/col13 {0.000 0.690 0.000 srgb} bind def
-/col14 {0.000 0.820 0.000 srgb} bind def
-/col15 {0.000 0.560 0.560 srgb} bind def
-/col16 {0.000 0.690 0.690 srgb} bind def
-/col17 {0.000 0.820 0.820 srgb} bind def
-/col18 {0.560 0.000 0.000 srgb} bind def
-/col19 {0.690 0.000 0.000 srgb} bind def
-/col20 {0.820 0.000 0.000 srgb} bind def
-/col21 {0.560 0.000 0.560 srgb} bind def
-/col22 {0.690 0.000 0.690 srgb} bind def
-/col23 {0.820 0.000 0.820 srgb} bind def
-/col24 {0.500 0.190 0.000 srgb} bind def
-/col25 {0.630 0.250 0.000 srgb} bind def
-/col26 {0.750 0.380 0.000 srgb} bind def
-/col27 {1.000 0.500 0.500 srgb} bind def
-/col28 {1.000 0.630 0.630 srgb} bind def
-/col29 {1.000 0.750 0.750 srgb} bind def
-/col30 {1.000 0.880 0.880 srgb} bind def
-/col31 {1.000 0.840 0.000 srgb} bind def
-
-end
-save
--18.0 481.0 translate
-1 -1 scale
-.9 .9 scale % to make patterns same scale as in xfig
-
-% This junk string is used by the show operators
-/PATsstr 1 string def
-/PATawidthshow { % cx cy cchar rx ry string
- % Loop over each character in the string
- { % cx cy cchar rx ry char
- % Show the character
- dup % cx cy cchar rx ry char char
- PATsstr dup 0 4 -1 roll put % cx cy cchar rx ry char (char)
- false charpath % cx cy cchar rx ry char
- /clip load PATdraw
- % Move past the character (charpath modified the
- % current point)
- currentpoint % cx cy cchar rx ry char x y
- newpath
- moveto % cx cy cchar rx ry char
- % Reposition by cx,cy if the character in the string is cchar
- 3 index eq { % cx cy cchar rx ry
- 4 index 4 index rmoveto
- } if
- % Reposition all characters by rx ry
- 2 copy rmoveto % cx cy cchar rx ry
- } forall
- pop pop pop pop pop % -
- currentpoint
- newpath
- moveto
-} bind def
-/PATcg {
- 7 dict dup begin
- /lw currentlinewidth def
- /lc currentlinecap def
- /lj currentlinejoin def
- /ml currentmiterlimit def
- /ds [ currentdash ] def
- /cc [ currentrgbcolor ] def
- /cm matrix currentmatrix def
- end
-} bind def
-% PATdraw - calculates the boundaries of the object and
-% fills it with the current pattern
-/PATdraw { % proc
- save exch
- PATpcalc % proc nw nh px py
- 5 -1 roll exec % nw nh px py
- newpath
- PATfill % -
- restore
-} bind def
-% PATfill - performs the tiling for the shape
-/PATfill { % nw nh px py PATfill -
- PATDict /CurrentPattern get dup begin
- setfont
- % Set the coordinate system to Pattern Space
- PatternGState PATsg
- % Set the color for uncolored pattezns
- PaintType 2 eq { PATDict /PColor get PATsc } if
- % Create the string for showing
- 3 index string % nw nh px py str
- % Loop for each of the pattern sources
- 0 1 Multi 1 sub { % nw nh px py str source
- % Move to the starting location
- 3 index 3 index % nw nh px py str source px py
- moveto % nw nh px py str source
- % For multiple sources, set the appropriate color
- Multi 1 ne { dup PC exch get PATsc } if
- % Set the appropriate string for the source
- 0 1 7 index 1 sub { 2 index exch 2 index put } for pop
- % Loop over the number of vertical cells
- 3 index % nw nh px py str nh
- { % nw nh px py str
- currentpoint % nw nh px py str cx cy
- 2 index show % nw nh px py str cx cy
- YStep add moveto % nw nh px py str
- } repeat % nw nh px py str
- } for
- 5 { pop } repeat
- end
-} bind def
-
-% PATkshow - kshow with the current pattezn
-/PATkshow { % proc string
- exch bind % string proc
- 1 index 0 get % string proc char
- % Loop over all but the last character in the string
- 0 1 4 index length 2 sub {
- % string proc char idx
- % Find the n+1th character in the string
- 3 index exch 1 add get % string proe char char+1
- exch 2 copy % strinq proc char+1 char char+1 char
- % Now show the nth character
- PATsstr dup 0 4 -1 roll put % string proc chr+1 chr chr+1 (chr)
- false charpath % string proc char+1 char char+1
- /clip load PATdraw
- % Move past the character (charpath modified the current point)
- currentpoint newpath moveto
- % Execute the user proc (should consume char and char+1)
- mark 3 1 roll % string proc char+1 mark char char+1
- 4 index exec % string proc char+1 mark...
- cleartomark % string proc char+1
- } for
- % Now display the last character
- PATsstr dup 0 4 -1 roll put % string proc (char+1)
- false charpath % string proc
- /clip load PATdraw
- neewath
- pop pop % -
-} bind def
-% PATmp - the makepattern equivalent
-/PATmp { % patdict patmtx PATmp patinstance
- exch dup length 7 add % We will add 6 new entries plus 1 FID
- dict copy % Create a new dictionary
- begin
- % Matrix to install when painting the pattern
- TilingType PATtcalc
- /PatternGState PATcg def
- PatternGState /cm 3 -1 roll put
- % Check for multi pattern sources (Level 1 fast color patterns)
- currentdict /Multi known not { /Multi 1 def } if
- % Font dictionary definitions
- /FontType 3 def
- % Create a dummy encoding vector
- /Encoding 256 array def
- 3 string 0 1 255 {
- Encoding exch dup 3 index cvs cvn put } for pop
- /FontMatrix matrix def
- /FontBBox BBox def
- /BuildChar {
- mark 3 1 roll % mark dict char
- exch begin
- Multi 1 ne {PaintData exch get}{pop} ifelse % mark [paintdata]
- PaintType 2 eq Multi 1 ne or
- { XStep 0 FontBBox aload pop setcachedevice }
- { XStep 0 setcharwidth } ifelse
- currentdict % mark [paintdata] dict
- /PaintProc load % mark [paintdata] dict paintproc
- end
- gsave
- false PATredef exec true PATredef
- grestore
- cleartomark % -
- } bind def
- currentdict
- end % newdict
- /foo exch % /foo newlict
- definefont % newfont
-} bind def
-% PATpcalc - calculates the starting point and width/height
-% of the tile fill for the shape
-/PATpcalc { % - PATpcalc nw nh px py
- PATDict /CurrentPattern get begin
- gsave
- % Set up the coordinate system to Pattern Space
- % and lock down pattern
- PatternGState /cm get setmatrix
- BBox aload pop pop pop translate
- % Determine the bounding box of the shape
- pathbbox % llx lly urx ury
- grestore
- % Determine (nw, nh) the # of cells to paint width and height
- PatHeight div ceiling % llx lly urx qh
- 4 1 roll % qh llx lly urx
- PatWidth div ceiling % qh llx lly qw
- 4 1 roll % qw qh llx lly
- PatHeight div floor % qw qh llx ph
- 4 1 roll % ph qw qh llx
- PatWidth div floor % ph qw qh pw
- 4 1 roll % pw ph qw qh
- 2 index sub cvi abs % pw ph qs qh-ph
- exch 3 index sub cvi abs exch % pw ph nw=qw-pw nh=qh-ph
- % Determine the starting point of the pattern fill
- %(px, py)
- 4 2 roll % nw nh pw ph
- PatHeight mul % nw nh pw py
- exch % nw nh py pw
- PatWidth mul exch % nw nh px py
- end
-} bind def
-
-% Save the original routines so that we can use them later on
-/oldfill /fill load def
-/oldeofill /eofill load def
-/oldstroke /stroke load def
-/oldshow /show load def
-/oldashow /ashow load def
-/oldwidthshow /widthshow load def
-/oldawidthshow /awidthshow load def
-/oldkshow /kshow load def
-
-% These defs are necessary so that subsequent procs don't bind in
-% the originals
-/fill { oldfill } bind def
-/eofill { oldeofill } bind def
-/stroke { oldstroke } bind def
-/show { oldshow } bind def
-/ashow { oldashow } bind def
-/widthshow { oldwidthshow } bind def
-/awidthshow { oldawidthshow } bind def
-/kshow { oldkshow } bind def
-/PATredef {
- MyAppDict begin
- {
- /fill { /clip load PATdraw newpath } bind def
- /eofill { /eoclip load PATdraw newpath } bind def
- /stroke { PATstroke } bind def
- /show { 0 0 null 0 0 6 -1 roll PATawidthshow } bind def
- /ashow { 0 0 null 6 3 roll PATawidthshow }
- bind def
- /widthshow { 0 0 3 -1 roll PATawidthshow }
- bind def
- /awidthshow { PATawidthshow } bind def
- /kshow { PATkshow } bind def
- } {
- /fill { oldfill } bind def
- /eofill { oldeofill } bind def
- /stroke { oldstroke } bind def
- /show { oldshow } bind def
- /ashow { oldashow } bind def
- /widthshow { oldwidthshow } bind def
- /awidthshow { oldawidthshow } bind def
- /kshow { oldkshow } bind def
- } ifelse
- end
-} bind def
-false PATredef
-% Conditionally define setcmykcolor if not available
-/setcmykcolor where { pop } {
- /setcmykcolor {
- 1 sub 4 1 roll
- 3 {
- 3 index add neg dup 0 lt { pop 0 } if 3 1 roll
- } repeat
- setrgbcolor - pop
- } bind def
-} ifelse
-/PATsc { % colorarray
- aload length % c1 ... cn length
- dup 1 eq { pop setgray } { 3 eq { setrgbcolor } { setcmykcolor
- } ifelse } ifelse
-} bind def
-/PATsg { % dict
- begin
- lw setlinewidth
- lc setlinecap
- lj setlinejoin
- ml setmiterlimit
- ds aload pop setdash
- cc aload pop setrgbcolor
- cm setmatrix
- end
-} bind def
-
-/PATDict 3 dict def
-/PATsp {
- true PATredef
- PATDict begin
- /CurrentPattern exch def
- % If it's an uncolored pattern, save the color
- CurrentPattern /PaintType get 2 eq {
- /PColor exch def
- } if
- /CColor [ currentrgbcolor ] def
- end
-} bind def
-% PATstroke - stroke with the current pattern
-/PATstroke {
- countdictstack
- save
- mark
- {
- currentpoint strokepath moveto
- PATpcalc % proc nw nh px py
- clip newpath PATfill
- } stopped {
- (*** PATstroke Warning: Path is too complex, stroking
- with gray) =
- cleartomark
- restore
- countdictstack exch sub dup 0 gt
- { { end } repeat } { pop } ifelse
- gsave 0.5 setgray oldstroke grestore
- } { pop restore pop } ifelse
- newpath
-} bind def
-/PATtcalc { % modmtx tilingtype PATtcalc tilematrix
- % Note: tiling types 2 and 3 are not supported
- gsave
- exch concat % tilingtype
- matrix currentmatrix exch % cmtx tilingtype
- % Tiling type 1 and 3: constant spacing
- 2 ne {
- % Distort the pattern so that it occupies
- % an integral number of device pixels
- dup 4 get exch dup 5 get exch % tx ty cmtx
- XStep 0 dtransform
- round exch round exch % tx ty cmtx dx.x dx.y
- XStep div exch XStep div exch % tx ty cmtx a b
- 0 YStep dtransform
- round exch round exch % tx ty cmtx a b dy.x dy.y
- YStep div exch YStep div exch % tx ty cmtx a b c d
- 7 -3 roll astore % { a b c d tx ty }
- } if
- grestore
-} bind def
-/PATusp {
- false PATredef
- PATDict begin
- CColor PATsc
- end
-} bind def
-
-% right30
-11 dict begin
-/PaintType 1 def
-/PatternType 1 def
-/TilingType 1 def
-/BBox [0 0 1 1] def
-/XStep 1 def
-/YStep 1 def
-/PatWidth 1 def
-/PatHeight 1 def
-/Multi 2 def
-/PaintData [
- { clippath } bind
- { 32 16 true [ 32 0 0 -16 0 16 ]
- {<00030003000c000c0030003000c000c0030003000c000c00
- 30003000c000c00000030003000c000c0030003000c000c0
- 030003000c000c0030003000c000c000>}
- imagemask } bind
-] def
-/PaintProc {
- pop
- exec fill
-} def
-currentdict
-end
-/P2 exch def
-1.1111 1.1111 scale %restore scale
-
-/cp {closepath} bind def
-/ef {eofill} bind def
-/gr {grestore} bind def
-/gs {gsave} bind def
-/sa {save} bind def
-/rs {restore} bind def
-/l {lineto} bind def
-/m {moveto} bind def
-/rm {rmoveto} bind def
-/n {newpath} bind def
-/s {stroke} bind def
-/sh {show} bind def
-/slc {setlinecap} bind def
-/slj {setlinejoin} bind def
-/slw {setlinewidth} bind def
-/srgb {setrgbcolor} bind def
-/rot {rotate} bind def
-/sc {scale} bind def
-/sd {setdash} bind def
-/ff {findfont} bind def
-/sf {setfont} bind def
-/scf {scalefont} bind def
-/sw {stringwidth} bind def
-/tr {translate} bind def
-/tnt {dup dup currentrgbcolor
- 4 -2 roll dup 1 exch sub 3 -1 roll mul add
- 4 -2 roll dup 1 exch sub 3 -1 roll mul add
- 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
- bind def
-/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
- 4 -2 roll mul srgb} bind def
- /DrawSplineSection {
- /y3 exch def
- /x3 exch def
- /y2 exch def
- /x2 exch def
- /y1 exch def
- /x1 exch def
- /xa x1 x2 x1 sub 0.666667 mul add def
- /ya y1 y2 y1 sub 0.666667 mul add def
- /xb x3 x2 x3 sub 0.666667 mul add def
- /yb y3 y2 y3 sub 0.666667 mul add def
- x1 y1 lineto
- xa ya xb yb x3 y3 curveto
- } def
-
-/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
-/$F2psEnd {$F2psEnteredState restore end} def
-%%EndProlog
-
-$F2psBegin
-10 setmiterlimit
-n 0 842 m 0 0 l 595 0 l 595 842 l cp clip
- 0.06000 0.06000 sc
-7.500 slw
-% Polyline
-n 750 3600 m 750 1200 l 2325 1200 l 2325 3600 l gs col-1 s gr
-% Polyline
-n 750 1500 m 2325 1500 l gs col-1 s gr
-% Polyline
-n 750 1800 m 2325 1800 l gs col-1 s gr
-15.000 slw
-% Polyline
-n 375 2100 m 2775 2100 l gs col-1 s gr
-/Times-Roman ff 180.00 scf sf
-900 2025 m
-gs 1 -1 sc (allocated_blocks) col-1 sh gr
-/Times-Roman ff 180.00 scf sf
-1200 1725 m
-gs 1 -1 sc (free_list) col-1 sh gr
-/Times-Roman ff 180.00 scf sf
-1200 1425 m
-gs 1 -1 sc (item_size) col-1 sh gr
-7.500 slw
-% Polyline
-n 3525 1200 m 5025 1200 l 5025 1800 l 3525 1800 l cp gs col-1 s gr
-% Polyline
-n 3525 1500 m 5025 1500 l gs col-1 s gr
-/Times-Roman ff 180.00 scf sf
-4050 1425 m
-gs 1 -1 sc (next) col-1 sh gr
-/Times-Roman ff 180.00 scf sf
-4050 1725 m
-gs 1 -1 sc (block) col-1 sh gr
-% Polyline
-n 5850 1200 m 7350 1200 l 7350 1800 l 5850 1800 l cp gs col-1 s gr
-% Polyline
-n 5850 1500 m 7350 1500 l gs col-1 s gr
-/Times-Roman ff 180.00 scf sf
-6375 1425 m
-gs 1 -1 sc (next) col-1 sh gr
-/Times-Roman ff 180.00 scf sf
-6375 1725 m
-gs 1 -1 sc (block) col-1 sh gr
-15.000 slw
-% Polyline
- [100.0] 0 sd
-n 3450 5700 m 5400 5700 l gs col-1 s gr [] 0 sd
-7.500 slw
-% Polyline
-n 3600 8000 m 3600 3450 l 5175 3450 l 5175 8000 l gs col-1 s gr
-15.000 slw
-% Polyline
- [100.0] 0 sd
-n 3525 6900 m 5325 6900 l gs col-1 s gr [] 0 sd
-0.000 slw
-% Polyline
- [33.3] 0 sd
-n 3675 3525 m 5100 3525 l 5100 4425 l 3675 4425 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
-15.00 15.00 sc P2 [16 0 0 -8 245.00 235.00] PATmp PATsp ef gr PATusp [] 0 sd
-% Polyline
- [33.3] 0 sd
-n 3675 5775 m 5100 5775 l 5100 6825 l 3675 6825 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
-15.00 15.00 sc P2 [16 0 0 -8 245.00 385.00] PATmp PATsp ef gr PATusp [] 0 sd
-7.500 slw
-% Polyline
- [15 50.0] 50.0 sd
-n 3600 4725 m 5250 4725 l gs col-1 s gr [] 0 sd
-% Polyline
- [15 50.0] 50.0 sd
-n 3600 4950 m 5175 4950 l gs col-1 s gr [] 0 sd
-0.000 slw
-% Polyline
- [15 25.0] 25.0 sd
-n 6375 3750 m 6675 3750 l 6675 4050 l 6375 4050 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
-15.00 15.00 sc P2 [16 0 0 -8 425.00 250.00] PATmp PATsp ef gr PATusp [] 0 sd
-7.500 slw
-% Polyline
-gs clippath
-4305 3253 m 4275 3373 l 4245 3253 l 4245 3415 l 4305 3415 l cp clip
-n 4275 1800 m 4275 3400 l gs col-1 s gr gr
-
-% arrowhead
-n 4305 3253 m 4275 3373 l 4245 3253 l 4275 3253 l 4305 3253 l cp gs 0.00 setgray ef gr col-1 s
-15.000 slw
-% Polyline
- [100.0] 0 sd
-n 3450 4500 m 5325 4500 l gs col-1 s gr [] 0 sd
-7.500 slw
-% Polyline
-gs clippath
-6630 2778 m 6600 2898 l 6570 2778 l 6570 2940 l 6630 2940 l cp clip
-n 6600 1800 m 6600 2925 l gs col-1 s gr gr
-
-% arrowhead
-n 6630 2778 m 6600 2898 l 6570 2778 l 6600 2778 l 6630 2778 l cp gs 0.00 setgray ef gr col-1 s
-15.000 slw
-% Polyline
-gs clippath
-656 840 m 723 1078 l 552 900 l 713 1181 l 817 1121 l cp clip
-n 450 600 m 750 1125 l gs col-1 s gr gr
-
-% arrowhead
-n 656 840 m 723 1078 l 552 900 l 604 870 l 656 840 l cp gs 0.00 setgray ef gr col-1 s
-% Open spline
-gs clippath
-5627 1227 m 5749 1210 l 5650 1282 l 5800 1222 l 5778 1167 l cp clip
-7.500 slw
-n 4875.0 1350.0 m 5137.5 1350.0 l
- 5137.5 1350.0 5400.0 1350.0 5587.5 1275.0 DrawSplineSection
- 5775.0 1200.0 l gs col-1 s gr
- gr
-
-% arrowhead
-n 5627 1227 m 5749 1210 l 5650 1282 l 5639 1255 l 5627 1227 l cp gs 0.00 setgray ef gr col-1 s
-% Open spline
-gs clippath
-7877 1227 m 7999 1210 l 7900 1282 l 8050 1222 l 8028 1167 l cp clip
-n 7125.0 1350.0 m 7387.5 1350.0 l
- 7387.5 1350.0 7650.0 1350.0 7837.5 1275.0 DrawSplineSection
- 8025.0 1200.0 l gs col-1 s gr
- gr
-
-% arrowhead
-n 7877 1227 m 7999 1210 l 7900 1282 l 7889 1255 l 7877 1227 l cp gs 0.00 setgray ef gr col-1 s
-% Interp Spline
-gs clippath
-3308 4453 m 3423 4496 l 3300 4512 l 3461 4532 l 3468 4472 l cp clip
-n 2175 1650 m
- 2346.9 1637.5 2421.9 1637.5 2475 1650 curveto
- 2514.6 1659.3 2593.0 1702.0 2625 1725 curveto
- 2665.4 1754.1 2753.1 1822.2 2775 1875 curveto
- 2790.5 1912.4 2775.0 1990.8 2775 2025 curveto
- 2775.0 2537.6 2542.8 3714.4 2775 4275 curveto
- 2785.9 4301.4 2829.8 4335.4 2850 4350 curveto
- 2882.0 4373.0 2962.7 4412.9 3000 4425 curveto
- 3076.1 4449.8 3188.6 4468.5 3450 4500 curveto
- gs col-1 s gr
- gr
-
-% arrowhead
-n 3308 4453 m 3423 4496 l 3300 4512 l 3304 4483 l 3308 4453 l cp gs 0.00 setgray ef gr col-1 s
-% Interp Spline
-gs clippath
-5325 6973 m 5201 6969 l 5312 6914 l 5154 6949 l 5167 7007 l cp clip
-n 5100 4575 m
- 5270.9 4558.6 5345.9 4558.6 5400 4575 curveto
- 5465.1 4594.7 5582.7 4669.6 5625 4725 curveto
- 5662.1 4773.6 5691.1 4895.0 5700 4950 curveto
- 5764.9 5350.0 5796.1 6267.8 5700 6675 curveto
- 5690.7 6714.6 5655.4 6794.6 5625 6825 curveto
- 5594.6 6855.4 5511.4 6886.6 5475 6900 curveto
- 5424.7 6918.6 5349.7 6937.4 5175 6975 curveto
- gs col-1 s gr
- gr
-
-% arrowhead
-n 5325 6973 m 5201 6969 l 5312 6914 l 5319 6944 l 5325 6973 l cp gs 0.00 setgray ef gr col-1 s
-% Interp Spline
-gs clippath
-3300 1202 m 3423 1205 l 3313 1261 l 3471 1226 l 3458 1168 l cp clip
-n 2250 1950 m
- 2378.9 1959.4 2435.2 1959.4 2475 1950 curveto
- 2514.6 1940.7 2593.0 1898.0 2625 1875 curveto
- 2665.4 1845.9 2745.9 1765.4 2775 1725 curveto
- 2821.1 1661.1 2878.9 1488.9 2925 1425 curveto
- 2939.6 1404.8 2979.8 1364.6 3000 1350 curveto
- 3032.0 1327.0 3113.7 1288.5 3150 1275 curveto
- 3200.3 1256.4 3275.3 1237.7 3450 1200 curveto
- gs col-1 s gr
- gr
-
-% arrowhead
-n 3300 1202 m 3423 1205 l 3313 1261 l 3306 1231 l 3300 1202 l cp gs 0.00 setgray ef gr col-1 s
-/Times-Roman ff 180.00 scf sf
-3975 4650 m
-gs 1 -1 sc (next_free) col-1 sh gr
-/Times-Roman ff 180.00 scf sf
-4050 4875 m
-gs 1 -1 sc (magic) col-1 sh gr
-/Times-Bold ff 210.00 scf sf
-6825 3975 m
-gs 1 -1 sc (= allocated memory) col-1 sh gr
-/Helvetica-Bold ff 180.00 scf sf
-3675 1125 m
-gs 1 -1 sc (AllocatedBlock) col-1 sh gr
-/Helvetica-Bold ff 180.00 scf sf
-1575 1125 m
-gs 1 -1 sc (FixItem) col-1 sh gr
-/Helvetica-Bold ff 180.00 scf sf
-2400 4650 m
-gs 1 -1 sc (FreeHeader) col-1 sh gr
-/Times-Bold ff 180.00 scf sf
-5250 3600 m
-gs 1 -1 sc 270.0 rot (item_size) col-1 sh gr
-/Times-Bold ff 270.00 scf sf
-300 525 m
-gs 1 -1 sc (fix_array) col-1 sh gr
-$F2psEnd
-rs
-end
diff --git a/erts/doc/src/erlang.xml b/erts/doc/src/erlang.xml
index 06fefa8efb..7dc59ea954 100644
--- a/erts/doc/src/erlang.xml
+++ b/erts/doc/src/erlang.xml
@@ -4477,6 +4477,7 @@ true</pre>
</func>
<func>
<name name="spawn_opt" arity="2"/>
+ <type name="priority_level" />
<fsummary>Create a new process with a fun as entry point</fsummary>
<desc>
<p>Returns the pid of a new process started by the application
@@ -4490,6 +4491,7 @@ true</pre>
</func>
<func>
<name name="spawn_opt" arity="3"/>
+ <type name="priority_level" />
<fsummary>Create a new process with a fun as entry point on a given node</fsummary>
<desc>
<p>Returns the pid of a new process started by the application
@@ -4501,6 +4503,7 @@ true</pre>
</func>
<func>
<name name="spawn_opt" arity="4"/>
+ <type name="priority_level" />
<fsummary>Create a new process with a function as entry point</fsummary>
<desc>
<p>Works exactly like
@@ -4602,6 +4605,7 @@ true</pre>
</func>
<func>
<name name="spawn_opt" arity="5"/>
+ <type name="priority_level" />
<fsummary>Create a new process with a function as entry point on a given node</fsummary>
<desc>
<p>Returns the pid of a new process started by the application
diff --git a/erts/doc/src/erts_alloc.xml b/erts/doc/src/erts_alloc.xml
index c73cdfd290..2ffb55c6ab 100644
--- a/erts/doc/src/erts_alloc.xml
+++ b/erts/doc/src/erts_alloc.xml
@@ -75,10 +75,6 @@
segments are allocated, cached segments are used if possible
instead of creating new segments. This in order to reduce
the number of system calls made.</item>
- <tag><c>sbmbc_alloc</c></tag>
- <item>Allocator used by other allocators for allocation of carriers
- where only small blocks are placed. Currently this allocator is
- disabled by default.</item>
</taglist>
<p><c>sys_alloc</c> is always enabled and
cannot be disabled. <c>mseg_alloc</c> is always enabled if it is
@@ -86,9 +82,7 @@
allocators can be <seealso marker="#M_e">enabled or disabled</seealso>.
By default all allocators are enabled.
When an allocator is disabled, <c>sys_alloc</c> is used instead of
- the disabled allocator. <c>sbmbc_alloc</c> is an exception. If
- <c>sbmbc_alloc</c> is disabled, other allocators will not handle
- small blocks in separate carriers.</p>
+ the disabled allocator.</p>
<p>The main idea with the <c>erts_alloc</c> library is to separate
memory blocks that are used differently into different memory
areas, and by this achieving less memory fragmentation. By
@@ -106,20 +100,15 @@
following does <em>not</em> apply to them.</p>
<p>An allocator manages multiple areas, called carriers, in which
memory blocks are placed. A carrier is either placed in a
- separate memory segment (allocated via <c>mseg_alloc</c>), in
- the heap segment (allocated via <c>sys_alloc</c>), or inside
- another carrier (in case it is a carrier created by
- <c>sbmbc_alloc</c>). Multiblock
+ separate memory segment (allocated via <c>mseg_alloc</c>), or in
+ the heap segment (allocated via <c>sys_alloc</c>). Multiblock
carriers are used for storage of several blocks. Singleblock
carriers are used for storage of one block. Blocks that are
larger than the value of the singleblock carrier threshold
(<seealso marker="#M_sbct">sbct</seealso>) parameter are placed
in singleblock carriers. Blocks that are smaller than the value
of the <c>sbct</c> parameter are placed in multiblock
- carriers. Blocks that are smaller than the small block multiblock
- carrier threshold (<seealso marker="#M_sbmbct">sbmbct</seealso>)
- will be placed in multiblock carriers only used for small blocks.
- Normally an allocator creates a "main multiblock
+ carriers. Normally an allocator creates a "main multiblock
carrier". Main multiblock carriers are never deallocated. The
size of the main multiblock carrier is determined by the value
of the <seealso marker="#M_mmbcs">mmbcs</seealso> parameter.</p>
@@ -140,9 +129,7 @@
<c>sbct</c> parameter should be larger than the value of the
<c>lmbcs</c> parameter, the allocator may have to create
multiblock carriers that are larger than the value of the
- <c>lmbcs</c> parameter, though. The size of multiblock carriers
- for small blocks is determined by the small block multiblock
- carrier size (<seealso marker="#M_sbmbcs">sbmbcs</seealso>).
+ <c>lmbcs</c> parameter, though.
Singleblock carriers allocated via <c>mseg_alloc</c> are sized
to whole pages.</p>
<p>Sizes of carriers allocated via <c>sys_alloc</c> are
@@ -183,6 +170,15 @@
used. The time complexity is proportional to log N, where
N is the number of free blocks.</p>
</item>
+ <tag>Address order first fit carrier address order best fit</tag>
+ <item>
+ <p>Strategy: Find the <em>carrier</em> with the lowest address that
+ can satisfy the requested block size, then find a block within
+ that carrier using the "adress order best fit" strategy.</p>
+ <p>Implementation: Balanced binary search trees are
+ used. The time complexity is proportional to log N, where
+ N is the number of free blocks.</p>
+ </item>
<tag>Good fit</tag>
<item>
<p>Strategy: Try to find the best fit, but settle for the best fit
@@ -219,11 +215,6 @@
but can only satisfy a limited amount of requests.</p>
</section>
- <note><p>
- Currently only allocators using the best fit and the address order
- best fit strategies are able to use "small block multi block carriers".
- </p></note>
-
<section>
<marker id="flags"></marker>
<title>System Flags Effecting erts_alloc</title>
@@ -245,7 +236,6 @@
the currently present allocators:</p>
<list type="bulleted">
<item><c>B: binary_alloc</c></item>
- <item><c>C: sbmbc_alloc</c></item>
<item><c>D: std_alloc</c></item>
<item><c>E: ets_alloc</c></item>
<item><c>F: fix_alloc</c></item>
@@ -319,10 +309,42 @@
subsystem identifier, only the specific allocator identified will be
effected:</p>
<taglist>
- <tag><marker id="M_as"><c><![CDATA[+M<S>as bf|aobf|aoff|gf|af]]></c></marker></tag>
+ <tag><marker id="M_acul"><c><![CDATA[+M<S>acul <utilization>|de]]></c></marker></tag>
+ <item>
+ Abandon carrier utilization limit. A valid
+ <c><![CDATA[<utilization>]]></c> is an integer in the range
+ <c>[0, 100]</c> representing utilization in percent. When a
+ utilization value larger than zero is used, allocator instances
+ are allowed to abandon multiblock carriers. Currently the default
+ is zero. If <c>de</c> (default enabled) is passed instead of a
+ <c><![CDATA[<utilization>]]></c>, a recomended non zero utilization
+ value will be used. The actual value chosen depend on allocator
+ type and may be changed between ERTS versions. Carriers will be
+ abandoned when memory utilization in the allocator instance falls
+ below the utilization value used. Once a carrier has been abandoned,
+ no new allocations will be made in it. When an allocator instance
+ gets an increased multiblock carrier need, it will first try to
+ fetch an abandoned carrier from an allocator instances of the same
+ allocator type. If no abandoned carrier could be fetched, it will
+ create a new empty carrier. When an abandoned carrier has been
+ fetched it will function as an ordinary carrier. This feature has
+ special requirements on the
+ <seealso marker="#M_as">allocation strategy</seealso> used. Currently
+ only the <c>aoff</c> and the <c>aoffcaobf</c> strategies support
+ abandoned carriers. This feature also requires
+ <seealso marker="#M_t">multiple thread specific instances</seealso>
+ to be enabled. When enabling this feature, multiple thread specific
+ instances will be enabled if not already enabled, and the
+ <c>aoffcaobf</c> strategy will be enabled if current strategy does not
+ support abandoned carriers. This feature can be enabled on all
+ allocators based on the <c>alloc_util</c> framework with the
+ exception of <c>temp_alloc</c> (which would be pointless).
+ </item>
+ <tag><marker id="M_as"><c><![CDATA[+M<S>as bf|aobf|aoff|aoffcaobf|gf|af]]></c></marker></tag>
<item>
Allocation strategy. Valid strategies are <c>bf</c> (best fit),
<c>aobf</c> (address order best fit), <c>aoff</c> (address order first fit),
+ <c>aoffcaobf</c> (address order first fit carrier address order best fit),
<c>gf</c> (good fit), and <c>af</c> (a fit). See
<seealso marker="#strategy">the description of allocation strategies</seealso> in "the <c>alloc_util</c> framework" section.</item>
<tag><marker id="M_asbcst"><c><![CDATA[+M<S>asbcst <size>]]></c></marker></tag>
@@ -416,20 +438,6 @@
smaller than this threshold will be placed in multiblock
carriers. On 32-bit Unix style OS this threshold can not be set higher
than 8 megabytes.</item>
- <tag><marker id="M_sbmbcs"><c><![CDATA[+M<S>sbmbcs <size>]]></c></marker></tag>
- <item>
- Small block multiblock carrier size (in bytes). Memory blocks smaller
- than the small block multiblock carrier threshold
- (<seealso marker="#M_sbmbct">sbmbct</seealso>) will be placed in
- multiblock carriers used for small blocks only. This parameter
- determines the size of such carriers.
- </item>
- <tag><marker id="M_sbmbct"><c><![CDATA[+M<S>sbmbct <size>]]></c></marker></tag>
- <item>
- Small block multiblock carrier threshold (in bytes). Memory blocks
- smaller than this threshold will be placed in multiblock carriers
- used for small blocks only.
- </item>
<tag><marker id="M_smbcs"><c><![CDATA[+M<S>smbcs <size>]]></c></marker></tag>
<item>
Smallest (<c>mseg_alloc</c>) multiblock carrier size (in
diff --git a/erts/doc/src/escript.xml b/erts/doc/src/escript.xml
index 66e904f64f..9e2a87dde6 100644
--- a/erts/doc/src/escript.xml
+++ b/erts/doc/src/escript.xml
@@ -4,7 +4,7 @@
<comref>
<header>
<copyright>
- <year>2007</year><year>2011</year>
+ <year>2007</year><year>2013</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
@@ -85,6 +85,11 @@ $ <input>escript factorial 5</input> </pre>
enter the major mode for editing Erlang source files. If the
directive is present it must be located on the second
line.</p>
+
+ <p>If there is a comment selecting the <seealso
+ marker="stdlib:epp#encoding">encoding</seealso> it can be
+ located on the second line.</p>
+
<p>On the third line (or second line depending on the presence
of the Emacs directive), it is possible to give arguments to
the emulator, such as </p>
@@ -133,7 +138,9 @@ halt(1).</pre>
<pre>
-include_lib("kernel/include/file.hrl").</pre>
<p>to include the record definitions for the records used by the
- <c>file:read_link_info/1</c> function.</p>
+ <c>file:read_link_info/1</c> function. You can also select
+ encoding here, but if there is a valid encoding comment on
+ the second line it takes precedence.</p>
<p>The script will be checked for syntactic and semantic
correctness before being run. If there are warnings (such as
diff --git a/erts/doc/src/notes.xml b/erts/doc/src/notes.xml
index 7fc61517a8..3a2c644ff7 100644
--- a/erts/doc/src/notes.xml
+++ b/erts/doc/src/notes.xml
@@ -30,6 +30,84 @@
</header>
<p>This document describes the changes made to the ERTS application.</p>
+<section><title>Erts 5.10.1.2</title>
+
+ <section><title>Fixed Bugs and Malfunctions</title>
+ <list>
+ <item>
+ <p>
+ A bug in the implementation of offline schedulers has
+ been fixed. The bug was introduced in OTP-R16A/ERTS-5.10,
+ and caused work-stealing between schedulers to fail. This
+ in turn, caused work to accumulate in some run-queues.
+ The bug was only triggered when there were offline
+ schedulers in the system, i.e., when the amount of online
+ schedulers was less than the total amount of schedulers.
+ The effect of the bug got more severe the larger amount
+ of offline schedulers the system had.</p>
+ <p>
+ Own Id: OTP-11022 Aux Id: OTP-9892 </p>
+ </item>
+ </list>
+ </section>
+
+</section>
+
+<section><title>Erts 5.10.1.1</title>
+
+ <section><title>Fixed Bugs and Malfunctions</title>
+ <list>
+ <item>
+ <p>
+ The BIF <seealso
+ marker="erlang#is_process_alive/1"><c>is_process_alive/1</c></seealso>
+ could prematurely return <c>false</c> while the process
+ being inspected was terminating. This bug was introduced
+ in ERTS-5.10.</p>
+ <p>
+ Own Id: OTP-10926</p>
+ </item>
+ <item>
+ <p>Fix a problem in <c>erlang:delete_element/2</c> where
+ the call could corrupt one word of stack if the heap and
+ stack met during call.</p>
+ <p>
+ Own Id: OTP-10932</p>
+ </item>
+ <item>
+ <p>
+ The <seealso
+ marker="erl#+sws"><c>+sws&lt;value&gt;</c></seealso> and
+ <seealso
+ marker="erl#+swt"><c>+swt&lt;value&gt;</c></seealso>
+ system flags failed if no white space were passed between
+ the parameter and value parts of the flags. Upon failure,
+ the runtime system refused to start.</p>
+ <p>
+ Own Id: OTP-11000</p>
+ </item>
+ </list>
+ </section>
+
+
+ <section><title>Improvements and New Features</title>
+ <list>
+ <item>
+ <p>
+ Scheduler threads will now by default be less eager
+ requesting wakeup due to certain cleanup operations. This
+ can also be controlled using the <seealso
+ marker="erl#+swct"><c>+swct</c></seealso> command line
+ argument of <seealso
+ marker="erl"><c>erl(1)</c></seealso>.</p>
+ <p>
+ Own Id: OTP-10994</p>
+ </item>
+ </list>
+ </section>
+
+</section>
+
<section><title>Erts 5.10.1</title>
<section><title>Fixed Bugs and Malfunctions</title>