dlprpc(3)

NAME

DlpRPC - make remote procedure call on PalmOS device

LIBRARY

libpconn

SYNOPSIS

#include <palm.h>
#include <pconn/pconn.h>
int
DlpRPC(PConnection *pconn, uword trap,  udword  *D0,  udword
*A0, int argc, struct DLPRPC_param *argv);

DESCRIPTION

DlpRPC makes a remote procedure call on the Palm. That is,
this function requests that the Palm execute a particular system
function with certain arguments. DlpRPC then returns the (inte
ger) return value of the system call, and fills in any by-refer
ence arguments.
trap specifies the trap number of the system call to make.
D0 and A0 specify the initial values of the D0 and A0 regis
ters. After the remote procedure call, these arguments are filled
in with the new values of D0 and A0. D0 is typically used for the
return value.
argc specifies the number of arguments in argv.
argv is an array of function arguments to pass. The elements
of argv are in reverse order from the function declaration. That
is, if a system call is declared as SysFunc(a, b, c), then
argv[0] will contain a, argv[1] will contain b, and argv[2] will
contain c ( argc should, of course, be set to 3). The
DLPRPC_param structure is defined as

struct DLPRPC_param {
Bool byref;
ubyte size;
char type;
union {
ubyte bool_v;
ubyte byte_v;
uword word_v;
udword dword_v;
void *raw_v;
} data;
};
where byref is true if this argument is passed by reference,
size specifies the size of the argument (this is only required
for raw arguments), type specifies the argument type (see the
RPCP_* constants in <pconn/dlp_rpc.h> ), and data contains the
actual argument data.
This should be relatively straightforward for boolean and
integer arguments. Raw arguments deal with byte strings of arbi
trary length. The length of the data is specified with
argv[i].size. argv[i].data.raw_v must point to a buffer of suf
ficient size to hold the returned data. DlpRPC reads from and
writes to this pointer, but does not allocate or free it.

RETURN VALUE

DlpRPC returns 0 if successful, or a negative value other
wise. Note that it is quite possible for DlpRPC to succeed, and
for the remote procedure call to fail. For example, if DlpRPC is
used to read a nonexistent memory range, DlpRPC will return 0,
but D0 (which is typically used for the system call's return val
ue) will be nonzero.

SEE ALSO

libpconn(3), RDLP_ROMToken(3), RDLP_MemMove(3).
BSD Aug 16, 2001
Copyright © 2010-2025 Platon Technologies, s.r.o.           Home | Man pages | tLDP | Documents | Utilities | About
Design by styleshout