1 | USING RPC/XDR ON RTEMS |
---|
2 | ====================== |
---|
3 | For the most part, programmers using RPC/XDR routines on RTEMS |
---|
4 | can proceed as if they were to be using a POSIX/UNIX system. |
---|
5 | The only significant changes are those to start the portmapper |
---|
6 | and to allow use of RPC/XDR by multiple threads. |
---|
7 | |
---|
8 | Starting the portmapper |
---|
9 | ======================= |
---|
10 | The SUN portmapper program has been modified to run as an RTEMS |
---|
11 | task. Applications which need the portmapper can start this |
---|
12 | task by calling: |
---|
13 | int rtems_rpc_start_portmapper (int priority); |
---|
14 | The return value is an RTEMS status code. |
---|
15 | |
---|
16 | Multi-threaded operation |
---|
17 | ======================== |
---|
18 | The RPC/XDR package has been modified to allow for multiple RTEMS |
---|
19 | tasks to use RPC/XDR routines. If more than one task is to call |
---|
20 | an RPC/XDR routine, the additional tasks must call: |
---|
21 | int rtems_rpc_task_init(void); |
---|
22 | before calling any RPC/XDR routines. For example, the portmapper |
---|
23 | calls this routine since the portmapper uses RPC/XDR routines in |
---|
24 | a separate thread. |
---|
25 | The return value is an RTEMS status code. |
---|
26 | |
---|
27 | |
---|
28 | Porting Notes |
---|
29 | ============= |
---|
30 | Most of the FreeBSD rpc library ports to RTEMS with little |
---|
31 | or no modification beyond that required to provide for operation |
---|
32 | in a multitasking environment. Multitasking operation was |
---|
33 | provided by moving all `static persistence' variables into |
---|
34 | a single structure and using an RTEMS task variable to point |
---|
35 | to that structure. |
---|
36 | |
---|
37 | Some of the library, however, has not made it into the RTEMS |
---|
38 | implementation. FreeBSD source files which have been left out include: |
---|
39 | - Files which provide RPC to the AF_UNIX address family: |
---|
40 | clnt_unix.c |
---|
41 | svc_unix.c |
---|
42 | An `ifndef __rtems__' was added to clnt_generic.c because clnt_unix.c |
---|
43 | was omitted. |
---|
44 | - Files which need NIS: |
---|
45 | auth_time.c |
---|
46 | - Files which provide DES authentication: |
---|
47 | auth_des.c |
---|
48 | authdes_prot.c |
---|
49 | crypt_client.c |
---|
50 | des_crypt.c |
---|
51 | des_soft.c |
---|
52 | getpublickey.c |
---|
53 | key_call.c |
---|
54 | key_prot_xdr.c |
---|
55 | svc_auth_des.c |
---|
56 | |
---|
57 | The FreeBSD xdr source compiles and runs on RTEMS without modification. |
---|
58 | |
---|
59 | The original source was obtained from: |
---|
60 | ftp://ftp.FreeBSD.org/pub/FreeBSD/ |
---|
61 | branches/4.0-stable/src/lib/libc/rpc |
---|
62 | branches/4.0-stable/src/lib/libc/xdr |
---|
63 | branches/4.0-stable/src/include/rpc |
---|
64 | branches/4.0-stable/src/include/rpcsvc |
---|