X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=docs%2Fusers_guide%2Fusing.xml;h=4b3024ae9b945f6468cb3beb3dac8f72e9d3ae3c;hb=bbc583766a08678d03740354bed216e268306356;hp=60b8f3effc75eefcf6151deda88f78d1dcd6ac6c;hpb=949ce3bb4ef2654a814b3549051e439daf82b5e9;p=ghc-hetmet.git
diff --git a/docs/users_guide/using.xml b/docs/users_guide/using.xml
index 60b8f3e..4b3024a 100644
--- a/docs/users_guide/using.xml
+++ b/docs/users_guide/using.xml
@@ -841,11 +841,13 @@ ghc -c Foo.hs
of warnings which are generally likely to indicate bugs in your
program. These are:
,
- ,
+ ,
,
,
- , and
- . The following flags are
+ ,
+ , and
+ . The following
+ flags are
simple ways to select standard “packages” of warnings:
@@ -917,15 +919,16 @@ ghc -c Foo.hs
- :
+ :
-
+
+ warningsdeprecations
- Causes a warning to be emitted when a deprecated
- function or type is used. Entities can be marked as
- deprecated using a pragma, see .
+ Causes a warning to be emitted when a
+ module, function or type with a WARNING or DEPRECATED pragma
+ is used. See for more
+ details on the pragmas.This option is on by default.
@@ -945,6 +948,30 @@ ghc -c Foo.hs
+ :
+
+
+
+ Causes a warning to be emitted for foreign imports of
+ the following form:
+
+foreign import "f" f :: FunPtr t
+
+ on the grounds that it probably should be
+
+foreign import "&f" f :: FunPtr t
+
+ The first form declares that `f` is a (pure) C
+ function that takes no arguments and returns a pointer to a
+ C function with type `t`, whereas the second form declares
+ that `f` itself is a C function with type `t`. The first
+ declaration is usually a mistake, and one that is hard to
+ debug because it results in a crash, hence this
+ warning.
+
+
+
+ :
@@ -1738,7 +1765,7 @@ f "2" = 2
parallelism.
- Options to enable SMP parallelism
+ Options for SMP parallelismIn order to make use of multiple CPUs, your program must be
linked with the option (see RTS option
Use x simultaneous threads when
running the program. Normally x
- should be chosen to match the number of CPU cores on the machine.
- There is no means (currently) by which this value may vary after
- the program has started.
-
- For example, on a dual-core machine we would probably use
+ should be chosen to match the number of CPU cores on the
+ machineWhether hyperthreading cores should be counted or not is an
+ open question; please feel free to experiment and let us know what
+ results you find.. For example,
+ on a dual-core machine we would probably use
+RTS -N2 -RTS.
- Whether hyperthreading cores should be counted or not is an
- open question; please feel free to experiment and let us know what
- results you find.
+ Setting also has the effect of
+ setting (the number of OS threads to
+ use for garbage collection) to the same value.
+
+ There is no means (currently) by which this value
+ may vary after the program has started.
+
+ The following options affect the way the runtime schedules
+ threads on CPUs:
+
+
+
+
+ RTS
+ option
+
+ Disable automatic migration for load balancing.
+ Normally the runtime will automatically try to schedule
+ threads across the available CPUs to make use of idle
+ CPUs; this option disables that behaviour. It is probably
+ only of use if you are explicitly scheduling threads onto
+ CPUs with GHC.Conc.forkOnIO.
+
+
+
+
+ RTS
+ option
+
+ Migrate a thread to the current CPU when it is woken
+ up. Normally when a thread is woken up after being
+ blocked it will be scheduled on the CPU it was running on
+ last; this option allows the thread to immediately migrate
+ to the CPU that unblocked it.
+
+ The rationale for allowing this eager migration is
+ that it tends to move threads that are communicating with
+ each other onto the same CPU; however there are
+ pathalogical situations where it turns out to be a poor
+ strategy. Depending on the communication pattern in your
+ program, it may or may not be a good idea.
+
+
+