OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [rtems/] [c/] [src/] [librpc/] [src/] [rpc/] [svc_raw.c] - Blame information for rev 1765

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 158 chris
/*
2
 * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
3
 * unrestricted use provided that this legend is included on all tape
4
 * media and as a part of the software program in whole or part.  Users
5
 * may copy or modify Sun RPC without charge, but are not authorized
6
 * to license or distribute it to anyone else except as part of a product or
7
 * program developed by the user.
8
 *
9
 * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
10
 * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
11
 * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
12
 *
13
 * Sun RPC is provided with no support and without any obligation on the
14
 * part of Sun Microsystems, Inc. to assist in its use, correction,
15
 * modification or enhancement.
16
 *
17
 * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
18
 * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
19
 * OR ANY PART THEREOF.
20
 *
21
 * In no event will Sun Microsystems, Inc. be liable for any lost revenue
22
 * or profits or other special, indirect and consequential damages, even if
23
 * Sun has been advised of the possibility of such damages.
24
 *
25
 * Sun Microsystems, Inc.
26
 * 2550 Garcia Avenue
27
 * Mountain View, California  94043
28
 */
29
 
30
#if defined(LIBC_SCCS) && !defined(lint)
31
/*static char *sccsid = "from: @(#)svc_raw.c 1.15 87/08/11 Copyr 1984 Sun Micro";*/
32
/*static char *sccsid = "from: @(#)svc_raw.c    2.1 88/07/29 4.0 RPCSRC";*/
33
static char *rcsid = "$FreeBSD: src/lib/libc/rpc/svc_raw.c,v 1.7 1999/08/28 00:00:49 peter Exp $";
34
#endif
35
 
36
/*
37
 * svc_raw.c,   This a toy for simple testing and timing.
38
 * Interface to create an rpc client and server in the same UNIX process.
39
 * This lets us similate rpc and get rpc (round trip) overhead, without
40
 * any interference from the kernal.
41
 *
42
 * Copyright (C) 1984, Sun Microsystems, Inc.
43
 */
44
 
45
#include <rpc/rpc.h>
46
#include <stdlib.h>
47
 
48
/*
49
 * This is the "network" that we will be moving data over
50
 */
51
struct svc_raw_private {
52
        char    _raw_buf[UDPMSGSIZE];
53
        SVCXPRT server;
54
        XDR     xdr_stream;
55
        char    verf_body[MAX_AUTH_BYTES];
56
};
57
#define svcraw_private ((struct svc_raw_private *)((struct rtems_rpc_task_variables *)rtems_rpc_task_variables)->svc_raw_private)
58
 
59
static bool_t           svcraw_recv();
60
static enum xprt_stat   svcraw_stat();
61
static bool_t           svcraw_getargs();
62
static bool_t           svcraw_reply();
63
static bool_t           svcraw_freeargs();
64
static void             svcraw_destroy();
65
 
66
static struct xp_ops server_ops = {
67
        svcraw_recv,
68
        svcraw_stat,
69
        svcraw_getargs,
70
        svcraw_reply,
71
        svcraw_freeargs,
72
        svcraw_destroy
73
};
74
 
75
SVCXPRT *
76
svcraw_create()
77
{
78
        register struct svc_raw_private *srp = svcraw_private;
79
 
80
        if (srp == 0) {
81
                srp = (struct svc_raw_private *)calloc(1, sizeof (*srp));
82
                if (srp == 0)
83
                        return (0);
84
        }
85
        srp->server.xp_sock = 0;
86
        srp->server.xp_port = 0;
87
        srp->server.xp_ops = &server_ops;
88
        srp->server.xp_verf.oa_base = srp->verf_body;
89
        xdrmem_create(&srp->xdr_stream, srp->_raw_buf, UDPMSGSIZE, XDR_FREE);
90
        return (&srp->server);
91
}
92
 
93
static enum xprt_stat
94
svcraw_stat()
95
{
96
 
97
        return (XPRT_IDLE);
98
}
99
 
100
static bool_t
101
svcraw_recv(xprt, msg)
102
        SVCXPRT *xprt;
103
        struct rpc_msg *msg;
104
{
105
        register struct svc_raw_private *srp = svcraw_private;
106
        register XDR *xdrs;
107
 
108
        if (srp == 0)
109
                return (0);
110
        xdrs = &srp->xdr_stream;
111
        xdrs->x_op = XDR_DECODE;
112
        XDR_SETPOS(xdrs, 0);
113
        if (! xdr_callmsg(xdrs, msg))
114
               return (FALSE);
115
        return (TRUE);
116
}
117
 
118
static bool_t
119
svcraw_reply(xprt, msg)
120
        SVCXPRT *xprt;
121
        struct rpc_msg *msg;
122
{
123
        register struct svc_raw_private *srp = svcraw_private;
124
        register XDR *xdrs;
125
 
126
        if (srp == 0)
127
                return (FALSE);
128
        xdrs = &srp->xdr_stream;
129
        xdrs->x_op = XDR_ENCODE;
130
        XDR_SETPOS(xdrs, 0);
131
        if (! xdr_replymsg(xdrs, msg))
132
               return (FALSE);
133
        (void)XDR_GETPOS(xdrs);  /* called just for overhead */
134
        return (TRUE);
135
}
136
 
137
static bool_t
138
svcraw_getargs(xprt, xdr_args, args_ptr)
139
        SVCXPRT *xprt;
140
        xdrproc_t xdr_args;
141
        caddr_t args_ptr;
142
{
143
        register struct svc_raw_private *srp = svcraw_private;
144
 
145
        if (srp == 0)
146
                return (FALSE);
147
        return ((*xdr_args)(&srp->xdr_stream, args_ptr));
148
}
149
 
150
static bool_t
151
svcraw_freeargs(xprt, xdr_args, args_ptr)
152
        SVCXPRT *xprt;
153
        xdrproc_t xdr_args;
154
        caddr_t args_ptr;
155
{
156
        register struct svc_raw_private *srp = svcraw_private;
157
        register XDR *xdrs;
158
 
159
        if (srp == 0)
160
                return (FALSE);
161
        xdrs = &srp->xdr_stream;
162
        xdrs->x_op = XDR_FREE;
163
        return ((*xdr_args)(xdrs, args_ptr));
164
}
165
 
166
static void
167
svcraw_destroy()
168
{
169
}

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.