GESCHUETZT
SYNOPSIS
        int send_erq(int request, string|int *data, closure callback);

BESCHREIBUNG
        Eine Anfrage vom Typ <request> (standardmaessig 0) wird mit Inhalt
        <data> word an den ERQ gesandt. Wenn <callback> angegeben ist,
        wird diese Closure aufgerufen, wenn eine Antwort vom ERQ eintrifft
        (ein Status Code), vorausgesetzt die Antwort enthaelt ausreichend
        Daten, um damit zu arbeiten:

            void <closure>(int *response_data, int len);

        <data> kann entweder ein String oder ein Array von Integers sein,
        wobei im zweiten Fall die Zahlen als Zeichen interpretiert werden.
        Die unterschiedlichen Anfragen sind in /sys/erq.h definiert.

        Die Funktion liefert 0 zurueck, wenn das Senden fehlgeschlagen ist,
        etwas anderes sost.

        Die Funktion verursacht eine Schutzverletzung "erq".

SIEHE AUCH
        attach_erq_demon(E), erq(C)
