diff options
author | Roland McGrath <roland@hack.frob.com> | 2015-06-24 17:43:32 -0700 |
---|---|---|
committer | Roland McGrath <roland@hack.frob.com> | 2015-06-24 17:43:32 -0700 |
commit | 86edd44f04891c0bd0fd347cba4bfc2a13d94377 (patch) | |
tree | 257717a820105a3e3543328afbf12ea5f1f529e0 | |
parent | a7fcc2f8edb26e4d54b6a740aaa3f3bb0caebd14 (diff) | |
download | glibc-86edd44f04891c0bd0fd347cba4bfc2a13d94377.zip glibc-86edd44f04891c0bd0fd347cba4bfc2a13d94377.tar.gz glibc-86edd44f04891c0bd0fd347cba4bfc2a13d94377.tar.bz2 |
Use unsigned types for counters in AIO code.
-rw-r--r-- | ChangeLog | 11 | ||||
-rw-r--r-- | sysdeps/nptl/aio_misc.h | 4 | ||||
-rw-r--r-- | sysdeps/pthread/aio_misc.h | 2 | ||||
-rw-r--r-- | sysdeps/pthread/aio_suspend.c | 12 | ||||
-rw-r--r-- | sysdeps/pthread/lio_listio.c | 6 |
5 files changed, 23 insertions, 12 deletions
@@ -1,3 +1,14 @@ +2015-06-24 Roland McGrath <roland@hack.frob.com> + + * sysdeps/pthread/aio_misc.h (struct waitlist): Change type of field + counterp to 'volatile unsigned int *'. + * sysdeps/pthread/aio_suspend.c [DONT_NEED_AIO_MISC_COND] + (do_aio_misc_wait): Give argument CNTR type 'unsigned int *'. + (aio_suspend): Give local variable CNTR type 'unsigned int'. + * sysdeps/pthread/lio_listio.c (lio_listio_internal): + Give local variable TOTAL type 'volatile unsigned int'. + (struct async_waitlist): Change type of field counter to 'unsigned int'. + 2015-06-24 H.J. Lu <hongjiu.lu@intel.com> [BZ #18383] diff --git a/sysdeps/nptl/aio_misc.h b/sysdeps/nptl/aio_misc.h index fb69b0f..d5d1c08 100644 --- a/sysdeps/nptl/aio_misc.h +++ b/sysdeps/nptl/aio_misc.h @@ -34,8 +34,8 @@ #define AIO_MISC_WAIT(result, futex, timeout, cancel) \ do { \ - volatile int *futexaddr = &futex; \ - int oldval = futex; \ + volatile unsigned int *futexaddr = &futex; \ + unsigned int oldval = futex; \ \ if (oldval != 0) \ { \ diff --git a/sysdeps/pthread/aio_misc.h b/sysdeps/pthread/aio_misc.h index ffb0983..5d3fb61 100644 --- a/sysdeps/pthread/aio_misc.h +++ b/sysdeps/pthread/aio_misc.h @@ -51,7 +51,7 @@ struct waitlist #endif int *result; - volatile int *counterp; + volatile unsigned int *counterp; /* The next field is used in asynchronous `lio_listio' operations. */ struct sigevent *sigevp; #ifdef BROKEN_THREAD_SIGNALS diff --git a/sysdeps/pthread/aio_suspend.c b/sysdeps/pthread/aio_suspend.c index 920f18a..641eafb 100644 --- a/sysdeps/pthread/aio_suspend.c +++ b/sysdeps/pthread/aio_suspend.c @@ -94,13 +94,13 @@ cleanup (void *arg) #ifdef DONT_NEED_AIO_MISC_COND static int __attribute__ ((noinline)) -do_aio_misc_wait(int *cntr, const struct timespec *timeout) +do_aio_misc_wait (unsigned int *cntr, const struct timespec *timeout) { - int result = 0; + int result = 0; - AIO_MISC_WAIT(result, *cntr, timeout, 1); + AIO_MISC_WAIT (result, *cntr, timeout, 1); - return result; + return result; } #endif @@ -124,7 +124,7 @@ aio_suspend (list, nent, timeout) int cnt; bool any = false; int result = 0; - int cntr = 1; + unsigned int cntr = 1; /* Request the mutex. */ pthread_mutex_lock (&__aio_requests_mutex); @@ -180,7 +180,7 @@ aio_suspend (list, nent, timeout) pthread_cleanup_push (cleanup, &clparam); #ifdef DONT_NEED_AIO_MISC_COND - result = do_aio_misc_wait(&cntr, timeout); + result = do_aio_misc_wait (&cntr, timeout); #else if (timeout == NULL) result = pthread_cond_wait (&cond, &__aio_requests_mutex); diff --git a/sysdeps/pthread/lio_listio.c b/sysdeps/pthread/lio_listio.c index bfbf221..ac7ce40 100644 --- a/sysdeps/pthread/lio_listio.c +++ b/sysdeps/pthread/lio_listio.c @@ -35,7 +35,7 @@ /* We need this special structure to handle asynchronous I/O. */ struct async_waitlist { - int counter; + unsigned int counter; struct sigevent sigev; struct waitlist list[0]; }; @@ -61,7 +61,7 @@ lio_listio_internal (int mode, struct aiocb *const list[], int nent, struct sigevent defsigev; struct requestlist *requests[nent]; int cnt; - volatile int total = 0; + volatile unsigned int total = 0; int result = 0; if (sig == NULL) @@ -83,7 +83,7 @@ lio_listio_internal (int mode, struct aiocb *const list[], int nent, requests[cnt] = __aio_enqueue_request ((aiocb_union *) list[cnt], (list[cnt]->aio_lio_opcode - | LIO_OPCODE_BASE)); + | LIO_OPCODE_BASE)); if (requests[cnt] != NULL) /* Successfully enqueued. */ |