aboutsummaryrefslogtreecommitdiff
path: root/src/os/unix/ngx_darwin_init.c
diff options
context:
space:
mode:
authorPiotr Sikora <piotr@aviatrix.com>2024-02-26 20:00:40 +0000
committerPiotr Sikora <piotr@aviatrix.com>2024-02-26 20:00:40 +0000
commit1bc19fe2db3afc7a72eb0a91e554aee9160e0d00 (patch)
tree56705869fee3caeff386a8102dc16caa07753957 /src/os/unix/ngx_darwin_init.c
parent818f98da1c46785bc23a99efff653febb1e35ac2 (diff)
downloadnginx-1bc19fe2db3afc7a72eb0a91e554aee9160e0d00.tar.gz
nginx-1bc19fe2db3afc7a72eb0a91e554aee9160e0d00.zip
Detect cache line size at runtime on macOS.
Notably, Apple Silicon CPUs have 128 byte cache line size, which is twice the default configured for generic aarch64. Signed-off-by: Piotr Sikora <piotr@aviatrix.com>
Diffstat (limited to 'src/os/unix/ngx_darwin_init.c')
-rw-r--r--src/os/unix/ngx_darwin_init.c16
1 files changed, 11 insertions, 5 deletions
diff --git a/src/os/unix/ngx_darwin_init.c b/src/os/unix/ngx_darwin_init.c
index aabe02ff9..70748ee57 100644
--- a/src/os/unix/ngx_darwin_init.c
+++ b/src/os/unix/ngx_darwin_init.c
@@ -9,11 +9,12 @@
#include <ngx_core.h>
-char ngx_darwin_kern_ostype[16];
-char ngx_darwin_kern_osrelease[128];
-int ngx_darwin_hw_ncpu;
-int ngx_darwin_kern_ipc_somaxconn;
-u_long ngx_darwin_net_inet_tcp_sendspace;
+char ngx_darwin_kern_ostype[16];
+char ngx_darwin_kern_osrelease[128];
+int ngx_darwin_hw_ncpu;
+int ngx_darwin_kern_ipc_somaxconn;
+u_long ngx_darwin_net_inet_tcp_sendspace;
+int64_t ngx_darwin_hw_cachelinesize;
ngx_uint_t ngx_debug_malloc;
@@ -56,6 +57,10 @@ sysctl_t sysctls[] = {
&ngx_darwin_kern_ipc_somaxconn,
sizeof(ngx_darwin_kern_ipc_somaxconn), 0 },
+ { "hw.cachelinesize",
+ &ngx_darwin_hw_cachelinesize,
+ sizeof(ngx_darwin_hw_cachelinesize), 0 },
+
{ NULL, NULL, 0, 0 }
};
@@ -155,6 +160,7 @@ ngx_os_specific_init(ngx_log_t *log)
return NGX_ERROR;
}
+ ngx_cacheline_size = ngx_darwin_hw_cachelinesize;
ngx_ncpu = ngx_darwin_hw_ncpu;
if (ngx_darwin_kern_ipc_somaxconn > 32767) {