
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
