NAME
ltqdput - Store data buffer in terminal data queue
SYNOPSIS
#include <zcom/zcomsys.h>
#include <zcom/zcomcall.h> /* if compiled with ANSI C (recommended) */
int32 ltqdput (zap, queue, ibuf, len)
zaddr_type *zap;
uint32 queue;
char *ibuf;
int32 len;
DESCRIPTION
Routine ltqdput stores
a data message in the data queue of the logical terminal tables.
It links the message to the end of the specified queue. Retrieval
occurs on a First-In-First-Out basis. See the man page for ltqdget on how to retrieve a message
in the data queue.
The data queue is designed to store a relatively large or
unpredictable amount of terminal data in FIFO order. When compared
to logical data storage (refer to zltstore and zltup), the data queues allow terminal
data to be stored dynamically, that is, memory is used only when
data is stored. However, it is penalized by incurring more processing
overhead during data update and retrieval. In addition, access is
restricted to a FIFO order.
The libraries libzcom_c.a and libpthread.a must be linked
into the calling program by giving the options "-lzx25
-lzcom_c -lpthread" to cc(1) or ld(1).
Threads Considerations
This routine may be called from a multi-threaded application
using the POSIX (1003.1c) kernel threads API package. This routine
has the following characteristics when called by a multi-threaded
application:
cancellation
point | Thread cancellation can occur when a
thread calls this routine. |
async-cancel
unsafe | The calling thread's cancelability
type must be PTHREAD_CANCEL_DEFERRED if cancellation is enabled. |
async-signal
unsafe | It cannot be called from a signal handler. |
fork unsafe | It cannot be called by a child process
after fork(2) but before exec(2). |
PARAMETERS
zap | ZCOM address of the terminal ZLU to store
data into. |
queue | Terminal data queue number (specifies
which data queue is to be used): |
| 0 - Sub-packet holding queue (reserved) 1
- Data holding queue A 2 - Data holding queue B 3
- Data holding queue C 4 - Data holding queue D |
ibuf | Data buffer to be stored. |
len | Length in bytes of ibuf. |
NOTES
Normally, the data queue number used should be allocated by
ZMON (see the man page for zltqueue on
how to get a data queue number). There is no queue ownership validation
within this routine; it is up to the user to make sure that the
queue usage is valid and consistent.
RETURN VALUE
Routine ltqdput returns 0 if successful. Otherwise, a non-zero error code is returned. See /opt/acc/include/zcom/zcomsys.h for
the list of ZCOM error codes and their meanings.
EXAMPLE
#include <zcom/zcomsys.h>
#include <zcom/zcomcall.h>
int32 ierr;
zaddr_type zaddr;
uint32 queue;
char ibuf[size];
int32 len;
if (ierr = ltqdput (&zaddr, queue, ibuf, len)) {
/* error return code */
}
else {
/* good return code */
}
FILES
/opt/acc/include/zcom/zcomsys.h | ZCOM subsystem general include file, containing
data types, data structures, constants, error codes, masks, etc.
Note that this must be the first include file before any other ZCOM
include files. |
/opt/acc/include/zcom/zcomcall.h | ZCOM routine function prototypes (requires
ANSI C compilation). |
SEE ALSO
ltqdget(3X), zltqueue(3X), zltstore(3X), zltup(3X)