]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
MEDIUM: pollers: Use the new _HA_ATOMIC_* macros.
authorOlivier Houchard <ohouchard@haproxy.com>
Fri, 8 Mar 2019 17:49:54 +0000 (18:49 +0100)
committerOlivier Houchard <cognet@ci0.org>
Mon, 11 Mar 2019 16:02:38 +0000 (17:02 +0100)
Use the new _HA_ATOMIC_* macros and add barriers where needed.

src/ev_epoll.c
src/ev_kqueue.c
src/ev_poll.c
src/ev_select.c

index 0bb8c9f89a95590809036b06f55ec475dd948ae9..039327d5a999a8c3e3729b704e916c58432169a0 100644 (file)
@@ -72,7 +72,7 @@ static void _update_fd(int fd)
                if (!(fdtab[fd].thread_mask & tid_bit) || !(en & FD_EV_POLLED_RW)) {
                        /* fd removed from poll list */
                        opcode = EPOLL_CTL_DEL;
-                       HA_ATOMIC_AND(&polled_mask[fd], ~tid_bit);
+                       _HA_ATOMIC_AND(&polled_mask[fd], ~tid_bit);
                }
                else {
                        /* fd status changed */
@@ -82,7 +82,7 @@ static void _update_fd(int fd)
        else if ((fdtab[fd].thread_mask & tid_bit) && (en & FD_EV_POLLED_RW)) {
                /* new fd in the poll list */
                opcode = EPOLL_CTL_ADD;
-               HA_ATOMIC_OR(&polled_mask[fd], tid_bit);
+               _HA_ATOMIC_OR(&polled_mask[fd], tid_bit);
        }
        else {
                return;
@@ -116,7 +116,7 @@ REGPRM2 static void _do_poll(struct poller *p, int exp)
        for (updt_idx = 0; updt_idx < fd_nbupdt; updt_idx++) {
                fd = fd_updt[updt_idx];
 
-               HA_ATOMIC_AND(&fdtab[fd].update_mask, ~tid_bit);
+               _HA_ATOMIC_AND(&fdtab[fd].update_mask, ~tid_bit);
                if (!fdtab[fd].owner) {
                        activity[tid].poll_drop++;
                        continue;
@@ -186,7 +186,7 @@ REGPRM2 static void _do_poll(struct poller *p, int exp)
                        /* FD has been migrated */
                        activity[tid].poll_skip++;
                        epoll_ctl(epoll_fd[tid], EPOLL_CTL_DEL, fd, &ev);
-                       HA_ATOMIC_AND(&polled_mask[fd], ~tid_bit);
+                       _HA_ATOMIC_AND(&polled_mask[fd], ~tid_bit);
                        continue;
                }
 
@@ -208,7 +208,7 @@ REGPRM2 static void _do_poll(struct poller *p, int exp)
 
                /* always remap RDHUP to HUP as they're used similarly */
                if (e & EPOLLRDHUP) {
-                       HA_ATOMIC_OR(&cur_poller.flags, HAP_POLL_F_RDHUP);
+                       _HA_ATOMIC_OR(&cur_poller.flags, HAP_POLL_F_RDHUP);
                        n |= FD_POLL_HUP;
                }
                fd_update_events(fd, n);
index d09784770f8302e9832809bc8a89fa06af2d5653..674551e4d79acb7f3412e356559b6e4b6f4bba29 100644 (file)
@@ -51,7 +51,7 @@ static int _update_fd(int fd, int start)
                /* fd totally removed from poll list */
                EV_SET(&kev[changes++], fd, EVFILT_READ, EV_DELETE, 0, 0, NULL);
                EV_SET(&kev[changes++], fd, EVFILT_WRITE, EV_DELETE, 0, 0, NULL);
-               HA_ATOMIC_AND(&polled_mask[fd], ~tid_bit);
+               _HA_ATOMIC_AND(&polled_mask[fd], ~tid_bit);
        }
        else {
                /* OK fd has to be monitored, it was either added or changed */
@@ -66,7 +66,7 @@ static int _update_fd(int fd, int start)
                else if (polled_mask[fd] & tid_bit)
                        EV_SET(&kev[changes++], fd, EVFILT_WRITE, EV_DELETE, 0, 0, NULL);
 
-               HA_ATOMIC_OR(&polled_mask[fd], tid_bit);
+               _HA_ATOMIC_OR(&polled_mask[fd], tid_bit);
        }
        return changes;
 }
@@ -89,7 +89,7 @@ REGPRM2 static void _do_poll(struct poller *p, int exp)
        for (updt_idx = 0; updt_idx < fd_nbupdt; updt_idx++) {
                fd = fd_updt[updt_idx];
 
-               HA_ATOMIC_AND(&fdtab[fd].update_mask, ~tid_bit);
+               _HA_ATOMIC_AND(&fdtab[fd].update_mask, ~tid_bit);
                if (!fdtab[fd].owner) {
                        activity[tid].poll_drop++;
                        continue;
index 40bde873b5ddd9c90914b1af7adc5b18b9fdd4b5..863b8389720b6bbd91ca09b1a1cebb898a975696 100644 (file)
@@ -65,7 +65,7 @@ static void _update_fd(int fd, int *max_add_fd)
                /* fd totally removed from poll list */
                hap_fd_clr(fd, fd_evts[DIR_RD]);
                hap_fd_clr(fd, fd_evts[DIR_WR]);
-               HA_ATOMIC_AND(&polled_mask[fd], 0);
+               _HA_ATOMIC_AND(&polled_mask[fd], 0);
        }
        else {
                /* OK fd has to be monitored, it was either added or changed */
@@ -79,7 +79,7 @@ static void _update_fd(int fd, int *max_add_fd)
                else
                        hap_fd_set(fd, fd_evts[DIR_WR]);
 
-               HA_ATOMIC_OR(&polled_mask[fd], tid_bit);
+               _HA_ATOMIC_OR(&polled_mask[fd], tid_bit);
                if (fd > *max_add_fd)
                        *max_add_fd = fd;
        }
@@ -106,7 +106,7 @@ REGPRM2 static void _do_poll(struct poller *p, int exp)
        for (updt_idx = 0; updt_idx < fd_nbupdt; updt_idx++) {
                fd = fd_updt[updt_idx];
 
-               HA_ATOMIC_AND(&fdtab[fd].update_mask, ~tid_bit);
+               _HA_ATOMIC_AND(&fdtab[fd].update_mask, ~tid_bit);
                if (!fdtab[fd].owner) {
                        activity[tid].poll_drop++;
                        continue;
@@ -129,7 +129,7 @@ REGPRM2 static void _do_poll(struct poller *p, int exp)
                         * we don't need every thread ot take care of the
                         * update.
                         */
-                       HA_ATOMIC_AND(&fdtab[fd].update_mask, ~all_threads_mask);
+                       _HA_ATOMIC_AND(&fdtab[fd].update_mask, ~all_threads_mask);
                        done_update_polling(fd);
                } else
                        continue;
@@ -140,7 +140,7 @@ REGPRM2 static void _do_poll(struct poller *p, int exp)
 
        /* maybe we added at least one fd larger than maxfd */
        for (old_maxfd = maxfd; old_maxfd <= max_add_fd; ) {
-               if (HA_ATOMIC_CAS(&maxfd, &old_maxfd, max_add_fd + 1))
+               if (_HA_ATOMIC_CAS(&maxfd, &old_maxfd, max_add_fd + 1))
                        break;
        }
 
@@ -156,7 +156,7 @@ REGPRM2 static void _do_poll(struct poller *p, int exp)
                        new_maxfd--;
                if (new_maxfd >= old_maxfd)
                        break;
-       } while (!HA_ATOMIC_CAS(&maxfd, &old_maxfd, new_maxfd));
+       } while (!_HA_ATOMIC_CAS(&maxfd, &old_maxfd, new_maxfd));
 
        thread_harmless_now();
 
@@ -235,7 +235,7 @@ REGPRM2 static void _do_poll(struct poller *p, int exp)
 
                /* always remap RDHUP to HUP as they're used similarly */
                if (e & POLLRDHUP) {
-                       HA_ATOMIC_OR(&cur_poller.flags, HAP_POLL_F_RDHUP);
+                       _HA_ATOMIC_OR(&cur_poller.flags, HAP_POLL_F_RDHUP);
                        n |= FD_POLL_HUP;
                }
                fd_update_events(fd, n);
index f9b1215895a6d4d94bb098837e9144bc61f3081c..3591f1eb1f134b649c2b9e2cbeb3df9a844f7c37 100644 (file)
@@ -56,7 +56,7 @@ static void _update_fd(int fd, int *max_add_fd)
                /* fd totally removed from poll list */
                hap_fd_clr(fd, fd_evts[DIR_RD]);
                hap_fd_clr(fd, fd_evts[DIR_WR]);
-               HA_ATOMIC_AND(&polled_mask[fd], 0);
+               _HA_ATOMIC_AND(&polled_mask[fd], 0);
        }
        else {
                /* OK fd has to be monitored, it was either added or changed */
@@ -70,7 +70,7 @@ static void _update_fd(int fd, int *max_add_fd)
                else
                        hap_fd_set(fd, fd_evts[DIR_WR]);
 
-               HA_ATOMIC_OR(&polled_mask[fd], tid_bit);
+               _HA_ATOMIC_OR(&polled_mask[fd], tid_bit);
                if (fd > *max_add_fd)
                        *max_add_fd = fd;
        }
@@ -98,7 +98,7 @@ REGPRM2 static void _do_poll(struct poller *p, int exp)
        for (updt_idx = 0; updt_idx < fd_nbupdt; updt_idx++) {
                fd = fd_updt[updt_idx];
 
-               HA_ATOMIC_AND(&fdtab[fd].update_mask, ~tid_bit);
+               _HA_ATOMIC_AND(&fdtab[fd].update_mask, ~tid_bit);
                if (!fdtab[fd].owner) {
                        activity[tid].poll_drop++;
                        continue;
@@ -120,7 +120,7 @@ REGPRM2 static void _do_poll(struct poller *p, int exp)
                         * we don't need every thread ot take care of the
                         * update.
                         */
-                       HA_ATOMIC_AND(&fdtab[fd].update_mask, ~all_threads_mask);
+                       _HA_ATOMIC_AND(&fdtab[fd].update_mask, ~all_threads_mask);
                        done_update_polling(fd);
                } else
                        continue;
@@ -132,7 +132,7 @@ REGPRM2 static void _do_poll(struct poller *p, int exp)
 
        /* maybe we added at least one fd larger than maxfd */
        for (old_maxfd = maxfd; old_maxfd <= max_add_fd; ) {
-               if (HA_ATOMIC_CAS(&maxfd, &old_maxfd, max_add_fd + 1))
+               if (_HA_ATOMIC_CAS(&maxfd, &old_maxfd, max_add_fd + 1))
                        break;
        }
 
@@ -148,7 +148,7 @@ REGPRM2 static void _do_poll(struct poller *p, int exp)
                        new_maxfd--;
                if (new_maxfd >= old_maxfd)
                        break;
-       } while (!HA_ATOMIC_CAS(&maxfd, &old_maxfd, new_maxfd));
+       } while (!_HA_ATOMIC_CAS(&maxfd, &old_maxfd, new_maxfd));
 
        thread_harmless_now();