source: rtems/cpukit/librpc/src/rpc/rtems_rpc.c @ b7cfd627

4.104.115
Last change on this file since b7cfd627 was b7cfd627, checked in by Ralf Corsepius <ralf.corsepius@…>, on 12/23/08 at 05:00:57

Add missing initializers.

  • Property mode set to 100644
File size: 2.0 KB
Line 
1/*
2 * RTEMS multi-tasking support
3 *
4 * $Id$
5 */
6
7#include <rpc/rpc.h>
8#include <rtems.h>
9#include <stdlib.h>
10
11/*
12 * RPC variables for single-thread
13 */
14static struct _rtems_rpc_task_variables rpc_default = {
15        -1,             /* svc_maxfd */
16        {{0}},          /* svc_svc_fdset */
17        NULL,           /* svc_xports */
18        0,              /* svc_xportssize */
19        0,              /* svc__svc_fdsetsize */               
20        0,              /* svc__svc_fdset */
21        NULL,           /* svc_svc_head */
22        0,              /* clnt_perror_buf */
23        0,              /* clnt_raw_private */
24        0,              /* call_rpc_private */
25        0,              /* svc_raw_private */
26
27        0,              /* svc_simple_proglst */
28        0,              /* svc_simple_pl */
29        0,              /* svc_simple_transp */
30
31        0,              /* rpcdname_default_domain */
32        0               /* svc_auths_Auths */
33};
34
35/*
36 * RPC values for initializing a new per-task set of variables
37 */
38static const struct _rtems_rpc_task_variables rpc_init = {
39        -1,             /* svc_maxfd */
40        {{0}},          /* svc_svc_fdset */
41        NULL,           /* svc_xports */
42        0,              /* svc_xportssize */
43        0,              /* svc__svc_fdsetsize */               
44        0,              /* svc__svc_fdset */
45        NULL,           /* svc_svc_head */
46        0,              /* clnt_perror_buf */
47        0,              /* clnt_raw_private */
48        0,              /* call_rpc_private */
49        0,              /* svc_raw_private */
50
51        0,              /* svc_simple_proglst */
52        0,              /* svc_simple_pl */
53        0,              /* svc_simple_transp */
54
55        0,              /* rpcdname_default_domain */
56        0               /* svc_auths_Auths */
57};
58
59/*
60 * Per-task pointer to RPC data
61 */
62struct _rtems_rpc_task_variables *rtems_rpc_task_variables = &rpc_default;
63
64/*
65 * Set up per-task RPC variables
66 */
67int rtems_rpc_task_init (void)
68{
69        rtems_status_code sc;
70        struct _rtems_rpc_task_variables *tvp;
71
72        if (rtems_rpc_task_variables == &rpc_default) {
73                tvp = malloc (sizeof *tvp);
74                if (tvp == NULL)
75                        return RTEMS_NO_MEMORY;
76                /*
77                 * FIXME: Should have destructor which cleans up
78                 * all RPC stuff:
79                 *      - Close all files
80                 *      - Go through and free linked list elements
81                 *      - Free other allocated memory (e.g. clnt_perror_buf)
82                 */
83                sc = rtems_task_variable_add (
84                        RTEMS_SELF, (void *)&rtems_rpc_task_variables, NULL);
85                if (sc != RTEMS_SUCCESSFUL) {
86                        free (tvp);
87                        return sc;
88                }
89                *tvp = rpc_init;
90                rtems_rpc_task_variables = tvp;
91        }
92        return RTEMS_SUCCESSFUL;
93}
Note: See TracBrowser for help on using the repository browser.