memfd: rename memfd.h to memfd-util.h to avoid any confusion with any libc provided...
authorLennart Poettering <lennart@poettering.net>
Thu, 30 Oct 2014 17:32:37 +0000 (18:32 +0100)
committerLennart Poettering <lennart@poettering.net>
Thu, 30 Oct 2014 17:32:37 +0000 (18:32 +0100)
Makefile.am
src/journal/journal-send.c
src/journal/journald-native.c
src/libsystemd/sd-bus/bus-message.c
src/libsystemd/sd-bus/test-bus-zero-copy.c
src/shared/memfd-util.c [new file with mode: 0644]
src/shared/memfd-util.h [new file with mode: 0644]
src/shared/memfd.c [deleted file]
src/shared/memfd.h [deleted file]

index c80d25df29b0a62d73eff9ec57725baf3ecb14ff..69d598b4d3b01e4596f5d3694d7246f38c4d997b 100644 (file)
@@ -881,8 +881,8 @@ libsystemd_shared_la_SOURCES = \
        src/shared/copy.h \
        src/shared/base-filesystem.c \
        src/shared/base-filesystem.h \
-       src/shared/memfd.c \
-       src/shared/memfd.h \
+       src/shared/memfd-util.c \
+       src/shared/memfd-util.h \
        src/shared/uid-range.c \
        src/shared/uid-range.h \
        src/shared/nss-util.h
index 0ee83cdb778fc75421049697b6864c6f6d64be12..887b957c4d3751c14287f374b679ecb6903226b1 100644 (file)
@@ -32,7 +32,7 @@
 #include "sd-journal.h"
 #include "util.h"
 #include "socket-util.h"
-#include "memfd.h"
+#include "memfd-util.h"
 
 #define SNDBUF_SIZE (8*1024*1024)
 
index d3735ec73c598706516355aae48239c81afc7bb4..ace8d5cbfd40b93b93414fbe29b24d520b06096d 100644 (file)
@@ -33,7 +33,7 @@
 #include "journald-console.h"
 #include "journald-syslog.h"
 #include "journald-wall.h"
-#include "memfd.h"
+#include "memfd-util.h"
 
 bool valid_user_field(const char *p, size_t l, bool allow_protected) {
         const char *a;
index 0eea32b649e08cd6299f85faee6a7c8e56ff7016..be36d9f417cac8e47306930921a1258e1bb506a1 100644 (file)
@@ -28,7 +28,7 @@
 #include "strv.h"
 #include "time-util.h"
 #include "cgroup-util.h"
-#include "memfd.h"
+#include "memfd-util.h"
 
 #include "sd-bus.h"
 #include "bus-message.h"
index e3010fbf7e5689ccabd8b7cdb3caa9a36e4e3d95..e938a48b639afd68a0d91b24d12842a0e6989dcf 100644 (file)
@@ -24,7 +24,7 @@
 
 #include "util.h"
 #include "log.h"
-#include "memfd.h"
+#include "memfd-util.h"
 
 #include "sd-bus.h"
 #include "bus-message.h"
diff --git a/src/shared/memfd-util.c b/src/shared/memfd-util.c
new file mode 100644 (file)
index 0000000..21ecf4b
--- /dev/null
@@ -0,0 +1,174 @@
+/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
+
+/***
+  This file is part of systemd.
+
+  Copyright 2013 Lennart Poettering
+
+  systemd is free software; you can redistribute it and/or modify it
+  under the terms of the GNU Lesser General Public License as published by
+  the Free Software Foundation; either version 2.1 of the License, or
+  (at your option) any later version.
+
+  systemd is distributed in the hope that it will be useful, but
+  WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+  Lesser General Public License for more details.
+
+  You should have received a copy of the GNU Lesser General Public License
+  along with systemd; If not, see <http://www.gnu.org/licenses/>.
+***/
+
+#include <stdio.h>
+#include <fcntl.h>
+#include <sys/ioctl.h>
+#include <sys/mman.h>
+#include <sys/prctl.h>
+
+#ifdef HAVE_LINUX_MEMFD_H
+#  include <linux/memfd.h>
+#endif
+
+#include "util.h"
+#include "bus-label.h"
+#include "memfd-util.h"
+#include "utf8.h"
+#include "missing.h"
+
+int memfd_new(const char *name) {
+        _cleanup_free_ char *g = NULL;
+        int fd;
+
+        if (!name) {
+                char pr[17] = {};
+
+                /* If no name is specified we generate one. We include
+                 * a hint indicating our library implementation, and
+                 * add the thread name to it */
+
+                assert_se(prctl(PR_GET_NAME, (unsigned long) pr) >= 0);
+
+                if (isempty(pr))
+                        name = "sd";
+                else {
+                        _cleanup_free_ char *e = NULL;
+
+                        e = utf8_escape_invalid(pr);
+                        if (!e)
+                                return -ENOMEM;
+
+                        g = strappend("sd-", e);
+                        if (!g)
+                                return -ENOMEM;
+
+                        name = g;
+                }
+        }
+
+        fd = memfd_create(name, MFD_ALLOW_SEALING | MFD_CLOEXEC);
+        if (fd < 0)
+                return -errno;
+
+        return fd;
+}
+
+int memfd_map(int fd, uint64_t offset, size_t size, void **p) {
+        void *q;
+        int sealed;
+
+        assert(fd >= 0);
+        assert(size > 0);
+        assert(p);
+
+        sealed = memfd_get_sealed(fd);
+        if (sealed < 0)
+                return sealed;
+
+        if (sealed)
+                q = mmap(NULL, size, PROT_READ, MAP_PRIVATE, fd, offset);
+        else
+                q = mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_SHARED, fd, offset);
+
+        if (q == MAP_FAILED)
+                return -errno;
+
+        *p = q;
+        return 0;
+}
+
+int memfd_set_sealed(int fd) {
+        int r;
+
+        assert(fd >= 0);
+
+        r = fcntl(fd, F_ADD_SEALS, F_SEAL_SHRINK | F_SEAL_GROW | F_SEAL_WRITE);
+        if (r < 0)
+                return -errno;
+
+        return 0;
+}
+
+int memfd_get_sealed(int fd) {
+        int r;
+
+        assert(fd >= 0);
+
+        r = fcntl(fd, F_GET_SEALS);
+        if (r < 0)
+                return -errno;
+
+        return (r & (F_SEAL_SHRINK | F_SEAL_GROW | F_SEAL_WRITE)) ==
+                    (F_SEAL_SHRINK | F_SEAL_GROW | F_SEAL_WRITE);
+}
+
+int memfd_get_size(int fd, uint64_t *sz) {
+        struct stat stat;
+        int r;
+
+        assert(fd >= 0);
+        assert(sz);
+
+        r = fstat(fd, &stat);
+        if (r < 0)
+                return -errno;
+
+        *sz = stat.st_size;
+        return 0;
+}
+
+int memfd_set_size(int fd, uint64_t sz) {
+        int r;
+
+        assert(fd >= 0);
+
+        r = ftruncate(fd, sz);
+        if (r < 0)
+                return -errno;
+
+        return 0;
+}
+
+int memfd_new_and_map(const char *name, size_t sz, void **p) {
+        _cleanup_close_ int fd = -1;
+        int r;
+
+        assert(sz > 0);
+        assert(p);
+
+        fd = memfd_new(name);
+        if (fd < 0)
+                return fd;
+
+        r = memfd_set_size(fd, sz);
+        if (r < 0)
+                return r;
+
+        r = memfd_map(fd, 0, sz, p);
+        if (r < 0)
+                return r;
+
+        r = fd;
+        fd = -1;
+
+        return r;
+}
diff --git a/src/shared/memfd-util.h b/src/shared/memfd-util.h
new file mode 100644 (file)
index 0000000..cf588fe
--- /dev/null
@@ -0,0 +1,40 @@
+/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
+
+#pragma once
+
+/***
+  This file is part of systemd.
+
+  Copyright 2013 Lennart Poettering
+
+  systemd is free software; you can redistribute it and/or modify it
+  under the terms of the GNU Lesser General Public License as published by
+  the Free Software Foundation; either version 2.1 of the License, or
+  (at your option) any later version.
+
+  systemd is distributed in the hope that it will be useful, but
+  WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+  Lesser General Public License for more details.
+
+  You should have received a copy of the GNU Lesser General Public License
+  along with systemd; If not, see <http://www.gnu.org/licenses/>.
+***/
+
+#include <inttypes.h>
+#include <sys/types.h>
+#include <stdio.h>
+
+#include "macro.h"
+#include "util.h"
+
+int memfd_new(const char *name);
+int memfd_new_and_map(const char *name, size_t sz, void **p);
+
+int memfd_map(int fd, uint64_t offset, size_t size, void **p);
+
+int memfd_set_sealed(int fd);
+int memfd_get_sealed(int fd);
+
+int memfd_get_size(int fd, uint64_t *sz);
+int memfd_set_size(int fd, uint64_t sz);
diff --git a/src/shared/memfd.c b/src/shared/memfd.c
deleted file mode 100644 (file)
index b558177..0000000
+++ /dev/null
@@ -1,174 +0,0 @@
-/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
-
-/***
-  This file is part of systemd.
-
-  Copyright 2013 Lennart Poettering
-
-  systemd is free software; you can redistribute it and/or modify it
-  under the terms of the GNU Lesser General Public License as published by
-  the Free Software Foundation; either version 2.1 of the License, or
-  (at your option) any later version.
-
-  systemd is distributed in the hope that it will be useful, but
-  WITHOUT ANY WARRANTY; without even the implied warranty of
-  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-  Lesser General Public License for more details.
-
-  You should have received a copy of the GNU Lesser General Public License
-  along with systemd; If not, see <http://www.gnu.org/licenses/>.
-***/
-
-#include <stdio.h>
-#include <fcntl.h>
-#include <sys/ioctl.h>
-#include <sys/mman.h>
-#include <sys/prctl.h>
-
-#ifdef HAVE_LINUX_MEMFD_H
-#  include <linux/memfd.h>
-#endif
-
-#include "util.h"
-#include "bus-label.h"
-#include "memfd.h"
-#include "utf8.h"
-#include "missing.h"
-
-int memfd_new(const char *name) {
-        _cleanup_free_ char *g = NULL;
-        int fd;
-
-        if (!name) {
-                char pr[17] = {};
-
-                /* If no name is specified we generate one. We include
-                 * a hint indicating our library implementation, and
-                 * add the thread name to it */
-
-                assert_se(prctl(PR_GET_NAME, (unsigned long) pr) >= 0);
-
-                if (isempty(pr))
-                        name = "sd";
-                else {
-                        _cleanup_free_ char *e = NULL;
-
-                        e = utf8_escape_invalid(pr);
-                        if (!e)
-                                return -ENOMEM;
-
-                        g = strappend("sd-", e);
-                        if (!g)
-                                return -ENOMEM;
-
-                        name = g;
-                }
-        }
-
-        fd = memfd_create(name, MFD_ALLOW_SEALING | MFD_CLOEXEC);
-        if (fd < 0)
-                return -errno;
-
-        return fd;
-}
-
-int memfd_map(int fd, uint64_t offset, size_t size, void **p) {
-        void *q;
-        int sealed;
-
-        assert(fd >= 0);
-        assert(size > 0);
-        assert(p);
-
-        sealed = memfd_get_sealed(fd);
-        if (sealed < 0)
-                return sealed;
-
-        if (sealed)
-                q = mmap(NULL, size, PROT_READ, MAP_PRIVATE, fd, offset);
-        else
-                q = mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_SHARED, fd, offset);
-
-        if (q == MAP_FAILED)
-                return -errno;
-
-        *p = q;
-        return 0;
-}
-
-int memfd_set_sealed(int fd) {
-        int r;
-
-        assert(fd >= 0);
-
-        r = fcntl(fd, F_ADD_SEALS, F_SEAL_SHRINK | F_SEAL_GROW | F_SEAL_WRITE);
-        if (r < 0)
-                return -errno;
-
-        return 0;
-}
-
-int memfd_get_sealed(int fd) {
-        int r;
-
-        assert(fd >= 0);
-
-        r = fcntl(fd, F_GET_SEALS);
-        if (r < 0)
-                return -errno;
-
-        return (r & (F_SEAL_SHRINK | F_SEAL_GROW | F_SEAL_WRITE)) ==
-                    (F_SEAL_SHRINK | F_SEAL_GROW | F_SEAL_WRITE);
-}
-
-int memfd_get_size(int fd, uint64_t *sz) {
-        struct stat stat;
-        int r;
-
-        assert(fd >= 0);
-        assert(sz);
-
-        r = fstat(fd, &stat);
-        if (r < 0)
-                return -errno;
-
-        *sz = stat.st_size;
-        return 0;
-}
-
-int memfd_set_size(int fd, uint64_t sz) {
-        int r;
-
-        assert(fd >= 0);
-
-        r = ftruncate(fd, sz);
-        if (r < 0)
-                return -errno;
-
-        return 0;
-}
-
-int memfd_new_and_map(const char *name, size_t sz, void **p) {
-        _cleanup_close_ int fd = -1;
-        int r;
-
-        assert(sz > 0);
-        assert(p);
-
-        fd = memfd_new(name);
-        if (fd < 0)
-                return fd;
-
-        r = memfd_set_size(fd, sz);
-        if (r < 0)
-                return r;
-
-        r = memfd_map(fd, 0, sz, p);
-        if (r < 0)
-                return r;
-
-        r = fd;
-        fd = -1;
-
-        return r;
-}
diff --git a/src/shared/memfd.h b/src/shared/memfd.h
deleted file mode 100644 (file)
index cf588fe..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
-
-#pragma once
-
-/***
-  This file is part of systemd.
-
-  Copyright 2013 Lennart Poettering
-
-  systemd is free software; you can redistribute it and/or modify it
-  under the terms of the GNU Lesser General Public License as published by
-  the Free Software Foundation; either version 2.1 of the License, or
-  (at your option) any later version.
-
-  systemd is distributed in the hope that it will be useful, but
-  WITHOUT ANY WARRANTY; without even the implied warranty of
-  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-  Lesser General Public License for more details.
-
-  You should have received a copy of the GNU Lesser General Public License
-  along with systemd; If not, see <http://www.gnu.org/licenses/>.
-***/
-
-#include <inttypes.h>
-#include <sys/types.h>
-#include <stdio.h>
-
-#include "macro.h"
-#include "util.h"
-
-int memfd_new(const char *name);
-int memfd_new_and_map(const char *name, size_t sz, void **p);
-
-int memfd_map(int fd, uint64_t offset, size_t size, void **p);
-
-int memfd_set_sealed(int fd);
-int memfd_get_sealed(int fd);
-
-int memfd_get_size(int fd, uint64_t *sz);
-int memfd_set_size(int fd, uint64_t sz);