(lwpSetDesc): Unused, remove.
[EMPTH_LWP] (lwpProc): Remove member desc. [EMPTH_LWP] (lwpCreate, lwpDestroy): Don't initialize / finalize it. [EMPTH_POSIX] (empth_t): Remove member desc. [EMPTH_POSIX] (empth_init, empth_create): Don't initialize it. [EMPTH_W32] (loc_Thread): Remove member szDesc. [EMPTH_W32] (empth_init, empth_create): Don't initialize it. (empth_create, lwpCreate): Remove parameter desc. Callers changed.
This commit is contained in:
parent
ee46f55e6e
commit
d0ab92b944
12 changed files with 33 additions and 67 deletions
|
@ -132,8 +132,7 @@ int empth_init(void **ctx, int flags);
|
||||||
* ENTRY is the entry point. It will be called with argument UD.
|
* ENTRY is the entry point. It will be called with argument UD.
|
||||||
* Thread stack is at least SIZE bytes.
|
* Thread stack is at least SIZE bytes.
|
||||||
* FLAGS should be the same as were passed to empth_init(), or zero.
|
* FLAGS should be the same as were passed to empth_init(), or zero.
|
||||||
* NAME is the threads name, and DESC its description. These are used
|
* NAME is the thread's name, it is used for logging and debugging.
|
||||||
* for logging and debugging.
|
|
||||||
* UD is the value to pass to ENTRY. It is also assigned to the
|
* UD is the value to pass to ENTRY. It is also assigned to the
|
||||||
* context variable defined with empth_init() whenever the thread gets
|
* context variable defined with empth_init() whenever the thread gets
|
||||||
* scheduled.
|
* scheduled.
|
||||||
|
@ -141,7 +140,7 @@ int empth_init(void **ctx, int flags);
|
||||||
* Return the thread, or NULL on error.
|
* Return the thread, or NULL on error.
|
||||||
*/
|
*/
|
||||||
empth_t *empth_create(int prio, void (*entry)(void *),
|
empth_t *empth_create(int prio, void (*entry)(void *),
|
||||||
int size, int flags, char *name, char *desc, void *ud);
|
int size, int flags, char *name, void *ud);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Return the current thread.
|
* Return the current thread.
|
||||||
|
@ -184,6 +183,7 @@ void empth_select(int fd, int flags);
|
||||||
/*
|
/*
|
||||||
* Awaken THREAD if it is sleeping in empth_select().
|
* Awaken THREAD if it is sleeping in empth_select().
|
||||||
* Note: This must not awaken threads sleeping in other functions.
|
* Note: This must not awaken threads sleeping in other functions.
|
||||||
|
* Does not yield the processor.
|
||||||
*/
|
*/
|
||||||
void empth_wakeup(empth_t *thread);
|
void empth_wakeup(empth_t *thread);
|
||||||
|
|
||||||
|
@ -194,7 +194,7 @@ void empth_wakeup(empth_t *thread);
|
||||||
void empth_sleep(time_t until);
|
void empth_sleep(time_t until);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Wait for signal, return the signal number
|
* Wait for signal, return the signal number.
|
||||||
*/
|
*/
|
||||||
int empth_wait_for_signal(void);
|
int empth_wait_for_signal(void);
|
||||||
|
|
||||||
|
|
|
@ -41,7 +41,7 @@ struct lwp_rwlock;
|
||||||
|
|
||||||
struct lwpProc *lwpInitSystem(int prio, void **ctxp, int flags, sigset_t *);
|
struct lwpProc *lwpInitSystem(int prio, void **ctxp, int flags, sigset_t *);
|
||||||
struct lwpProc *lwpCreate(int prio, void (*)(void *), int size,
|
struct lwpProc *lwpCreate(int prio, void (*)(void *), int size,
|
||||||
int flags, char *name, char *desc,
|
int flags, char *name,
|
||||||
int argc, char **argv, void *ud);
|
int argc, char **argv, void *ud);
|
||||||
void lwpExit(void);
|
void lwpExit(void);
|
||||||
void lwpTerminate(struct lwpProc * p);
|
void lwpTerminate(struct lwpProc * p);
|
||||||
|
@ -52,7 +52,6 @@ void lwpWakeupFd(struct lwpProc * p);
|
||||||
int lwpSigWait(sigset_t *set, int *sig);
|
int lwpSigWait(sigset_t *set, int *sig);
|
||||||
void *lwpGetUD(struct lwpProc * p);
|
void *lwpGetUD(struct lwpProc * p);
|
||||||
void lwpSetUD(struct lwpProc * p, char *ud);
|
void lwpSetUD(struct lwpProc * p, char *ud);
|
||||||
void lwpSetDesc(struct lwpProc * p, char *name, char *desc);
|
|
||||||
int lwpSetPriority(int prio);
|
int lwpSetPriority(int prio);
|
||||||
|
|
||||||
struct lwpSem *lwpCreateSem(char *name, int count);
|
struct lwpSem *lwpCreateSem(char *name, int count);
|
||||||
|
|
|
@ -61,11 +61,11 @@ empth_init(void **ctx, int flags)
|
||||||
|
|
||||||
empth_t *
|
empth_t *
|
||||||
empth_create(int prio, void (*entry)(void *), int size, int flags,
|
empth_create(int prio, void (*entry)(void *), int size, int flags,
|
||||||
char *name, char *desc, void *ud)
|
char *name, void *ud)
|
||||||
{
|
{
|
||||||
if (!flags)
|
if (!flags)
|
||||||
flags = empth_flags;
|
flags = empth_flags;
|
||||||
return lwpCreate(prio, entry, size, flags, name, desc, 0, 0, ud);
|
return lwpCreate(prio, entry, size, flags, name, 0, 0, ud);
|
||||||
}
|
}
|
||||||
|
|
||||||
empth_t *
|
empth_t *
|
||||||
|
|
|
@ -69,8 +69,6 @@ struct loc_Thread {
|
||||||
|
|
||||||
/* The thread name, passed in at create time. */
|
/* The thread name, passed in at create time. */
|
||||||
char szName[17];
|
char szName[17];
|
||||||
/* The thread description, passed in at create time. */
|
|
||||||
char szDesc[80];
|
|
||||||
|
|
||||||
/* True if this is the main line, and not a real thread. */
|
/* True if this is the main line, and not a real thread. */
|
||||||
BOOL bMainThread;
|
BOOL bMainThread;
|
||||||
|
@ -418,8 +416,6 @@ empth_init(void **ctx_ptr, int flags)
|
||||||
memset(pThread, 0, sizeof(*pThread));
|
memset(pThread, 0, sizeof(*pThread));
|
||||||
|
|
||||||
strncpy(pThread->szName, "Main", sizeof(pThread->szName) - 1);
|
strncpy(pThread->szName, "Main", sizeof(pThread->szName) - 1);
|
||||||
strncpy(pThread->szDesc, "The main process",
|
|
||||||
sizeof(pThread->szDesc) - 1);
|
|
||||||
pThread->ulThreadID = GetCurrentThreadId();
|
pThread->ulThreadID = GetCurrentThreadId();
|
||||||
pThread->bMainThread = TRUE;
|
pThread->bMainThread = TRUE;
|
||||||
|
|
||||||
|
@ -444,29 +440,26 @@ empth_init(void **ctx_ptr, int flags)
|
||||||
* flags - debug control.
|
* flags - debug control.
|
||||||
* LWP_STACKCHECK - not needed
|
* LWP_STACKCHECK - not needed
|
||||||
* name - name of the thread, for debug.
|
* name - name of the thread, for debug.
|
||||||
* desc - description of thread, for debug.
|
|
||||||
* ud - "user data". The "ctx_ptr" gets this value
|
* ud - "user data". The "ctx_ptr" gets this value
|
||||||
* when the thread is active.
|
* when the thread is active.
|
||||||
* It is also passed to the entry function...
|
* It is also passed to the entry function...
|
||||||
*/
|
*/
|
||||||
empth_t *
|
empth_t *
|
||||||
empth_create(int prio, void (*entry)(void *), int size, int flags,
|
empth_create(int prio, void (*entry)(void *), int size, int flags,
|
||||||
char *name, char *desc, void *ud)
|
char *name, void *ud)
|
||||||
{
|
{
|
||||||
empth_t *pThread = NULL;
|
empth_t *pThread = NULL;
|
||||||
|
|
||||||
loc_debug("creating new thread %s:%s", name, desc);
|
loc_debug("creating new thread %s", name);
|
||||||
|
|
||||||
pThread = malloc(sizeof(*pThread));
|
pThread = malloc(sizeof(*pThread));
|
||||||
if (!pThread) {
|
if (!pThread) {
|
||||||
logerror("not enough memory to create thread: %s (%s)",
|
logerror("not enough memory to create thread %s", name);
|
||||||
name, desc);
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
memset(pThread, 0, sizeof(*pThread));
|
memset(pThread, 0, sizeof(*pThread));
|
||||||
|
|
||||||
strncpy(pThread->szName, name, sizeof(pThread->szName) - 1);
|
strncpy(pThread->szName, name, sizeof(pThread->szName) - 1);
|
||||||
strncpy(pThread->szDesc, desc, sizeof(pThread->szDesc) - 1);
|
|
||||||
pThread->pvUserData = ud;
|
pThread->pvUserData = ud;
|
||||||
pThread->pfnEntry = entry;
|
pThread->pfnEntry = entry;
|
||||||
pThread->bMainThread = FALSE;
|
pThread->bMainThread = FALSE;
|
||||||
|
@ -479,8 +472,7 @@ empth_create(int prio, void (*entry)(void *), int size, int flags,
|
||||||
|
|
||||||
pThread->ulThreadID = _beginthread(empth_threadMain, size, pThread);
|
pThread->ulThreadID = _beginthread(empth_threadMain, size, pThread);
|
||||||
if (pThread->ulThreadID == -1) {
|
if (pThread->ulThreadID == -1) {
|
||||||
logerror("can not create thread: %s (%s): %s",
|
logerror("can not create thread: %s: %s", name, strerror(errno));
|
||||||
name, desc, strerror(errno));
|
|
||||||
goto bad;
|
goto bad;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -61,7 +61,6 @@
|
||||||
|
|
||||||
struct empth_t {
|
struct empth_t {
|
||||||
char *name; /* thread name */
|
char *name; /* thread name */
|
||||||
char *desc; /* description */
|
|
||||||
void *ud; /* user data */
|
void *ud; /* user data */
|
||||||
int state; /* my state */
|
int state; /* my state */
|
||||||
void (*ep)(void *); /* entry point */
|
void (*ep)(void *); /* entry point */
|
||||||
|
@ -177,7 +176,6 @@ empth_init(void **ctx_ptr, int flags)
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
ctx->name = "Main";
|
ctx->name = "Main";
|
||||||
ctx->desc = "empire main";
|
|
||||||
ctx->ep = 0;
|
ctx->ep = 0;
|
||||||
ctx->ud = 0;
|
ctx->ud = 0;
|
||||||
ctx->id = pthread_self();
|
ctx->id = pthread_self();
|
||||||
|
@ -197,31 +195,29 @@ empth_init(void **ctx_ptr, int flags)
|
||||||
*/
|
*/
|
||||||
empth_t *
|
empth_t *
|
||||||
empth_create(int prio, void (*entry)(void *), int size, int flags,
|
empth_create(int prio, void (*entry)(void *), int size, int flags,
|
||||||
char *name, char *desc, void *ud)
|
char *name, void *ud)
|
||||||
{
|
{
|
||||||
pthread_t t;
|
pthread_t t;
|
||||||
pthread_attr_t attr;
|
pthread_attr_t attr;
|
||||||
empth_t *ctx;
|
empth_t *ctx;
|
||||||
int eno;
|
int eno;
|
||||||
|
|
||||||
empth_status("creating new thread %s:%s", name, desc);
|
empth_status("creating new thread %s", name);
|
||||||
|
|
||||||
ctx = malloc(sizeof(empth_t));
|
ctx = malloc(sizeof(empth_t));
|
||||||
if (!ctx) {
|
if (!ctx) {
|
||||||
logerror("not enough memory to create thread: %s (%s)",
|
logerror("not enough memory to create thread %s", name);
|
||||||
name, desc);
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
ctx->name = strdup(name);
|
ctx->name = strdup(name);
|
||||||
ctx->desc = strdup(desc);
|
|
||||||
ctx->ud = ud;
|
ctx->ud = ud;
|
||||||
ctx->state = 0;
|
ctx->state = 0;
|
||||||
ctx->ep = entry;
|
ctx->ep = entry;
|
||||||
|
|
||||||
eno = pthread_attr_init(&attr);
|
eno = pthread_attr_init(&attr);
|
||||||
if (eno) {
|
if (eno) {
|
||||||
logerror("can not create thread attribute %s (%s): %s",
|
logerror("can not create thread attribute %s: %s",
|
||||||
name, desc, strerror(eno));
|
name, strerror(eno));
|
||||||
goto bad;
|
goto bad;
|
||||||
}
|
}
|
||||||
if (size < PTHREAD_STACK_MIN)
|
if (size < PTHREAD_STACK_MIN)
|
||||||
|
@ -231,8 +227,7 @@ empth_create(int prio, void (*entry)(void *), int size, int flags,
|
||||||
|
|
||||||
eno = pthread_create(&t, &attr, empth_start, ctx);
|
eno = pthread_create(&t, &attr, empth_start, ctx);
|
||||||
if (eno) {
|
if (eno) {
|
||||||
logerror("can not create thread: %s (%s): %s",
|
logerror("can not create thread: %s: %s", name, strerror(eno));
|
||||||
name, desc, strerror(eno));
|
|
||||||
goto bad;
|
goto bad;
|
||||||
}
|
}
|
||||||
empth_status("new thread id is %ld", (long)t);
|
empth_status("new thread id is %ld", (long)t);
|
||||||
|
|
|
@ -131,7 +131,8 @@ lwpEntryPoint(void)
|
||||||
* lwpCreate -- create a process.
|
* lwpCreate -- create a process.
|
||||||
*/
|
*/
|
||||||
struct lwpProc *
|
struct lwpProc *
|
||||||
lwpCreate(int priority, void (*entry)(void *), int stacksz, int flags, char *name, char *desc, int argc, char **argv, void *ud)
|
lwpCreate(int priority, void (*entry)(void *), int stacksz,
|
||||||
|
int flags, char *name, int argc, char **argv, void *ud)
|
||||||
{
|
{
|
||||||
struct lwpProc *newp;
|
struct lwpProc *newp;
|
||||||
|
|
||||||
|
@ -139,7 +140,6 @@ lwpCreate(int priority, void (*entry)(void *), int stacksz, int flags, char *nam
|
||||||
return NULL;
|
return NULL;
|
||||||
newp->flags = flags;
|
newp->flags = flags;
|
||||||
newp->name = strdup(name);
|
newp->name = strdup(name);
|
||||||
newp->desc = strdup(desc);
|
|
||||||
newp->entry = entry;
|
newp->entry = entry;
|
||||||
newp->argc = argc;
|
newp->argc = argc;
|
||||||
newp->argv = argv;
|
newp->argv = argv;
|
||||||
|
@ -153,7 +153,6 @@ lwpCreate(int priority, void (*entry)(void *), int stacksz, int flags, char *nam
|
||||||
LwpMaxpri = priority;
|
LwpMaxpri = priority;
|
||||||
if (lwpNewContext(newp, stacksz) < 0) {
|
if (lwpNewContext(newp, stacksz) < 0) {
|
||||||
free(newp->name);
|
free(newp->name);
|
||||||
free(newp->desc);
|
|
||||||
free(newp);
|
free(newp);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
@ -177,7 +176,6 @@ lwpDestroy(struct lwpProc *proc)
|
||||||
lwpStatus(proc, "destroying sbtm: %p", proc->sbtm);
|
lwpStatus(proc, "destroying sbtm: %p", proc->sbtm);
|
||||||
free(proc->sbtm);
|
free(proc->sbtm);
|
||||||
free(proc->name);
|
free(proc->name);
|
||||||
free(proc->desc);
|
|
||||||
free(proc);
|
free(proc);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -215,20 +213,6 @@ lwpSetUD(struct lwpProc *p, char *ud)
|
||||||
p->ud = ud;
|
p->ud = ud;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* set name & desc
|
|
||||||
*/
|
|
||||||
void
|
|
||||||
lwpSetDesc(struct lwpProc *p, char *name, char *desc)
|
|
||||||
{
|
|
||||||
if (!p)
|
|
||||||
p = LwpCurrent;
|
|
||||||
free(p->name);
|
|
||||||
free(p->desc);
|
|
||||||
p->name = strdup(name);
|
|
||||||
p->desc = strdup(desc);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* lwpYield -- yield the processor to another thread.
|
* lwpYield -- yield the processor to another thread.
|
||||||
*/
|
*/
|
||||||
|
@ -317,8 +301,7 @@ lwpInitSystem(int pri, void **ctxptr, int flags, sigset_t *waitset)
|
||||||
LwpDeadQ.head = LwpDeadQ.tail = 0;
|
LwpDeadQ.head = LwpDeadQ.tail = 0;
|
||||||
lwpInitSigWait(waitset);
|
lwpInitSigWait(waitset);
|
||||||
/* must be lower in priority than us for this to work right */
|
/* must be lower in priority than us for this to work right */
|
||||||
sel = lwpCreate(0, lwpSelect, 16384, flags, "EventHandler",
|
sel = lwpCreate(0, lwpSelect, 16384, flags, "EventHandler", 0, 0, 0);
|
||||||
"Select (main loop) Event Handler", 0, 0, 0);
|
|
||||||
lwpInitSelect(sel);
|
lwpInitSelect(sel);
|
||||||
return LwpCurrent;
|
return LwpCurrent;
|
||||||
}
|
}
|
||||||
|
|
|
@ -63,8 +63,7 @@ struct lwpProc {
|
||||||
int argc; /* initial arguments */
|
int argc; /* initial arguments */
|
||||||
char **argv;
|
char **argv;
|
||||||
void *ud; /* user data */
|
void *ud; /* user data */
|
||||||
char *name; /* process name and description */
|
char *name; /* process name, for debugging */
|
||||||
char *desc;
|
|
||||||
int flags;
|
int flags;
|
||||||
struct lwpProc *next;
|
struct lwpProc *next;
|
||||||
};
|
};
|
||||||
|
|
|
@ -242,6 +242,6 @@ player_accept(void *unused)
|
||||||
/* power */ MAXNOC * sizeof(struct powstr));
|
/* power */ MAXNOC * sizeof(struct powstr));
|
||||||
sprintf(buf, "Player (fd #%d)", ns);
|
sprintf(buf, "Player (fd #%d)", ns);
|
||||||
empth_create(PP_PLAYER, player_login, stacksize,
|
empth_create(PP_PLAYER, player_login, stacksize,
|
||||||
0, buf, "Empire player", np);
|
0, buf, np);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -324,15 +324,14 @@ start_server(int flags)
|
||||||
exit(1);
|
exit(1);
|
||||||
|
|
||||||
empth_create(PP_ACCEPT, player_accept, (50 * 1024), flags,
|
empth_create(PP_ACCEPT, player_accept, (50 * 1024), flags,
|
||||||
"AcceptPlayers", "Accept network connections", 0);
|
"AcceptPlayers", 0);
|
||||||
empth_create(PP_KILLIDLE, player_kill_idle, (50 * 1024), flags,
|
empth_create(PP_KILLIDLE, player_kill_idle, (50 * 1024), flags,
|
||||||
"KillIdle", "Kills idle player connections", 0);
|
"KillIdle", 0);
|
||||||
empth_create(PP_TIMESTAMP, delete_lostitems, (50 * 1024), flags,
|
empth_create(PP_TIMESTAMP, delete_lostitems, (50 * 1024), flags,
|
||||||
"DeleteItems", "Deletes old lost items", 0);
|
"DeleteItems", 0);
|
||||||
if (opt_MOB_ACCESS) {
|
if (opt_MOB_ACCESS) {
|
||||||
/* Start the mobility access check thread */
|
|
||||||
empth_create(PP_TIMESTAMP, mobility_check, (50 * 1024), flags,
|
empth_create(PP_TIMESTAMP, mobility_check, (50 * 1024), flags,
|
||||||
"MobilityCheck", "Writes the timestamp file", 0);
|
"MobilityCheck", 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
market_init();
|
market_init();
|
||||||
|
|
|
@ -72,6 +72,6 @@ market_init(void)
|
||||||
if (!dp)
|
if (!dp)
|
||||||
exit_nomem();
|
exit_nomem();
|
||||||
if (!empth_create(PP_UPDATE, market_update, 50 * 1024, 0,
|
if (!empth_create(PP_UPDATE, market_update, 50 * 1024, 0,
|
||||||
"MarketUpdate", "Updates the market", dp))
|
"MarketUpdate", dp))
|
||||||
exit_nomem();
|
exit_nomem();
|
||||||
}
|
}
|
||||||
|
|
|
@ -65,9 +65,8 @@ shutdown_initiate(int mins_from_now)
|
||||||
mins_from_now);
|
mins_from_now);
|
||||||
/* FIXME wake up shutdown_sequence() */
|
/* FIXME wake up shutdown_sequence() */
|
||||||
} else {
|
} else {
|
||||||
if (!empth_create(PP_SHUTDOWN, shutdown_sequence, 50 * 1024,
|
if (!empth_create(PP_SHUTDOWN, shutdown_sequence, 50 * 1024, 0,
|
||||||
0, "shutdownSeq", "Counts down server shutdown",
|
"shutdownSeq", NULL))
|
||||||
NULL))
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -77,11 +77,11 @@ update_init(void)
|
||||||
/* finish_sects */ WORLD_X * WORLD_Y * (2 * sizeof(double) +
|
/* finish_sects */ WORLD_X * WORLD_Y * (2 * sizeof(double) +
|
||||||
sizeof(char *));
|
sizeof(char *));
|
||||||
if (!empth_create(PP_UPDATE, update_wait, stacksize, 0,
|
if (!empth_create(PP_UPDATE, update_wait, stacksize, 0,
|
||||||
"Update", "Updates the world", dp))
|
"Update", dp))
|
||||||
exit_nomem();
|
exit_nomem();
|
||||||
|
|
||||||
if (!empth_create(PP_SCHED, update_sched, 50 * 1024, 0,
|
if (!empth_create(PP_SCHED, update_sched, 50 * 1024, 0,
|
||||||
"UpdateSched", "Schedules updates to occur", NULL))
|
"UpdateSched", NULL))
|
||||||
exit_nomem();
|
exit_nomem();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -150,8 +150,8 @@ update_trigger(time_t secs_from_now)
|
||||||
if (!secp)
|
if (!secp)
|
||||||
return -1;
|
return -1;
|
||||||
*secp = secs_from_now;
|
*secp = secs_from_now;
|
||||||
if (!empth_create(PP_SCHED, update_force, 50 * 1024, 0, "forceUpdate",
|
if (!empth_create(PP_SCHED, update_force, 50 * 1024, 0,
|
||||||
"Schedules an update", secp))
|
"forceUpdate", secp))
|
||||||
return -1;
|
return -1;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue