mirror of
https://github.com/allinurl/goaccess.git
synced 2025-06-18 14:35:34 -04:00
Replaced older deprecated __sync calls for atomic ones.
Some checks failed
C build and Test / build (, macos-14, brew update && brew install ncurses gettext autoconf automake openssl@3 libmaxminddb jq) (push) Has been cancelled
C build and Test / build (, macos-latest, brew install ncurses gettext autoconf automake libmaxminddb openssl@3 jq) (push) Has been cancelled
C build and Test / build (, ubuntu-latest, sudo apt-get update && sudo apt-get install -y build-essential autoconf gettext autopoint libncursesw5-dev libssl-dev git libmaxminddb-dev jq) (push) Has been cancelled
C build and Test / build (--enable-debug, macos-14, brew update && brew install ncurses gettext autoconf automake openssl@3 libmaxminddb jq) (push) Has been cancelled
C build and Test / build (--enable-debug, macos-latest, brew install ncurses gettext autoconf automake libmaxminddb openssl@3 jq) (push) Has been cancelled
C build and Test / build (--enable-debug, ubuntu-latest, sudo apt-get update && sudo apt-get install -y build-essential autoconf gettext autopoint libncursesw5-dev libssl-dev git libmaxminddb-dev jq) (push) Has been cancelled
C build and Test / build (--enable-utf8 --enable-debug --with-getline, macos-14, brew update && brew install ncurses gettext autoconf automake openssl@3 libmaxminddb jq) (push) Has been cancelled
C build and Test / build (--enable-utf8 --enable-debug --with-getline, macos-latest, brew install ncurses gettext autoconf automake libmaxminddb openssl@3 jq) (push) Has been cancelled
C build and Test / build (--enable-utf8 --enable-debug --with-getline, ubuntu-latest, sudo apt-get update && sudo apt-get install -y build-essential autoconf gettext autopoint libncursesw5-dev libssl-dev git libmaxminddb-dev jq) (push) Has been cancelled
C build and Test / build (--enable-utf8 --with-getline --enable-asan, macos-14, brew update && brew install ncurses gettext autoconf automake openssl@3 libmaxminddb jq) (push) Has been cancelled
C build and Test / build (--enable-utf8 --with-getline --enable-asan, macos-latest, brew install ncurses gettext autoconf automake libmaxminddb openssl@3 jq) (push) Has been cancelled
C build and Test / build (--enable-utf8 --with-getline --enable-asan, ubuntu-latest, sudo apt-get update && sudo apt-get install -y build-essential autoconf gettext autopoint libncursesw5-dev libssl-dev git libmaxminddb-dev jq) (push) Has been cancelled
C build and Test / build (--with-getline --enable-asan, macos-14, brew update && brew install ncurses gettext autoconf automake openssl@3 libmaxminddb jq) (push) Has been cancelled
C build and Test / build (--with-getline --enable-asan, macos-latest, brew install ncurses gettext autoconf automake libmaxminddb openssl@3 jq) (push) Has been cancelled
C build and Test / build (--with-getline --enable-asan, ubuntu-latest, sudo apt-get update && sudo apt-get install -y build-essential autoconf gettext autopoint libncursesw5-dev libssl-dev git libmaxminddb-dev jq) (push) Has been cancelled
Docker / test (push) Has been cancelled
Docker / push (push) Has been cancelled
Semgrep / Scan (push) Has been cancelled
Some checks failed
C build and Test / build (, macos-14, brew update && brew install ncurses gettext autoconf automake openssl@3 libmaxminddb jq) (push) Has been cancelled
C build and Test / build (, macos-latest, brew install ncurses gettext autoconf automake libmaxminddb openssl@3 jq) (push) Has been cancelled
C build and Test / build (, ubuntu-latest, sudo apt-get update && sudo apt-get install -y build-essential autoconf gettext autopoint libncursesw5-dev libssl-dev git libmaxminddb-dev jq) (push) Has been cancelled
C build and Test / build (--enable-debug, macos-14, brew update && brew install ncurses gettext autoconf automake openssl@3 libmaxminddb jq) (push) Has been cancelled
C build and Test / build (--enable-debug, macos-latest, brew install ncurses gettext autoconf automake libmaxminddb openssl@3 jq) (push) Has been cancelled
C build and Test / build (--enable-debug, ubuntu-latest, sudo apt-get update && sudo apt-get install -y build-essential autoconf gettext autopoint libncursesw5-dev libssl-dev git libmaxminddb-dev jq) (push) Has been cancelled
C build and Test / build (--enable-utf8 --enable-debug --with-getline, macos-14, brew update && brew install ncurses gettext autoconf automake openssl@3 libmaxminddb jq) (push) Has been cancelled
C build and Test / build (--enable-utf8 --enable-debug --with-getline, macos-latest, brew install ncurses gettext autoconf automake libmaxminddb openssl@3 jq) (push) Has been cancelled
C build and Test / build (--enable-utf8 --enable-debug --with-getline, ubuntu-latest, sudo apt-get update && sudo apt-get install -y build-essential autoconf gettext autopoint libncursesw5-dev libssl-dev git libmaxminddb-dev jq) (push) Has been cancelled
C build and Test / build (--enable-utf8 --with-getline --enable-asan, macos-14, brew update && brew install ncurses gettext autoconf automake openssl@3 libmaxminddb jq) (push) Has been cancelled
C build and Test / build (--enable-utf8 --with-getline --enable-asan, macos-latest, brew install ncurses gettext autoconf automake libmaxminddb openssl@3 jq) (push) Has been cancelled
C build and Test / build (--enable-utf8 --with-getline --enable-asan, ubuntu-latest, sudo apt-get update && sudo apt-get install -y build-essential autoconf gettext autopoint libncursesw5-dev libssl-dev git libmaxminddb-dev jq) (push) Has been cancelled
C build and Test / build (--with-getline --enable-asan, macos-14, brew update && brew install ncurses gettext autoconf automake openssl@3 libmaxminddb jq) (push) Has been cancelled
C build and Test / build (--with-getline --enable-asan, macos-latest, brew install ncurses gettext autoconf automake libmaxminddb openssl@3 jq) (push) Has been cancelled
C build and Test / build (--with-getline --enable-asan, ubuntu-latest, sudo apt-get update && sudo apt-get install -y build-essential autoconf gettext autopoint libncursesw5-dev libssl-dev git libmaxminddb-dev jq) (push) Has been cancelled
Docker / test (push) Has been cancelled
Docker / push (push) Has been cancelled
Semgrep / Scan (push) Has been cancelled
Should address #2836 and help compile in gcc 14 and ppc.
This commit is contained in:
parent
b089631dae
commit
11ac167c94
@ -1017,7 +1017,7 @@ inc_ii32 (khash_t (ii32) *hash, uint32_t key, uint32_t inc) {
|
|||||||
kh_val (hash, k) = 0;
|
kh_val (hash, k) = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
return __sync_add_and_fetch (&kh_val (hash, k), inc);
|
return __atomic_add_fetch (&kh_val (hash, k), inc, __ATOMIC_SEQ_CST);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Increase a uint64_t value given a string key.
|
/* Increase a uint64_t value given a string key.
|
||||||
@ -1110,7 +1110,7 @@ inc_si32 (khash_t (si32) *hash, const char *key, uint32_t inc) {
|
|||||||
kh_val (hash, k) = 0;
|
kh_val (hash, k) = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
return __sync_add_and_fetch (&kh_val (hash, k), inc);
|
return __atomic_add_fetch (&kh_val (hash, k), inc, __ATOMIC_SEQ_CST);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Insert a string key and auto increment int value.
|
/* Insert a string key and auto increment int value.
|
||||||
@ -1202,7 +1202,7 @@ get_si32 (khash_t (si32) *hash, const char *key) {
|
|||||||
k = kh_get (si32, hash, key);
|
k = kh_get (si32, hash, key);
|
||||||
/* key found, return current value */
|
/* key found, return current value */
|
||||||
if (k != kh_end (hash))
|
if (k != kh_end (hash))
|
||||||
return __sync_add_and_fetch (&kh_val (hash, k), 0);
|
return __atomic_load_n (&kh_val (hash, k), __ATOMIC_SEQ_CST);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -1300,7 +1300,7 @@ get_ii32 (khash_t (ii32) *hash, uint32_t key) {
|
|||||||
k = kh_get (ii32, hash, key);
|
k = kh_get (ii32, hash, key);
|
||||||
/* key found, return current value */
|
/* key found, return current value */
|
||||||
if (k != kh_end (hash))
|
if (k != kh_end (hash))
|
||||||
return __sync_add_and_fetch (&kh_val (hash, k), 0);
|
return __atomic_load_n (&kh_val (hash, k), __ATOMIC_SEQ_CST);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -610,7 +610,7 @@ count_valid (int numdate) {
|
|||||||
/* Keep track of all valid and processed log strings. */
|
/* Keep track of all valid and processed log strings. */
|
||||||
void
|
void
|
||||||
count_process (GLog *glog) {
|
count_process (GLog *glog) {
|
||||||
__sync_add_and_fetch (&glog->processed, 1);
|
__atomic_add_fetch (&glog->processed, 1, __ATOMIC_SEQ_CST);
|
||||||
lock_spinner ();
|
lock_spinner ();
|
||||||
ht_inc_cnt_overall ("total_requests", 1);
|
ht_inc_cnt_overall ("total_requests", 1);
|
||||||
unlock_spinner ();
|
unlock_spinner ();
|
||||||
|
52
src/parser.c
52
src/parser.c
@ -1195,7 +1195,11 @@ parse_specifier (GLogItem *logitem, const char **str, const char *p, const char
|
|||||||
if (tkn == bEnd || *bEnd != '\0' || errno == ERANGE)
|
if (tkn == bEnd || *bEnd != '\0' || errno == ERANGE)
|
||||||
bandw = 0;
|
bandw = 0;
|
||||||
logitem->resp_size = bandw;
|
logitem->resp_size = bandw;
|
||||||
__sync_bool_compare_and_swap (&conf.bandwidth, 0, 1); /* set flag */
|
{
|
||||||
|
int expected = 0;
|
||||||
|
__atomic_compare_exchange_n (&conf.bandwidth, &expected, 1, false, __ATOMIC_SEQ_CST,
|
||||||
|
__ATOMIC_SEQ_CST);
|
||||||
|
}
|
||||||
free (tkn);
|
free (tkn);
|
||||||
break;
|
break;
|
||||||
/* referrer */
|
/* referrer */
|
||||||
@ -1264,7 +1268,12 @@ parse_specifier (GLogItem *logitem, const char **str, const char *p, const char
|
|||||||
logitem->serve_time = (serve_secs > 0) ? serve_secs * MILS : 0;
|
logitem->serve_time = (serve_secs > 0) ? serve_secs * MILS : 0;
|
||||||
|
|
||||||
/* Determine if time-served data was stored on-disk. */
|
/* Determine if time-served data was stored on-disk. */
|
||||||
__sync_bool_compare_and_swap (&conf.serve_usecs, 0, 1); /* set flag */
|
{
|
||||||
|
int expected = 0;
|
||||||
|
__atomic_compare_exchange_n (&conf.serve_usecs, &expected, 1, false, __ATOMIC_SEQ_CST,
|
||||||
|
__ATOMIC_SEQ_CST);
|
||||||
|
}
|
||||||
|
|
||||||
free (tkn);
|
free (tkn);
|
||||||
break;
|
break;
|
||||||
/* time taken to serve the request, in seconds with a milliseconds
|
/* time taken to serve the request, in seconds with a milliseconds
|
||||||
@ -1287,7 +1296,11 @@ parse_specifier (GLogItem *logitem, const char **str, const char *p, const char
|
|||||||
logitem->serve_time = (serve_secs > 0) ? serve_secs * SECS : 0;
|
logitem->serve_time = (serve_secs > 0) ? serve_secs * SECS : 0;
|
||||||
|
|
||||||
/* Determine if time-served data was stored on-disk. */
|
/* Determine if time-served data was stored on-disk. */
|
||||||
__sync_bool_compare_and_swap (&conf.serve_usecs, 0, 1); /* set flag */
|
{
|
||||||
|
int expected = 0;
|
||||||
|
__atomic_compare_exchange_n (&conf.serve_usecs, &expected, 1, false, __ATOMIC_SEQ_CST,
|
||||||
|
__ATOMIC_SEQ_CST);
|
||||||
|
}
|
||||||
free (tkn);
|
free (tkn);
|
||||||
break;
|
break;
|
||||||
/* time taken to serve the request, in microseconds */
|
/* time taken to serve the request, in microseconds */
|
||||||
@ -1304,7 +1317,11 @@ parse_specifier (GLogItem *logitem, const char **str, const char *p, const char
|
|||||||
logitem->serve_time = serve_time;
|
logitem->serve_time = serve_time;
|
||||||
|
|
||||||
/* Determine if time-served data was stored on-disk. */
|
/* Determine if time-served data was stored on-disk. */
|
||||||
__sync_bool_compare_and_swap (&conf.serve_usecs, 0, 1); /* set flag */
|
{
|
||||||
|
int expected = 0;
|
||||||
|
__atomic_compare_exchange_n (&conf.serve_usecs, &expected, 1, false, __ATOMIC_SEQ_CST,
|
||||||
|
__ATOMIC_SEQ_CST);
|
||||||
|
}
|
||||||
free (tkn);
|
free (tkn);
|
||||||
break;
|
break;
|
||||||
/* time taken to serve the request, in nanoseconds */
|
/* time taken to serve the request, in nanoseconds */
|
||||||
@ -1323,7 +1340,11 @@ parse_specifier (GLogItem *logitem, const char **str, const char *p, const char
|
|||||||
logitem->serve_time = (serve_time > 0) ? serve_time / MILS : 0;
|
logitem->serve_time = (serve_time > 0) ? serve_time / MILS : 0;
|
||||||
|
|
||||||
/* Determine if time-served data was stored on-disk. */
|
/* Determine if time-served data was stored on-disk. */
|
||||||
__sync_bool_compare_and_swap (&conf.serve_usecs, 0, 1); /* set flag */
|
{
|
||||||
|
int expected = 0;
|
||||||
|
__atomic_compare_exchange_n (&conf.serve_usecs, &expected, 1, false, __ATOMIC_SEQ_CST,
|
||||||
|
__ATOMIC_SEQ_CST);
|
||||||
|
}
|
||||||
free (tkn);
|
free (tkn);
|
||||||
break;
|
break;
|
||||||
/* UMS: Krypto (TLS) "ECDHE-RSA-AES128-GCM-SHA256" */
|
/* UMS: Krypto (TLS) "ECDHE-RSA-AES128-GCM-SHA256" */
|
||||||
@ -1932,14 +1953,21 @@ parse_json_format (GLogItem *logitem, char *str) {
|
|||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
atomic_lpts_update (GLog *glog, GLogItem *logitem) {
|
atomic_lpts_update (GLog *glog, GLogItem *logitem) {
|
||||||
int64_t oldts = 0, newts = 0;
|
int64_t newts = mktime (&logitem->dt); // Get timestamp from logitem->dt
|
||||||
/* atomic update loop */
|
int64_t oldts = __atomic_load_n (&glog->lp.ts, __ATOMIC_SEQ_CST);
|
||||||
newts = mktime (&logitem->dt); // Get timestamp from logitem->dt
|
int64_t expected;
|
||||||
while (!__sync_bool_compare_and_swap (&glog->lp.ts, oldts, newts)) {
|
|
||||||
oldts = glog->lp.ts; /* Reread glog->lp.ts if CAS failed */
|
while (oldts < newts) { // Only update if new timestamp is later
|
||||||
if (oldts >= newts) {
|
expected = oldts;
|
||||||
break; /* No need to update if oldts is already greater */
|
// Attempt to update glog->lp.ts from expected (oldts) to newts.
|
||||||
|
if (__atomic_compare_exchange_n (&glog->lp.ts, &expected, newts,
|
||||||
|
false, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST)) {
|
||||||
|
break; // Successful update.
|
||||||
}
|
}
|
||||||
|
// If the CAS failed, expected now holds the current glog->lp.ts.
|
||||||
|
oldts = expected;
|
||||||
|
if (oldts >= newts)
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return newts;
|
return newts;
|
||||||
|
Loading…
Reference in New Issue
Block a user