86 struct svc_callout *sc_next;
87 rpcprog_t sc_prog;
88 rpcvers_t sc_vers;
89 char *sc_netid;
90 void (*sc_dispatch)();
91 } *svc_head;
92 extern rwlock_t svc_lock;
93
94 static struct svc_callout *svc_find();
95 int _svc_prog_dispatch();
96 void svc_getreq_common();
97 char *strdup();
98
99 extern mutex_t svc_door_mutex;
100 extern cond_t svc_door_waitcv;
101 extern int svc_ndoorfds;
102 extern SVCXPRT_LIST *_svc_xprtlist;
103 extern mutex_t xprtlist_lock;
104 extern void __svc_rm_from_xlist();
105
106 extern fd_set _new_svc_fdset;
107
108 /*
109 * If the allocated array of reactor is too small, this value is used as a
110 * margin. This reduces the number of allocations.
111 */
112 #define USER_FD_INCREMENT 5
113
114 static void add_pollfd(int fd, short events);
115 static void remove_pollfd(int fd);
116 static void __svc_remove_input_of_fd(int fd);
117
118 /*
119 * Data used to handle reactor:
120 * - one file descriptor we listen to,
121 * - one callback we call if the fd pops,
122 * - and a cookie passed as a parameter to the callback.
123 *
124 * The structure is an array indexed on the file descriptor. Each entry is
125 * pointing to the first element of a double-linked list of callback.
126 * only one callback may be associated to a couple (fd, event).
|
86 struct svc_callout *sc_next;
87 rpcprog_t sc_prog;
88 rpcvers_t sc_vers;
89 char *sc_netid;
90 void (*sc_dispatch)();
91 } *svc_head;
92 extern rwlock_t svc_lock;
93
94 static struct svc_callout *svc_find();
95 int _svc_prog_dispatch();
96 void svc_getreq_common();
97 char *strdup();
98
99 extern mutex_t svc_door_mutex;
100 extern cond_t svc_door_waitcv;
101 extern int svc_ndoorfds;
102 extern SVCXPRT_LIST *_svc_xprtlist;
103 extern mutex_t xprtlist_lock;
104 extern void __svc_rm_from_xlist();
105
106 #if !defined(_LP64)
107 extern fd_set _new_svc_fdset;
108 #endif
109
110 /*
111 * If the allocated array of reactor is too small, this value is used as a
112 * margin. This reduces the number of allocations.
113 */
114 #define USER_FD_INCREMENT 5
115
116 static void add_pollfd(int fd, short events);
117 static void remove_pollfd(int fd);
118 static void __svc_remove_input_of_fd(int fd);
119
120 /*
121 * Data used to handle reactor:
122 * - one file descriptor we listen to,
123 * - one callback we call if the fd pops,
124 * - and a cookie passed as a parameter to the callback.
125 *
126 * The structure is an array indexed on the file descriptor. Each entry is
127 * pointing to the first element of a double-linked list of callback.
128 * only one callback may be associated to a couple (fd, event).
|