[vlc-commits] threads: use unsigned values for futex

Rémi Denis-Courmont git at videolan.org
Wed Jun 1 21:57:08 CEST 2016


vlc | branch: master | Rémi Denis-Courmont <remi at remlab.net> | Wed Jun  1 22:06:02 2016 +0300| [46be1d0d7dc3c394088a65fe6dc2ba9bb004a3f2] | committer: Rémi Denis-Courmont

threads: use unsigned values for futex

Linux kernel might not care about signed overflow being undefined in
ISO C, but VLC has to care (because compilers do).

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=46be1d0d7dc3c394088a65fe6dc2ba9bb004a3f2
---

 include/vlc_threads.h |    4 ++--
 src/linux/thread.c    |   10 +++++-----
 src/win32/thread.c    |    4 ++--
 3 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/include/vlc_threads.h b/include/vlc_threads.h
index c06c69b..0f4aefe 100644
--- a/include/vlc_threads.h
+++ b/include/vlc_threads.h
@@ -612,7 +612,7 @@ VLC_API void *vlc_threadvar_get(vlc_threadvar_t);
  * \param addr address to check for
  * \param val value to match at the address
  */
-void vlc_addr_wait(void *addr, int val);
+void vlc_addr_wait(void *addr, unsigned val);
 
 /**
  * Waits on an address with a time-out.
@@ -628,7 +628,7 @@ void vlc_addr_wait(void *addr, int val);
  * \return true if the function was woken up before the time-out,
  * false if the time-out elapsed.
  */
-bool vlc_addr_timedwait(void *addr, int val, mtime_t delay);
+bool vlc_addr_timedwait(void *addr, unsigned val, mtime_t delay);
 
 /**
  * Wakes up one thread on an address.
diff --git a/src/linux/thread.c b/src/linux/thread.c
index db38cae..20da296 100644
--- a/src/linux/thread.c
+++ b/src/linux/thread.c
@@ -47,8 +47,8 @@ unsigned long vlc_thread_id(void)
      return tid;
 }
 
-static int sys_futex(void *addr, int op, int val, const struct timespec *to,
-                     void *addr2, int val3)
+static int sys_futex(void *addr, int op, unsigned val,
+                     const struct timespec *to, void *addr2, int val3)
 {
     return syscall(__NR_futex, addr, op, val, to, addr2, val3);
 }
@@ -58,7 +58,7 @@ static int vlc_futex_wake(void *addr, int nr)
     return sys_futex(addr, FUTEX_WAKE_PRIVATE, nr, NULL, NULL, 0);
 }
 
-static int vlc_futex_wait(void *addr, int val, const struct timespec *to)
+static int vlc_futex_wait(void *addr, unsigned val, const struct timespec *to)
 {
     return sys_futex(addr, FUTEX_WAIT_PRIVATE, val, to, NULL, 0);
 }
@@ -73,12 +73,12 @@ void vlc_addr_broadcast(void *addr)
     vlc_futex_wake(addr, INT_MAX);
 }
 
-void vlc_addr_wait(void *addr, int val)
+void vlc_addr_wait(void *addr, unsigned val)
 {
     vlc_futex_wait(addr, val, NULL);
 }
 
-bool vlc_addr_timedwait(void *addr, int val, mtime_t delay)
+bool vlc_addr_timedwait(void *addr, unsigned val, mtime_t delay)
 {
     lldiv_t d = lldiv(delay, CLOCK_FREQ);
     struct timespec ts = { d.quot, d.rem * (1000000000 / CLOCK_FREQ) };
diff --git a/src/win32/thread.c b/src/win32/thread.c
index 01a8a46..8d74d6f 100644
--- a/src/win32/thread.c
+++ b/src/win32/thread.c
@@ -475,12 +475,12 @@ static void WINAPI WakeByAddressFallback(void *addr)
 }
 #endif
 
-void vlc_addr_wait(void *addr, int val)
+void vlc_addr_wait(void *addr, unsigned val)
 {
     WaitOnAddress(addr, &val, sizeof (val), -1);
 }
 
-bool vlc_addr_timedwait(void *addr, int val, mtime_t delay)
+bool vlc_addr_timedwait(void *addr, unsigned val, mtime_t delay)
 {
     delay = (delay + 999) / 1000;
 



More information about the vlc-commits mailing list