Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2004-02-07 13:47:39 +0300
committerCorinna Vinschen <corinna@vinschen.de>2004-02-07 13:47:39 +0300
commitf5133f95b085c4fbe92fc5ca8fee9d5016257e4e (patch)
tree9d352c0891a0500418c25aaf53572e5d38b73494
parenta1bca00aa9bf911359870695dc79ab6c4dab5336 (diff)
* bsd_mutex.cc (win_priority): Move to msleep helper function section.
(set_priority): Ditto. Fix formatting. (_msleep): Cleanup obj formatting. Rearrange obj order.
-rw-r--r--winsup/cygserver/ChangeLog6
-rw-r--r--winsup/cygserver/bsd_mutex.cc70
2 files changed, 44 insertions, 32 deletions
diff --git a/winsup/cygserver/ChangeLog b/winsup/cygserver/ChangeLog
index 838eee8d7..d0a9f5725 100644
--- a/winsup/cygserver/ChangeLog
+++ b/winsup/cygserver/ChangeLog
@@ -1,3 +1,9 @@
+2004-02-07 Corinna Vinschen <corinna@vinschen.de>
+
+ * bsd_mutex.cc (win_priority): Move to msleep helper function section.
+ (set_priority): Ditto. Fix formatting.
+ (_msleep): Cleanup obj formatting. Rearrange obj order.
+
2004-02-06 Corinna Vinschen <corinna@vinschen.de>
* bsd_mutex.cc (_msleep): Handle PCATCH using signal_arrived event.
diff --git a/winsup/cygserver/bsd_mutex.cc b/winsup/cygserver/bsd_mutex.cc
index af23f5668..6a9ffb2c6 100644
--- a/winsup/cygserver/bsd_mutex.cc
+++ b/winsup/cygserver/bsd_mutex.cc
@@ -106,33 +106,6 @@ msleep_event_name (void *ident, char *name)
return name;
}
-/*
- * Original description from BSD code:
- *
- * General sleep call. Suspends the current process until a wakeup is
- * performed on the specified identifier. The process will then be made
- * runnable with the specified priority. Sleeps at most timo/hz seconds
- * (0 means no timeout). If pri includes PCATCH flag, signals are checked
- * before and after sleeping, else signals are not checked. Returns 0 if
- * awakened, EWOULDBLOCK if the timeout expires. If PCATCH is set and a
- * signal needs to be delivered, ERESTART is returned if the current system
- * call should be restarted if possible, and EINTR is returned if the system
- * call should be interrupted by the signal (return EINTR).
- *
- * The mutex argument is exited before the caller is suspended, and
- * entered before msleep returns. If priority includes the PDROP
- * flag the mutex is not entered before returning.
- */
-static HANDLE msleep_glob_evt;
-
-void
-msleep_init (void)
-{
- msleep_glob_evt = CreateEvent (NULL, TRUE, FALSE, NULL);
- if (!msleep_glob_evt)
- panic ("CreateEvent in msleep_init failed: %E");
-}
-
static int
win_priority (int priority)
{
@@ -166,13 +139,40 @@ static int
set_priority (int priority)
{
int old_prio = GetThreadPriority (GetCurrentThread ());
- if (!SetThreadPriority (GetCurrentThread (), win_priority(priority)))
+ if (!SetThreadPriority (GetCurrentThread (), win_priority (priority)))
log (LOG_WARNING,
"Warning: Setting thread priority to %d failed with error %lu\n",
- win_priority(priority), GetLastError ());
+ win_priority (priority), GetLastError ());
return old_prio;
}
+/*
+ * Original description from BSD code:
+ *
+ * General sleep call. Suspends the current process until a wakeup is
+ * performed on the specified identifier. The process will then be made
+ * runnable with the specified priority. Sleeps at most timo/hz seconds
+ * (0 means no timeout). If pri includes PCATCH flag, signals are checked
+ * before and after sleeping, else signals are not checked. Returns 0 if
+ * awakened, EWOULDBLOCK if the timeout expires. If PCATCH is set and a
+ * signal needs to be delivered, ERESTART is returned if the current system
+ * call should be restarted if possible, and EINTR is returned if the system
+ * call should be interrupted by the signal (return EINTR).
+ *
+ * The mutex argument is exited before the caller is suspended, and
+ * entered before msleep returns. If priority includes the PDROP
+ * flag the mutex is not entered before returning.
+ */
+static HANDLE msleep_glob_evt;
+
+void
+msleep_init (void)
+{
+ msleep_glob_evt = CreateEvent (NULL, TRUE, FALSE, NULL);
+ if (!msleep_glob_evt)
+ panic ("CreateEvent in msleep_init failed: %E");
+}
+
int
_msleep (void *ident, struct mtx *mtx, int priority,
const char *wmesg, int timo, struct thread *td)
@@ -188,7 +188,13 @@ _msleep (void *ident, struct mtx *mtx, int priority,
if (mtx)
mtx_unlock (mtx);
int old_priority = set_priority (priority);
- HANDLE obj[4] = { evt, td->client->handle (), msleep_glob_evt, td->client->signal_arrived () };
+ HANDLE obj[4] =
+ {
+ evt,
+ msleep_glob_evt,
+ td->client->handle (),
+ td->client->signal_arrived ()
+ };
/* PCATCH handling. If PCATCH is given and signal_arrived is a valid
handle, then it's used in the WaitFor call and EINTR is returned. */
int obj_cnt = 3;
@@ -200,10 +206,10 @@ _msleep (void *ident, struct mtx *mtx, int priority,
case WAIT_OBJECT_0: /* wakeup() has been called. */
ret = 0;
break;
- case WAIT_OBJECT_0 + 2: /* Shutdown event (triggered by wakeup_all). */
+ case WAIT_OBJECT_0 + 1: /* Shutdown event (triggered by wakeup_all). */
priority |= PDROP;
/*FALLTHRU*/
- case WAIT_OBJECT_0 + 1: /* The dependent process has exited. */
+ case WAIT_OBJECT_0 + 2: /* The dependent process has exited. */
ret = EIDRM;
break;
case WAIT_OBJECT_0 + 3: /* Signal for calling process arrived. */