# HG changeset patch # User Debayan Ghosh # Date 1513009691 0 # Node ID 057adb2a9d2353a61caa9555866b90b0f0940547 # Parent e4c21e4172773fa0df7b356da9bf2ea852634a66 Use sysconf to determine cacheline size at runtime. Determine cacheline size at runtime if supported using sysconf(_SC_LEVEL1_DCACHE_LINESIZE). In case not supported, fallback to compile time defaults. diff -r e4c21e417277 -r 057adb2a9d23 auto/unix --- a/auto/unix Mon Dec 11 15:05:35 2017 +0000 +++ b/auto/unix Mon Dec 11 16:28:11 2017 +0000 @@ -964,6 +964,16 @@ . auto/feature +ngx_feature="sysconf(_SC_LEVEL1_DCACHE_LINESIZE)" +ngx_feature_name="NGX_HAVE_LEVEL1_DCACHE_LINESIZE" +ngx_feature_run=no +ngx_feature_incs= +ngx_feature_path= +ngx_feature_libs= +ngx_feature_test="sysconf(_SC_LEVEL1_DCACHE_LINESIZE)" +. auto/feature + + ngx_feature="openat(), fstatat()" ngx_feature_name="NGX_HAVE_OPENAT" ngx_feature_run=no diff -r e4c21e417277 -r 057adb2a9d23 src/os/unix/ngx_posix_init.c --- a/src/os/unix/ngx_posix_init.c Mon Dec 11 15:05:35 2017 +0000 +++ b/src/os/unix/ngx_posix_init.c Mon Dec 11 16:28:11 2017 +0000 @@ -36,6 +36,9 @@ { ngx_time_t *tp; ngx_uint_t n; +#if (NGX_HAVE_LEVEL1_DCACHE_LINESIZE) + long size; +#endif #if (NGX_HAVE_OS_SPECIFIC_INIT) if (ngx_os_specific_init(log) != NGX_OK) { @@ -62,6 +65,13 @@ ngx_ncpu = 1; } +#if (NGX_HAVE_LEVEL1_DCACHE_LINESIZE) + size = sysconf(_SC_LEVEL1_DCACHE_LINESIZE); + if (size > 0) { + ngx_cacheline_size = size; + } +#endif + ngx_cpuinfo(); if (getrlimit(RLIMIT_NOFILE, &rlmt) == -1) {