]> git.pond.sub.org Git - empserver/commitdiff
Remove the concept of thread priorities from empthread.h. Only LWP
authorMarkus Armbruster <armbru@pond.sub.org>
Tue, 24 Jul 2007 05:13:31 +0000 (05:13 +0000)
committerMarkus Armbruster <armbru@pond.sub.org>
Tue, 24 Jul 2007 05:13:31 +0000 (05:13 +0000)
supports priorities.  Update synchronization used to rely on them,
which naturally worked only with LWP (#1504036).  With that fixed, no
uses of priorities remained, but a minor bug did: players could starve
out threads with priorities below PP_PLAYER, i.e. delete_lostitems()
and player_kill_idle().  Closes #1458175:
(empth_create): Remove parameter prio.  Callers changed.  Also gets
rid of misleading comments in pthread.c and ntthread.c.
(PP_MAIN, PP_UPDATE, PP_SHUTDOWN, PP_SCHED, PP_TIMESTAMP, PP_PLAYER)
(PP_ACCEPT, PP_KILLIDLE): Remove.
(empth_init, empth_create) [EMPTH_LWP]: Pass priority 1.

include/empthread.h
src/lib/empthread/lwp.c
src/lib/empthread/ntthread.c
src/lib/empthread/pthread.c
src/lib/player/accept.c
src/server/main.c
src/server/marketup.c
src/server/shutdown.c
src/server/update.c

index 0bb46bf93783e0df867dea6edc116fe205515e57..3bd23d66ff8c6aaed05e39fd8316674d3c570fe5 100644 (file)
 
 #include <time.h>
 
-/* thread priorities */
-enum {
-    PP_MAIN     = 7,
-    PP_UPDATE   = 6,
-    PP_SHUTDOWN         = 5,
-    PP_SCHED    = 4,
-    PP_TIMESTAMP = 2,
-    PP_PLAYER   = 3,
-    PP_ACCEPT   = 3,
-    PP_KILLIDLE         = 2
-};
-
 #ifdef EMPTH_LWP
 #include "lwp.h"
 
@@ -123,7 +111,6 @@ int empth_init(void **ctx, int flags);
 
 /*
  * Create a new thread.
- * PRIO is the scheduling priority.
  * ENTRY is the entry point.  It will be called with argument UD.
  * Thread stack is at least SIZE bytes.
  * FLAGS should be the same as were passed to empth_init(), or zero.
@@ -134,7 +121,7 @@ int empth_init(void **ctx, int flags);
  * Yield the processor.
  * Return the thread, or NULL on error.
  */
-empth_t *empth_create(int prio, void (*entry)(void *),
+empth_t *empth_create(void (*entry)(void *),
                      int size, int flags, char *name, void *ud);
 
 /*
index c8d1d0a7efa8620aa36809940a5eba506875e40c..d1c0a0231818e65430f704eff83252f86dade4a9 100644 (file)
@@ -54,18 +54,18 @@ empth_init(void **ctx, int flags)
     sigaddset(&set, SIGHUP);
     sigaddset(&set, SIGINT);
     sigaddset(&set, SIGTERM);
-    lwpInitSystem(PP_MAIN, ctx, flags, &set);
+    lwpInitSystem(1, ctx, flags, &set);
     return 0;
 }
 
 
 empth_t *
-empth_create(int prio, void (*entry)(void *), int size, int flags,
+empth_create(void (*entry)(void *), int size, int flags,
             char *name, void *ud)
 {
     if (!flags)
        flags = empth_flags;
-    return lwpCreate(prio, entry, size, flags, name, 0, 0, ud);
+    return lwpCreate(1, entry, size, flags, name, 0, 0, ud);
 }
 
 empth_t *
index a7115435cc46a17b4ead3e9e4d67aa6ecf5f5958..4b921e7a7e4b358593f471a5851ebace91f235a0 100644 (file)
@@ -418,7 +418,6 @@ empth_init(void **ctx_ptr, int flags)
  *
  * Create a new thread.
  *
- * prio  - priority, not particularly useful in our context.
  * entry - entry point function for thread.
  * size  - stack size.
  * flags - debug control.
@@ -429,7 +428,7 @@ empth_init(void **ctx_ptr, int flags)
  *         It is also passed to the entry function...
  */
 empth_t *
-empth_create(int prio, void (*entry)(void *), int size, int flags,
+empth_create(void (*entry)(void *), int size, int flags,
             char *name, void *ud)
 {
     empth_t *pThread = NULL;
index 9681b1abc906ed357e5d5d6059e19c5cd30c19f3..3c3679175125e0e31766886f10e4f5541ba0d63a 100644 (file)
@@ -180,14 +180,8 @@ empth_init(void **ctx_ptr, int flags)
 }
 
 
-/*
- * prio can be used for setting scheeduling policy but...
- * it seems to be optional in POSIX threads and Solaris
- * for example just ignores it.
- * More then that priority is not needed even in lwp threads.
- */
 empth_t *
-empth_create(int prio, void (*entry)(void *), int size, int flags,
+empth_create(void (*entry)(void *), int size, int flags,
             char *name, void *ud)
 {
     pthread_t t;
index fa52d85072862fa73da5276b5cd787cd4bea1283..909604ae2340481fb6c46f1973169926ce78c685 100644 (file)
@@ -224,7 +224,6 @@ player_accept(void *unused)
 /* budget */  + MAX(WORLD_X * WORLD_Y / 2 * sizeof(int) * 7,
 /* power */ MAXNOC * sizeof(struct powstr));
        sprintf(buf, "Player (fd #%d)", ns);
-       empth_create(PP_PLAYER, player_login, stacksize,
-                    0, buf, np);
+       empth_create(player_login, stacksize, 0, buf, np);
     }
 }
index 77183386cb63e2f7e90fbe71eae9e895fb1672f4..1141008cf1150815d863cd1bd92e4c85bbf4820a 100644 (file)
@@ -331,12 +331,9 @@ start_server(int flags)
     if (journal_startup() < 0)
        exit(1);
 
-    empth_create(PP_ACCEPT, player_accept, (50 * 1024), flags,
-                "AcceptPlayers", 0);
-    empth_create(PP_KILLIDLE, player_kill_idle, (50 * 1024), flags,
-                "KillIdle", 0);
-    empth_create(PP_TIMESTAMP, delete_lostitems, (50 * 1024), flags,
-                "DeleteItems", 0);
+    empth_create(player_accept, 50 * 1024, flags, "AcceptPlayers", 0);
+    empth_create(player_kill_idle, 50 * 1024, flags, "KillIdle", 0);
+    empth_create(delete_lostitems, 50 * 1024, flags, "DeleteItems", 0);
 
     market_init();
     update_init();
index d1df31a0d75f7727028126f570fd0586abb78c5b..22ca6771d82426c84da7001e95e47b4f14103be0 100644 (file)
@@ -71,7 +71,6 @@ market_init(void)
     dp = player_new(-1);
     if (!dp)
        exit_nomem();
-    if (!empth_create(PP_UPDATE, market_update, 50 * 1024, 0,
-                     "MarketUpdate", dp))
+    if (!empth_create(market_update, 50 * 1024, 0, "MarketUpdate", dp))
        exit_nomem();
 }
index 8e0b68a7350cc1e709bde28b4511c2eb650031a9..2e83bb5fa5b5b7a358ed52c9d22a2b48d58c0931 100644 (file)
@@ -65,7 +65,7 @@ shutdown_initiate(int mins_from_now)
                mins_from_now);
        /* FIXME wake up shutdown_sequence() */
     } else {
-       if (!empth_create(PP_SHUTDOWN, shutdown_sequence, 50 * 1024, 0,
+       if (!empth_create(shutdown_sequence, 50 * 1024, 0,
                          "shutdownSeq", NULL))
            return -1;
     }
index 1240cc31d00b65c04d78cf63dba4f2ccacedaaea..77571904db544a09c5d9239e2fd2ff2b9ae813cb 100644 (file)
@@ -85,7 +85,7 @@ update_init(void)
     stacksize = 100000 +
 /* finish_sects */ WORLD_X * WORLD_Y * (2 * sizeof(double) +
                                        sizeof(char *));
-    update_thread = empth_create(PP_UPDATE, update_sched, stacksize, 0,
+    update_thread = empth_create(update_sched, stacksize, 0,
                                 "Update", dp);
     if (!update_thread)
        exit_nomem();