]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
STABLE12-linux-note-we-use-interruptible-sleeps-in-non-compliant-manner-20020731
authorDerrick Brashear <shadow@dementia.org>
Wed, 31 Jul 2002 23:00:02 +0000 (23:00 +0000)
committerDerrick Brashear <shadow@dementia.org>
Wed, 31 Jul 2002 23:00:02 +0000 (23:00 +0000)
based on discussion with David Howells of RedHat

(cherry picked from commit f063c0db2109b3e089c54b4c6dd948bbd72a0ab1)

src/afs/LINUX/osi_sleep.c
src/rx/LINUX/rx_kmutex.h

index 0247f45d4b18a6a350b67939e18a3b9a9c1f83b4..635dd122408d0e467fc57e1f7960fbb2d7c35a37 100644 (file)
@@ -160,8 +160,13 @@ static void afs_addevent(char *event)
 /* Release the specified event */
 #define relevent(evp) ((evp)->refcount--)
 
-/* afs_osi_Sleep -- waits for an event to be notified. */
-
+/* afs_osi_Sleep -- waits for an event to be notified, ignoring signals.
+ * - NOTE: that on Linux, there are circumstances in which TASK_INTERRUPTIBLE
+ *   can wake up, even if all signals are blocked
+ * - TODO: handle signals correctly by passing an indication back to the
+ *   caller that the wait has been interrupted and the stack should be cleaned
+ *   up preparatory to signal delivery
+ */
 void afs_osi_Sleep(char *event)
 {
     struct afs_event *evp;
index 1ff5b700f2501866780ee383a4340e4633ce567a..783280f662279d1ce92de37202eaad00cd9a3326 100644 (file)
@@ -97,9 +97,13 @@ static inline void MUTEX_EXIT(afs_kmutex_t *l)
 #endif
 #define CV_DESTROY(cv)
 
-/* CV_WAIT and CV_TIMEDWAIT rely on the fact that the Linux kernel has
- * a global lock. Thus we can safely drop our locks before calling the
- * kernel sleep services.
+/* CV_WAIT and CV_TIMEDWAIT sleep until the specified event occurs, or, in the
+ * case of CV_TIMEDWAIT, until the specified timeout occurs.
+ * - NOTE: that on Linux, there are circumstances in which TASK_INTERRUPTIBLE
+ *   can wake up, even if all signals are blocked
+ * - TODO: handle signals correctly by passing an indication back to the
+ *   caller that the wait has been interrupted and the stack should be cleaned
+ *   up preparatory to signal delivery
  */
 static inline int CV_WAIT(afs_kcondvar_t *cv, afs_kmutex_t *l)
 {