summaryrefslogtreecommitdiffstats
path: root/c/src/lib/librdbg/servcon.c
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>1999-10-06 21:15:21 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>1999-10-06 21:15:21 +0000
commit4267b4bfd541d1f31d256528511b8c3b3fdd093a (patch)
treee57db5e5d95d7acd0c65559efe8326325439eb4a /c/src/lib/librdbg/servcon.c
parentNew file. (diff)
downloadrtems-4267b4bfd541d1f31d256528511b8c3b3fdd093a.tar.bz2
Removed targets and configurations that are no longer functional
and not likely to become so. Comments on each configuration are below. + Force CPU386 - This BSP was developed as part of the initial port of RTEMS to the i386. This board has been unavailable for a long time now. + GO32 - This BSP and some CPU code supported djgpp v1.x. This version is now quite old. No one has stepped forward to update the code to v2.x which may be technically impossible anyway. More importantly, go32 has been superceded by the pc386 BSP.
Diffstat (limited to '')
-rw-r--r--c/src/lib/librdbg/servcon.c138
1 files changed, 0 insertions, 138 deletions
diff --git a/c/src/lib/librdbg/servcon.c b/c/src/lib/librdbg/servcon.c
deleted file mode 100644
index 30570760db..0000000000
--- a/c/src/lib/librdbg/servcon.c
+++ /dev/null
@@ -1,138 +0,0 @@
-/*
- **************************************************************************
- *
- * Component: RDBG
- * Module: servcon.c
- *
- * Synopsis: Management of RPC client connections.
- *
- * $Id$
- *
- **************************************************************************
- */
-
-#include <sys/errno.h>
-#include <rdbg/rdbg.h>
-#include <rdbg/servrpc.h>
-
- /*
- * ConnCreate - create a new connection entry for a client.
- *
- * This function finds an empty entry in the connection array
- * or makes space. It fills in the fields that are passed to it.
- * It does not do any validation on net addresses nor does it
- * start a validation cycle on other clients. This is done by
- * the caller.
- */
-
- int
-ConnCreate (struct svc_req* rqstp, open_in* in)
-{
- NET_OPAQUE sender;
- int idx;
- CONN_LIST* clst;
-
- setErrno (0);
-
- /* Convert to valid Net address */
- if (! TspTranslateRpcAddr (rqstp, &sender)) {
- DPRINTF (("ConnCreate: TspTranslateRpcAddr failed\n"));
- return -1;
- }
- if (! TspValidateAddr ((NET_OPAQUE*) in->back_port, &sender)) {
- DPRINTF (("ConnCreate: TspValidateAddr failed\n"));
- return -1; /* errno now setup with error */
- }
-
- /* look for an empty connection entry */
- for (idx = 0; idx < conn_list_cnt; idx++) {
- if (!conn_list[idx].in_use)
- break; /* an empty one found */
- }
-
- if (idx >= conn_list_cnt) { /* no empties, create space */
- CONN_LIST* tmp_conn_list = conn_list;
-
- conn_list_cnt += CONN_LIST_INC;
- if (conn_list) {
- conn_list = (CONN_LIST *) Realloc (conn_list, /* extend */
- conn_list_cnt * sizeof (CONN_LIST));
- } else {
- conn_list = (CONN_LIST *)Malloc(conn_list_cnt * sizeof(CONN_LIST));
- }
-
- if (!conn_list) { /* unable to get space */
- if ((conn_list_cnt -= CONN_LIST_INC)) {
- /* was realloc, restore space */
- conn_list = tmp_conn_list;
- }
- return -1; /* errno set by failed alloc */
- }
- /* clear newly created memory */
- memset (conn_list + idx, 0, CONN_LIST_INC * sizeof (CONN_LIST));
- } else { /* clear new entry */
- memset (conn_list + idx, 0, sizeof (CONN_LIST));
- }
- clst = conn_list + idx;
-
- clst->in_use = True; /* now in use */
- clst->sender = sender;
- memcpy (&clst->back_port, &in->back_port, sizeof (NET_OPAQUE));
- memcpy (&clst->route, &in->destination, sizeof (NET_OPAQUE));
- clst->debug_type = (UCHAR) in->debug_type;
- clst->flags = in->flags;
- strncpy (clst->user_name, in->user_name, NAMEMAX-1);
- clst->user_name [NAMEMAX-1] = 0;
-
- return idx;
-}
-
- /*
- * ConnDelete - remove connection entry when shutdown.
- *
- */
-
- void
-ConnDelete (int conn, struct svc_req* rqstp, close_control control)
-{
- CONN_LIST* clst = conn_list + conn;
- int idx;
- Boolean prim;
-
- if (! clst->in_use) return; /* not active */
-
- for (idx = 0; idx < pid_list_cnt; idx++) {
- PID_LIST* plst = pid_list + idx;
-
- if (! PIDMAP_TEST (conn, idx)) continue;
-
- /* found a controlled pid */
- prim = (plst->primary_conn == conn) ? True : False;
- TgtDetachCon (conn, idx, True);
-
- /* if still running or alive, we use close control on it */
- if (! plst->pid)
- continue; /* entry gone */
-
- if (prim && control == CLOSE_KILL) {
- /* kill off process */
- TgtKillAndDelete (plst, rqstp, True);
- } else if (! plst->owners) {
- /* no owners left */
- if (control == CLOSE_DETACH) {
- TgtKillAndDelete (plst, rqstp, False);
- }
- if (control == CLOSE_DETACH || PROC_TERMINATED (plst)) {
- TgtDelete (plst, conn, (control==CLOSE_DETACH) ?
- BMSG_DETACH : 0);
- }
- }
- }
- if (clst->list) {
- Free (clst->list); /* free allocated memory */
- }
- DPRINTF (("ConnDelete: Connection closed for port %u\n",
- HL_W(*((UINT16*) &clst->back_port.c[2]))));
-
- clst->in_use = False; /* free it back */
-}