[PATCH] gw_thread_sleep return the sleep result

Wilfried Goesgens <[email protected]>
Newsgroups gmane.comp.mobile.kannel.devel
Message-ID <[email protected]>
to get to know whether you where woken up from sleep, 
or the sleep endet naturaly, the following patch is needed:

(i need this, to determine, whether i was woken up from a thread
doing tcdrain, or if the tcdrain system call gets stuck. the
systemcall doesn't provide the ability of a timeout.)

no funtionality change, just documentation and actually 
do return ret.

to header:

gwlib/gwthread.h      2005-04-13 18:13:38.000000000 +0200
+++ gwthread.h  2005-04-13 19:47:39.000000000 +0200
@@ -139,8 +139,12 @@ int gwthread_pollfd(int fd, int events, 
 int gwthread_poll(struct pollfd *fds, long numfds, double timeout);
 
 /* Sleep until "seconds" seconds have elapsed, or until another thread
- * calls gwthread_wakeup on us.  Fractional seconds are allowed. */
-void gwthread_sleep(double seconds);
+ * calls gwthread_wakeup on us.  Fractional seconds are allowed. 
+ * as we need the return of poll, get it here. 
+ * returns 0 on Timeout, positive value if the thread was 
+ * awakened by another thread. -1 on error.
+ */
+int gwthread_sleep(double seconds);
 
 /*
  * Check wheather this thread should handle the given signal.



to code:

gwlib/gwthread-pthread.c      2005-04-13 18:13:38.000000000 +0200
+++ gwthread-pthread.c  2005-04-13 19:50:13.000000000 +0200
@@ -730,7 +730,7 @@ int gwthread_poll(struct pollfd *fds, lo
 }
 
 
-void gwthread_sleep(double seconds)
+int gwthread_sleep(double seconds)
 {
     struct pollfd pollfd;
     struct threadinfo *threadinfo;
@@ -755,6 +755,7 @@ void gwthread_sleep(double seconds)
     if (ret == 1) {
         flushpipe(pollfd.fd);
     }
+       return ret;
 }
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.