query_limits()
==============

DEPRECATED
----------
::

SYNOPSIS
--------
::

        #include <sys/rtlimits.h>

        int *query_limits();
        int *query_limits(int default);

BESCHREIBUNG
------------
::

        Liefert ein Array mit den momentan gueltigen Laufzeit Limiten bzw.
        die standardmaessigen Laufzeit Limiten, wenn <default> wahr ist.
        Die Eintraege im gelieferten Array bedeuten:

        int[LIMIT_EVAL]:        die maximalen Eval Kosten
        int[LIMIT_ARRAY]:       die maximale Anzahl Array Eintraege
        int[LIMIT_MAPPING]:     die maximale Anzahl Mapping Eintraege
        int[LIMIT_BYTE]:        die maximale Anzahl Bytes, die mit read_bytes()
                                /write_bytes() bearbeitet werden koennen
        int[LIMIT_FILE]:        die maximale Anzahl Bytes, die mit read_file()
                                /write_file() bearbeitet werden koennen
        int[LIMIT_CALLOUTS]:    die maximale Anzahl gleichzeitiger call_out()s
        int[LIMIT_COST]:        wie die aktuellen Kosten einzurechnen sind

        Ausser fuer LIMIT_COST ein Limit von '0' (auch LIMIT_UNLIMITED)
        bedeutet 'keine Limit'.

        LIMIT_COST hat diese Bedeutungen:

          

          wert > 0: Maximal <wert> fuer als Kosten fuer die aktuelle Ausfuehrung
                    verwendet, ungeachtet wie lange sie tatsaechlich dauert.
               = 0: ist die derzeite LIMIT_EVAL groesser als die vorherige
                    LIMIT_EVAL, kostet die aktuelle Ausfuehrung nur 10
                    Ticks; andernfalls werden die gesamten Kosten angerechnet.
                < 0: (-wert)% der aktuellen Ausfuehrungskosten werden
                     angerechnet.

BEMERKUNGEN
-----------
::

        "Aktuelle Kosten" bei LIMIT_COST hat im Falle der Benutzung von
        limited() die Bedeutung von "im limited verbrauchte Kosten", steuert
        also, wieviel der im Durchlaufen der Funktion im limited()
        verbrauchten Ticks mit dem Ende von limited() angezogen wird.

BEISPIELE
---------
::

        query_limits()
        --> liefert die momentan gueltigen Laufzeit Limiten.
        query_limits(1)
        --> liefert die standardmaessigen Laufzeit Limiten.

AENDERUNGEN
-----------
::

        Eingefuehrt in LDMud 3.2.7.
        LIMIT_CALLOUTS wurde in LDMud 3.2.9 eingefuehrt.

SIEHE AUCH
----------
::

        limited(E), set_limits(E)

16.05.2007, Zesstra

