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

Subversion Repositories or1k

[/] [or1k/] [trunk/] [linux/] [uClibc/] [libc/] [inet/] [rpc/] [svc_raw.c] - Blame information for rev 1765

Details | Compare with Previous | View Log

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

powered by: WebSVN 2.1.0

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