# Copyright (C) Igor Sysoev # Copyright (C) NGINX, Inc. NXT_SHM_PREFIX="/" # FreeBSD, Solaris, MacOSX nxt_feature="shm_open()" nxt_feature_name=NXT_HAVE_SHM_OPEN nxt_feature_run=yes nxt_feature_incs= nxt_feature_libs= nxt_feature_test="#include #include #include #include #include int main(void) { int ret; static char name[] = \"/unit.configure\"; shm_unlink(name); int fd = shm_open(name, O_CREAT | O_EXCL | O_RDWR, S_IRUSR | S_IWUSR); if (fd == -1) return 1; ret = (access(name, F_OK) == 0); shm_unlink(name); return ret; }" . auto/feature if [ $nxt_found = no ]; then # Linux and NetBSD 7.0 shm_open() are in librt. nxt_feature="shm_open() in librt" nxt_feature_libs="-lrt" . auto/feature if [ $nxt_found = yes ]; then NXT_LIBRT=$nxt_feature_libs fi fi if [ $nxt_found = no ]; then # DragonFly has no separate namespace for shm_open(). nxt_feature="shm_open() in /tmp directory" nxt_feature_libs= nxt_feature_test="#include #include #include #include int main(void) { static char name[] = \"/tmp/unit.configure\"; shm_unlink(name); int fd = shm_open(name, O_CREAT | O_EXCL | O_RDWR, S_IRUSR | S_IWUSR); if (fd == -1) return 1; shm_unlink(name); return 0; }" . auto/feature if [ $nxt_found = yes ]; then NXT_SHM_PREFIX="/tmp/" fi fi nxt_shm_open_found=$nxt_found # FreeBSD 8.0 nxt_feature="shm_open(SHM_ANON)" nxt_feature_name=NXT_HAVE_SHM_OPEN_ANON nxt_feature_libs= nxt_feature_test="#include #include #include int main(void) { int fd = shm_open(SHM_ANON, O_RDWR, S_IRUSR | S_IWUSR); if (fd == -1) return 1; return 0; }" . auto/feature if [ "$nxt_shm_open_found" = no ]; then nxt_shm_open_found=$nxt_found fi # Linux nxt_feature="memfd_create()" nxt_feature_name=NXT_HAVE_MEMFD_CREATE nxt_feature_run=yes nxt_feature_incs= nxt_feature_libs= nxt_feature_test="#include #include #include int main(void) { static char name[] = \"/unit.configure\"; int fd = syscall(SYS_memfd_create, name, MFD_CLOEXEC); if (fd == -1) return 1; return 0; }" . auto/feature if [ "$nxt_shm_open_found$nxt_found" = nono ]; then $echo $echo $0: error: no shared memory implementation found. $echo exit 1; fi