Dokumentation zu: invocation(D)

HR Image


NAME
        driver/invocation

PURPOSE
        Description of the invocation of the gamedriver, especially of the
        command arguments. This document describes the commandline version of
        the driver only; non-commandline versions are platform specific and
        described in the related documentation.

DESCRIPTION
        The driver is invoked from the commandline as other normal programs.
        Neither the current directory nor the directory the executable is in
        need to be in any special relation the directory of the mudlib. Once
        the driver is running, it emits two streams of outputs:

            - driver-related messages on stderr; this unfortunately includes
              LPC compiler diagnostics
            - LPC runtime-related messages in the logfile
              <mudlib>/<host>.parse.log (the name can be changed).

        It is possible to start the driver without any commandline arguments as
        suitable defaults are specified at compile time. The invocation syntax
        is:

            driver [options] [<portnumber>]...

        <portnumber> the number of the port the driver shall use to accept
        connections. The maximum number of ports is determined by MAXNUMPORTS
        in the source file config.h.

        The options modify the behaviour of the gamedriver. Some of them are
        only available if a certain compile-time option was enabled (typically
        in the source file config.h). The following options are recognized:

          -P|--inherit <fd-number>
            Inherit filedescriptor <fd-number> from the parent process
            as socket to listen for connections.
            Only available if compiled with MAXNUMPORTS.

          -u|--udp <portnumber>
            Specify the <portnumber> for the UDP port, overriding the
            compiled-in default.
            Only available if compiled with CATCH_UDP_PORT.

          -D|--define <macro>[=<text>]
            Add <macro> (optionally to be expanded to <text>) to the list of
            predefined macros known by the LPC compiler.

          -E|--eval-cost <ticks>
            Set the number of <ticks> available for one evaluation thread.
            If 0, execution is unlimited.

          -M|--master <filename>
            Use <filename> for the master object.

          -m|--mudlib <pathname>
            Use <pathname> as the top directory of the mudlib.

          --debug-file <filename>
            Log all debug output in <filename> instead of
            <mudlib>/<host>.debug.log .

          --hostname <name>
            Use <name> as hostname instead of what the system says.

          --hostaddr <addr>
            Use <addr> as address of this machine, instead of what the
            system says. In particular this address will be used to open
            the driver ports.

          --no-compat
          --compat
            Select the mode (plain or compat) of the driver.
            This choice does not affect the default name of the master object.

          -d|--debug
            Generate debug output; repeat the argument for even more output:
              >= 1: log resets, clean ups, swaps, reception of urgend data,
                       telnet negotiation states.
                    check_a_lot_of_refcounts() on startup when swapping of
                       variables is disabled.
              >= 2: log all add_message()s, name lookup failures, new players.
              >= 3: progress of garbage collection
              >= 4: even more junk from garbage collection

          -c|--list-compiles
            List the name of every compiled file on stderr.

          -e|--no-preload
            Pass a non-zero argument (the number of occurrences of this option)
            to master->preload(), which usually inhibits all preloads of
            castles and other objects.

          --erq <filename>
          --erq "<filename> <erq args>"
            Use <filename> instead of 'erq' as the basename of the ERQ
            executable. If the name starts with a '/', it is take to be an
            absolute pathname, otherwise it is interpreted relative to
            <bindir>. If not specified, 'erq' is used as the executable name.

            By enclosing the argument value in quotes, it is possible to pass
            arguments (e.g. --execdir) to the erq. These arguments however must
            not contain embedded spaces.

          -N|--no-erq
            Don't start the erq demon (if it would be started at all).

          --alarm-time <seconds>
            Set the granularity of call_out() and heartbeat timing. Minimum
            value is 1.

          --heart-interval <seconds>
            Set the interval between two heartbeats. Minimum value is 1.

          --sync-heart
            All heartbeats occur at the same time (modulo granularity).

          --async-heart
            Heartbeats occur when they are due (modulo granularity).

          -t|--no-heart
            Disable heartbeats and call_outs.

          -f|--funcall <word>
            The lfun master->flag() is called with <word> as argument before
            the gamedriver accepts netword connections.

          --regexp pcre | traditional
            Select the default regexp package.

          --max-array <size>
            The maximum number of elements an array can hold.
            Set to 0, arrays of any size are allowed.

          --max-mapping <size>
            The maximum number of elements a mapping can hold.
            Set to 0, mappings of any size are allowed.

          --max-mapping-keys <size>
            The maximum number of entries a mapping can hold.
            Set to 0, mappings of any size are allowed.

          --max-callouts <size>
            The maximum number of callouts at one time.
            Set to 0, any number is allowed.

          --max-bytes <size>
            The maximum number of bytes one read_bytes()/write_bytes() call
            can handle.
            Set to 0, reads and writes of any size are allowed.

          --max-file <size>
            The maximum number of bytes one read_file()/write_file() call
            can handle.
            Set to 0, reads and writes of any size are allowed.

          --max-thread-pending <size>\n"
            The maximum number of bytes to be kept pending by the socket write
            thread.
            Set to 0, an unlimited amount of data can be kept pending.

            This option is ignored if pthreads are not used.

          --cleanup-time <time>
            The idle time in seconds for an object before the driver tries to
            clean it up. It should be substantially longer than the reset time.
            A time <= 0 disables the cleanup mechanism.

          --reset-time <time>
            The time in seconds before an object is reset. A time <= 0 disables
            the reset mechanism.

          -s <time>  | --swap-time <time>
          -s v<time> | --swap-variables <time>
            Time in seconds before an object (or its variables) are swapped
            out. A time less or equal 0 disables swapping.

          -s f<name> | --swap-file <name>
            Swap into file '<name>' instead of '<mudlib>/LP_SWAP.<host>'.

          -s c       | --swap-compact
            Reuse free space in the swap file immediately.
            Giving this option results in smaller, but also more fragmented
            swapfiles, and the swap performance may degrade.

          --hard-malloc-limit <size>
            Restrict total memory allocation to <size> bytes.
            A <size> of 0 or 'unlimited' removes any restriction.

          --soft-malloc-limit <size>
            This value gives a soft limit of the allocated memory (kind of low
            watermark). If this value is exceeded, the driver will call
            low_memory() in the master to inform the mudlib about the
            (potentially) developing low memory situation.
            A <size> of 0 or 'unlimited' removes this threshold.

          --min-malloc <size>
          --min-small-malloc <size>
            Determine the sizes for the explicit initial large resp. small
            chunk allocation. A size of 0 disables the explicit initial
            allocations.

          -r u<size> | --reserve-user <size>
          -r m<size> | --reserve-master <size>
          -r s<size> | --reserve-system <size>
            Reserve <size> amount of memory for user/master/system allocations
            to be held until main memory runs out.

          --filename-spaces
          --no-filename-spaces
            Allow/disallow the use of spaces in filenames.

          --strict-euids
          --no-strict-euids
            Enable/disable the enforced use of euids.

          --share-variables
          --init-variables
            Select how clones initialize their variables:
              - by sharing the current values of their blueprint
              - by initializing them afresh (using __INIT()).

          --pidfile <filename>\n"
            Write the pid of the driver process into <filename>.\n"

          --tls-key <pathname>
            Use <pathname> as the x509 keyfile, default is 'key.pem'.
            If relative, <pathname> is interpreted relative to <mudlib>.

          --tls-cert <pathname>
            Use <pathname> as the x509 certfile, default is 'cert.pem'.
            If relative, <pathname> is interpreted relative to <mudlib>.

          --tls-crlfile <pathname>
            Use <pathname> as the filename holding your certificate revocation
            lists. If relative, <pathname> is interpreted relative to <mudlib>.

          --tls-crldirectory <pathname>
            Use <pathname> as the directory where your certificate revocation
            lists reside. If relative, <pathname> is interpreted relative to
            <mudlib>.

          --tls-trustfile <pathname>
            Use <pathname> as the filename holding your trusted PEM
            certificates. If relative, <pathname> is interpreted relative to
            <mudlib>.

          --tls-trustdirectory <pathname>
            Use <pathname> as the directory where your trusted
            PEM certificates reside, default is '/etc/ssl/certs'.
            If relative, <pathname> is interpreted relative to <mudlib>.

          --wizlist-file <filename>
          --no-wizlist-file
            Read and save the wizlist in the named file (always interpreted
            relative the mudlib); resp. don't read or save the wizlist.

          --gcollect-outfd <filename>|<num>
            Garbage collector output (like a log of all reclaimed memory
            blocks) is sent to <filename> (or inherited fd <num>) instead of
            stderr. Only available if compiled with MALLOC_smalloc.

          --y|--yydebug
            Enable debugging of the LPC compiler.
            Only available if compiled with YYDEBUG.

          --randomdevice <filename>
            Chooses the source of the seed for the random number generator.
            Default is /dev/urandom, Fall-back if <filename> is not readable
            is the system clock. If you want to seed the PRNG with a specific
            seed, you can use a filename with the seed and give it here instead
            of using --random-seed. (Note: the last one of --randominit and
            --random-seed wins!)

          --random-seed <num>
            Seed value for the random number generator. If not given, the
            driver chooses a seed value on its own.
            This option is for debugging.

          --check-state <lvl>
            Perform a regular simplistic check of the virtual machine according
            to <lvl>:
              = 0: no check
              = 1: once per backend loop
              = 2: at various points in the backend loop
            Only available if compiled with DEBUG.

          --check-refcounts
            Every backend cycle, all refcounts in the system are checked.
            SLOW! Only available if compiled with DEBUG.

          --gobble-descriptors <num>
            <num> (more) filedescriptors are used up. You'll know when you need
            it. Only available if compiled with DEBUG.

          --check-strings
            Every backend cycle, all shared strings in the system are checked.
            SLOW! Only available if compiled with DEBUG and CHECK_STRINGS.

          -V|--version
            Print the version of the driver and exit.

          --options
            Print the version and compilation options of the driver and exit.

          -h|-?|--help
            Display a command help and exit.

          --longhelp
            Display a long command help and exit.

          --args <filename>
            The driver reads and parses the given file and treats its contents
            as if given on the commandline right where the --args option
            occurred. The file itself can again contain --args options.


DESCRIPTION
        -- Argument Parser
        The parser analyses the commandline arguments given with the driver
        invocation and distinguishes 'options', which start with a '-', from
        proper arguments. Options are further distinguished by their name and
        may take an additional value. In general, options and arguments can be
        given in any order.

        Options are recognized in two forms. In the short form the option must
        be given as a single '-' followed by a single letter. In the long
        form, options start with '--' followed by a string of arbitrary length.
        The short options are case sensitive, the long options aren't. Most
        options can be specified in both the short and long form, but that is
        not mandatory. Examples: '-r' and '--recursive'.

        If an option takes a value, it must follow the option immediately after
        a separating space or '='. Additionally, the value for a short option
        may follow the option without separator. Examples are: '-fMakefile',
        '-f Makefile', '--file=Makefile' and '--file Makefile'.

        Short options may be collated into one argument, e.g. '-rtl', but
        of these only the last may take a value.

        The option '--' marks the end of options. All following command
        arguments are considered proper arguments even if they start with a '-'
        or '--'.

        The arguments are usually taken from the commandline; but the parser
        is also able to read them from a textfiles, which can be nested. The
        content of the textfiles is broken down into words delimited by
        whitespace, which are then treated as given on the commandline at the
        place where the instruction to read the textfile stood.

        The file parser recognizes simple double-quoted strings, which must be
        contained on a single line. Additionally, the '#' character given by
        itself is a comment marker - everthing after the '#' until the end
        of the current line is ignored.

HISTORY
        LDMud 3.2.9 added the --max-thread-pending, --hostname,
            --hostaddr, --args and --random-seed options.
        LDMud 3.2.10 added the --filename-spaces options.
        LDMud 3.3.378 added --share-variables, --init-variables.
        LDMud 3.3.475/3.2.11 added --tls-key, --tls-cert.
        LDMud 3.3.672/3.2.11 added --tls-trustfile, --tls-trustdirectory.
        LDMud 3.3.677 added --max-mapping-keys.
        LDMud 3.3.714/3.2.15 added --tls-crlfile, --tls-crldirectory.
        LDMud 3.3.x added --randominit.


Start » Magierhandbuch » Docu » Driver » Invocation Letzte Generierung: 25.04.2021, 01:58
Email an: mud@wl.mud.de
Valid HTML 4.01!