Page MenuHomeFreeBSD

D45574.id139798.diff
No OneTemporary

D45574.id139798.diff

diff --git a/usr.bin/time/time.c b/usr.bin/time/time.c
--- a/usr.bin/time/time.c
+++ b/usr.bin/time/time.c
@@ -40,6 +40,7 @@
#include <errno.h>
#include <locale.h>
#include <signal.h>
+#include <stdatomic.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
@@ -54,7 +55,7 @@
static void siginfo(int);
static void usage(void) __dead2;
-static volatile sig_atomic_t siginfo_recvd;
+static sig_atomic_t siginfo_recvd;
static char decimal_point;
static struct timespec before_ts;
static int hflag, pflag;
@@ -125,6 +126,7 @@
(void)signal(SIGINFO, siginfo);
(void)siginterrupt(SIGINFO, 1);
while (wait4(pid, &status, 0, &ru) != pid) {
+ atomic_signal_fence(memory_order_acquire);
if (siginfo_recvd) {
siginfo_recvd = 0;
if (clock_gettime(CLOCK_MONOTONIC, &after))
@@ -296,4 +298,5 @@
{
siginfo_recvd = 1;
+ atomic_signal_fence(memory_order_release);
}

File Metadata

Mime Type
text/plain
Expires
Tue, Oct 1, 12:21 AM (11 h, 58 s)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
13215158
Default Alt Text
D45574.id139798.diff (895 B)

Event Timeline