Added support for shm_open(SHM_ANON) extension.
This commit is contained in:
23
auto/shmem
23
auto/shmem
@@ -85,6 +85,29 @@ 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 <sys/mman.h>
|
||||
#include <fcntl.h>
|
||||
#include <sys/stat.h>
|
||||
|
||||
int main() {
|
||||
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()"
|
||||
|
||||
@@ -64,6 +64,18 @@ nxt_go_new_port_mmap(nxt_go_process_t *process, nxt_port_id_t id,
|
||||
|
||||
nxt_go_debug("memfd_create(%s): %d", name, fd);
|
||||
|
||||
#elif (NXT_HAVE_SHM_OPEN_ANON)
|
||||
|
||||
fd = shm_open(SHM_ANON, O_RDWR, S_IRUSR | S_IWUSR);
|
||||
|
||||
nxt_go_debug("shm_open(SHM_ANON): %d", fd);
|
||||
|
||||
if (nxt_slow_path(fd == -1)) {
|
||||
nxt_go_warn("shm_open(SHM_ANON) failed %d", errno);
|
||||
|
||||
goto remove_fail;
|
||||
}
|
||||
|
||||
#elif (NXT_HAVE_SHM_OPEN)
|
||||
|
||||
/* Just in case. */
|
||||
|
||||
@@ -297,6 +297,18 @@ nxt_port_new_port_mmap(nxt_task_t *task, nxt_process_t *process,
|
||||
|
||||
nxt_debug(task, "memfd_create(%s): %FD", name, fd);
|
||||
|
||||
#elif (NXT_HAVE_SHM_OPEN_ANON)
|
||||
|
||||
fd = shm_open(SHM_ANON, O_RDWR, S_IRUSR | S_IWUSR);
|
||||
|
||||
nxt_debug(task, "shm_open(SHM_ANON): %FD", fd);
|
||||
|
||||
if (nxt_slow_path(fd == -1)) {
|
||||
nxt_alert(task, "shm_open(SHM_ANON) failed %E", nxt_errno);
|
||||
|
||||
goto remove_fail;
|
||||
}
|
||||
|
||||
#elif (NXT_HAVE_SHM_OPEN)
|
||||
|
||||
/* Just in case. */
|
||||
|
||||
Reference in New Issue
Block a user