/*
* Empire - A multi-player, client/server Internet based war game.
- * Copyright (C) 1994-2008, Dave Pare, Jeff Bailey, Thomas Ruschak,
+ * Copyright (C) 1994-2009, Dave Pare, Jeff Bailey, Thomas Ruschak,
* Ken Stevens, Steve McClure
* Copyright (C) 1991-3 Stephen Crane
*
* ---
*
* lwp.c: lightweight process creation, destruction and manipulation
- *
+ *
* Known contributors to this file:
- * Markus Armbruster, 2004-2007
+ * Markus Armbruster, 2004-2009
*/
#include <config.h>
#include "lwpint.h"
#include "prototypes.h"
-struct lwpQueue LwpSchedQ[LWP_MAX_PRIO], LwpDeadQ;
+static struct lwpQueue LwpSchedQ[LWP_MAX_PRIO], LwpDeadQ;
struct lwpProc *LwpCurrent = NULL;
-void **LwpContextPtr;
-int LwpMaxpri = 0; /* maximum priority so far */
-int LwpStackGrowsDown;
+static void **LwpContextPtr;
+static int LwpMaxpri = 0; /* maximum priority so far */
+static int LwpStackGrowsDown;
static void lwpDestroy(struct lwpProc *proc);
static void lwpStackCheckInit(struct lwpProc *newp);
} else {
lwpDestroy(nextp);
}
- nextp = 0;
+ nextp = NULL;
}
if (nextp)
break;
}
- if (CANT_HAPPEN(LwpCurrent == 0 && nextp == 0))
+ if (CANT_HAPPEN(!LwpCurrent && !nextp))
abort();
if (LwpCurrent != nextp) {
struct lwpProc *oldp = LwpCurrent;
LwpCurrent = nextp;
*LwpContextPtr = nextp->ud;
lwpSwitchContext(oldp, nextp);
- lwpStatus(nextp, "switch in %d", nextp->pri);
+ lwpStatus(nextp, "switch in");
}
}
pri = LWP_MAX_PRIO - 1;
if (LwpMaxpri < pri)
LwpMaxpri = pri;
- LwpCurrent->next = 0;
+ LwpCurrent->next = NULL;
LwpCurrent->sbtm = stack; /* dummy stack for "main" */
LwpCurrent->pri = pri;
LwpCurrent->dead = 0;
LwpCurrent->flags = flags & ~LWP_STACKCHECK;
LwpCurrent->name = "Main";
for (i = LWP_MAX_PRIO, q = LwpSchedQ; i--; q++)
- q->head = q->tail = 0;
- LwpDeadQ.head = LwpDeadQ.tail = 0;
+ q->head = q->tail = NULL;
+ LwpDeadQ.head = LwpDeadQ.tail = NULL;
lwpInitSigWait(waitset);
/* must be lower in priority than us for this to work right */
- sel = lwpCreate(0, lwpSelect, 16384, flags, "EventHandler", 0, 0, 0);
+ sel = lwpCreate(0, lwpSelect, 16384, flags, "EventHandler", 0,
+ NULL, NULL);
lwpInitSelect(sel);
return LwpCurrent;
}
lwpStatus(newp, "Thread stack %d used, %d left, %d total",
used, total - used, total);
}
+
+/* lwpName
+ *
+ * Return the name of the thread.
+ */
+char *
+lwpName(struct lwpProc *proc)
+{
+ return proc->name;
+}
+
+/* lwpSetName
+ *
+ * Set the name of the thread.
+ */
+void
+lwpSetName(struct lwpProc *proc, char *name)
+{
+ if (proc->name != NULL)
+ free(proc->name);
+
+ proc->name = strdup(name);
+}
+