void rpc_init(char *name, int prog, int vers,
void (*dispatch)(struct svc_req *, SVCXPRT *),
int defport);
-void rpc_svcrun(void);
void rpc_dispatch(struct svc_req *rq, SVCXPRT *xprt,
struct rpc_dtable *dtable, int nvers,
void *argp, void *resp);
exit (2);
}
}
-
-#if 0
-/*
- * This is our replacement for svc_run. It turns off some signals while
- * executing the server procedures to avoid nasty race conditions.
- */
-void
-rpc_svcrun(fd_set *morefds, void (*func)(int fd))
-{
- sigset_t block, current;
- fd_set readfds;
-
- for (;;) {
- readfds = svc_fdset;
- if (morefds) {
- int i;
-
- /* most efficient */
- for (i = 0; i < FD_SETSIZE; i++)
- if (FD_ISSET(i, morefds))
- FD_SET(i, &readfs);
- }
- switch (select(FD_SETSIZE, &readfds, NULL, NULL, NULL)) {
- case -1:
- if (errno == EINTR)
- continue;
- xlog(L_ERROR, "svc_run: - select failed");
- break;
- case 0:
- continue;
- default:
- if (morefds) {
- int i;
-
- /* most efficient */
- for (i = 0; i < FD_SETSIZE; i++)
- if (FD_ISSET(i, morefds) &&
- FD_ISSET(i, &readfds))
- func(i);
- }
- sigemptyset(&block);
- sigaddset(&block, SIGALRM);
- sigaddset(&block, SIGVTALRM);
- sigaddset(&block, SIGIO);
- sigprocmask(SIG_BLOCK, &block, ¤t);
- svc_getreqset(&readfds);
- sigprocmask(SIG_SETMASK, ¤t, NULL);
- }
- }
-}
-#endif