From 100e70db3916ed445d56bda8b62c6109d04e7f40 Mon Sep 17 00:00:00 2001 From: hadaq Date: Tue, 19 Oct 2010 22:12:17 +0000 Subject: [PATCH] update --- trbnetd/server/Makefile | 8 +----- trbnetd/server/trbnetd.c | 54 +++++++++++++++++++++++++++++++++++----- trbnetd/trbrpc.x | 33 ++++++++++++------------ 3 files changed, 66 insertions(+), 29 deletions(-) diff --git a/trbnetd/server/Makefile b/trbnetd/server/Makefile index 17fd80b..f55b6cc 100644 --- a/trbnetd/server/Makefile +++ b/trbnetd/server/Makefile @@ -62,12 +62,6 @@ ARFLAGS = -srv $(LD) -shared -O $^ -o $@ @echo DONE! -# RPCGEN -%.h: %.x - rpcgen -N -M $^ - - rpcgen -N -M $^ - # ------------ Targets ------------------------------------------------- .PHONY: all @@ -110,4 +104,4 @@ trbrpc_xdr.c: ln -s ../trbrpc_xdr.c rpcserver.c: - rpcgen -N -m -M ../trbrpc.x > ./rpcserver.c \ No newline at end of file + rpcgen -N -m -M ../trbrpc.x > ./rpcserver.c diff --git a/trbnetd/server/trbnetd.c b/trbnetd/server/trbnetd.c index 9c33b72..c51cf7a 100644 --- a/trbnetd/server/trbnetd.c +++ b/trbnetd/server/trbnetd.c @@ -6,13 +6,14 @@ #include #include #include +#include +#include #include #include #include "trbrpc.h" - int trbnetrpcprog_1_freeresult(SVCXPRT * transp, xdrproc_t xdr_result, caddr_t result) { @@ -163,7 +164,6 @@ bool_t read_uid_1_svc(uint16_t trb_address, struct svc_req* rqstp) { int status; - /* allocate buffer memory */ retVal->data.Buffer_val = (uint32_t *) malloc(sizeof(uint32_t) * dsize); if (retVal->data.Buffer_val == NULL) { @@ -176,7 +176,6 @@ bool_t read_uid_1_svc(uint16_t trb_address, retVal->status.retVal = status; retVal->data.Buffer_len = status == -1 ? 0 : status; copyStatus(&retVal->status); - return TRUE; } @@ -323,15 +322,58 @@ bool_t register_modify_1_svc(uint16_t trb_address, void trbnetrpcprog_1(struct svc_req *rqstp, register SVCXPRT * transp); + +/* ------ MAIN ---------------------------------------------------------- */ + +void usage(const char *progName) +{ + fprintf(stdout, "Usage: %s [-h] [-f]\n", progName); + fprintf(stdout, "Options:\n"); + fprintf(stdout, " -h give this help\n"); + fprintf(stdout, " -f execute as foreground process\n"); +} + static pid_t myPid = -1; +static void sigHandler(int sig) +{ + if (sig == SIGTERM) fprintf(stderr, "caught SIGTERM\n"); + if (sig == SIGINT) fprintf(stderr, "caught SIGINT\n"); + + exit(128 + sig); +} + + + int main(int argc, char **argv) { - int daemonMode = 1; register SVCXPRT *transp; + int daemonMode = 1; + int opt; + + optind = 1; + while ((opt = getopt(argc, argv, "+hfd:")) != -1) { + switch (opt) { + case '?': + usage(basename(argv[0])); + return -1; + case 'h': + usage(basename(argv[0])); + return 0; + case 'f': + daemonMode = 0; + break; + case 'd': + trb_debug = strtoul(optarg, NULL, 0); + break; + + default: + break; + } + } - if ((argc >= 2) && (strcmp(argv[1], "-f") == 0)) - daemonMode = 0; + signal(SIGINT, sigHandler); + signal(SIGTERM, sigHandler); pmap_unset(TRBNETRPCPROG, TRBNETRPCVERS); diff --git a/trbnetd/trbrpc.x b/trbnetd/trbrpc.x index 0f620bf..2a40678 100644 --- a/trbnetd/trbrpc.x +++ b/trbnetd/trbrpc.x @@ -1,3 +1,4 @@ + /* RPC interface definitions of the remote trbnet functions */ typedef uint32_t Buffer<>; @@ -25,69 +26,69 @@ program TRBNETRPCPROG { RetVal REGISTERTIME_READ(uint16_t, uint16_t, - unsigned int) = 16; + unsigned int) = 2; RetVal REGISTER_READ_MEM(uint16_t, uint16_t, uint8_t, uint16_t, - unsigned int) = 2; + unsigned int) = 3; RetVal REGISTERTIME_READ_MEM(uint16_t, uint16_t, uint8_t, uint16_t, - unsigned int) = 17; + unsigned int) = 4; Status REGISTER_WRITE(uint16_t, uint16_t, - uint32_t) = 3; + uint32_t) = 5; Status REGISTER_WRITE_MEM(uint16_t, uint16_t, uint8_t, - Buffer) = 4; + Buffer) = 6; RetVal READ_UID(uint16_t, - unsigned int) = 5; + unsigned int) = 7; Status SET_ADDRESS(uint64_t, uint8_t, - uint16_t) = 6; + uint16_t) = 8; Status SEND_TRIGGER(uint8_t, uint32_t, uint8_t, - uint16_t) = 7; + uint16_t) = 9; Status SEND_TRIGGER_RICH(uint8_t, uint8_t, uint32_t, uint8_t, - uint16_t) = 8; + uint16_t) = 10; RetVal IPU_DATA_READ(uint8_t, uint32_t, uint8_t, uint16_t, - unsigned int) = 9; + unsigned int) = 11; - RetVal FPGA_REGISTER_READ(uint16_t) = 10; + RetVal FPGA_REGISTER_READ(uint16_t) = 12; Status FPGA_REGISTER_WRITE(uint16_t, - uint32_t) = 11; + uint32_t) = 13; - Status TRB_FIFO_FLUSH(uint8_t) = 12; + Status TRB_FIFO_FLUSH(uint8_t) = 14; - Status NETWORK_RESET(void) = 13; + Status NETWORK_RESET(void) = 15; - Status COM_RESET(void) = 14; + Status COM_RESET(void) = 16; Status REGISTER_MODIFY(uint16_t, uint16_t, int, uint32_t, - uint32_t) = 15; + uint32_t) = 17; } = 1; } = 0x20000099; -- 2.43.0