diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-06-17 10:52:03 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-06-17 10:52:03 +0000 |
commit | 932e4432596447eb9331cc2a2bb74a26a35b4efc (patch) | |
tree | 95161711ea07fd64f0c82d6e7943024c033dd5a8 /templates/man2/userfaultfd.2.pot | |
parent | Adding debian version 4.22.0-1. (diff) | |
download | manpages-l10n-932e4432596447eb9331cc2a2bb74a26a35b4efc.tar.xz manpages-l10n-932e4432596447eb9331cc2a2bb74a26a35b4efc.zip |
Merging upstream version 4.23.0.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'templates/man2/userfaultfd.2.pot')
-rw-r--r-- | templates/man2/userfaultfd.2.pot | 238 |
1 files changed, 28 insertions, 210 deletions
diff --git a/templates/man2/userfaultfd.2.pot b/templates/man2/userfaultfd.2.pot index e20ccd99..f03d619d 100644 --- a/templates/man2/userfaultfd.2.pot +++ b/templates/man2/userfaultfd.2.pot @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2024-03-01 17:12+0100\n" +"POT-Creation-Date: 2024-06-01 06:33+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -24,15 +24,15 @@ msgid "userfaultfd" msgstr "" #. type: TH -#: archlinux fedora-40 fedora-rawhide mageia-cauldron +#: archlinux debian-unstable opensuse-tumbleweed #, no-wrap -msgid "2024-02-12" +msgid "2024-05-02" msgstr "" #. type: TH -#: archlinux fedora-40 fedora-rawhide mageia-cauldron +#: archlinux debian-unstable #, no-wrap -msgid "Linux man-pages 6.06" +msgid "Linux man-pages 6.8" msgstr "" #. type: SH @@ -349,7 +349,7 @@ msgstr "" #. problematic for multi-threaded monitor. I even suspect that it would be #. impossible to ensure synchronization between page faults and non-page #. fault events in multi-threaded monitor. -#. .PP +#. .P #. FIXME elaborate about non-cooperating mode, describe its limitations #. for kernels before Linux 4.11, features added in Linux 4.11 #. and limitations remaining in Linux 4.11 @@ -409,7 +409,7 @@ msgstr "" #. problematic for multi-threaded monitor. I even suspect that it would be #. impossible to ensure synchronization between page faults and non-page #. fault events in multi-threaded monitor. -#. .PP +#. .P #. FIXME elaborate about non-cooperating mode, describe its limitations #. for kernels before Linux 4.11, features added in Linux 4.11 #. and limitations remaining in Linux 4.11 @@ -444,7 +444,8 @@ msgid "Userfaultfd operation" msgstr "" #. type: Plain text -#: archlinux fedora-40 fedora-rawhide mageia-cauldron +#: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron +#: opensuse-tumbleweed msgid "" "After the userfaultfd object is created with B<userfaultfd>(), the " "application must enable it using the B<UFFDIO_API> B<ioctl>(2) operation. " @@ -456,7 +457,8 @@ msgid "" msgstr "" #. type: Plain text -#: archlinux fedora-40 fedora-rawhide mageia-cauldron +#: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron +#: opensuse-tumbleweed msgid "" "After a successful B<UFFDIO_API> operation, the application then registers " "memory address ranges using the B<UFFDIO_REGISTER> B<ioctl>(2) operation. " @@ -1298,7 +1300,8 @@ msgid "Program source" msgstr "" #. type: Plain text -#: archlinux fedora-40 fedora-rawhide mageia-cauldron +#: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron +#: opensuse-tumbleweed #, no-wrap msgid "" "/* userfaultfd_demo.c\n" @@ -1537,7 +1540,7 @@ msgid "Linux man-pages 6.03" msgstr "" #. type: Plain text -#: debian-bookworm debian-unstable opensuse-leap-15-6 opensuse-tumbleweed +#: debian-bookworm opensuse-leap-15-6 msgid "" "After the userfaultfd object is created with B<userfaultfd>(), the " "application must enable it using the B<UFFDIO_API> B<ioctl>(2) operation. " @@ -1548,7 +1551,7 @@ msgid "" msgstr "" #. type: Plain text -#: debian-bookworm debian-unstable opensuse-leap-15-6 opensuse-tumbleweed +#: debian-bookworm opensuse-leap-15-6 msgid "" "After a successful B<UFFDIO_API> operation, the application then registers " "memory address ranges using the B<UFFDIO_REGISTER> B<ioctl>(2) operation. " @@ -2083,212 +2086,21 @@ msgid "" msgstr "" #. type: TH -#: debian-unstable opensuse-tumbleweed +#: fedora-40 fedora-rawhide mageia-cauldron #, no-wrap -msgid "2023-05-03" +msgid "2024-02-12" msgstr "" #. type: TH -#: debian-unstable opensuse-tumbleweed +#: fedora-40 mageia-cauldron #, no-wrap -msgid "Linux man-pages 6.05.01" +msgid "Linux man-pages 6.06" msgstr "" -#. type: Plain text -#: debian-unstable opensuse-tumbleweed +#. type: TH +#: fedora-rawhide #, no-wrap -msgid "" -"/* userfaultfd_demo.c\n" -"\\&\n" -" Licensed under the GNU General Public License version 2 or later.\n" -"*/\n" -"#define _GNU_SOURCE\n" -"#include E<lt>err.hE<gt>\n" -"#include E<lt>errno.hE<gt>\n" -"#include E<lt>fcntl.hE<gt>\n" -"#include E<lt>inttypes.hE<gt>\n" -"#include E<lt>linux/userfaultfd.hE<gt>\n" -"#include E<lt>poll.hE<gt>\n" -"#include E<lt>pthread.hE<gt>\n" -"#include E<lt>stdio.hE<gt>\n" -"#include E<lt>stdlib.hE<gt>\n" -"#include E<lt>string.hE<gt>\n" -"#include E<lt>sys/ioctl.hE<gt>\n" -"#include E<lt>sys/mman.hE<gt>\n" -"#include E<lt>sys/syscall.hE<gt>\n" -"#include E<lt>unistd.hE<gt>\n" -"\\&\n" -"static int page_size;\n" -"\\&\n" -"static void *\n" -"fault_handler_thread(void *arg)\n" -"{\n" -" int nready;\n" -" long uffd; /* userfaultfd file descriptor */\n" -" ssize_t nread;\n" -" struct pollfd pollfd;\n" -" struct uffdio_copy uffdio_copy;\n" -"\\&\n" -" static int fault_cnt = 0; /* Number of faults so far handled */\n" -" static char *page = NULL;\n" -" static struct uffd_msg msg; /* Data read from userfaultfd */\n" -"\\&\n" -" uffd = (long) arg;\n" -"\\&\n" -" /* Create a page that will be copied into the faulting region. */\n" -"\\&\n" -" if (page == NULL) {\n" -" page = mmap(NULL, page_size, PROT_READ | PROT_WRITE,\n" -" MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);\n" -" if (page == MAP_FAILED)\n" -" err(EXIT_FAILURE, \"mmap\");\n" -" }\n" -"\\&\n" -" /* Loop, handling incoming events on the userfaultfd\n" -" file descriptor. */\n" -"\\&\n" -" for (;;) {\n" -"\\&\n" -" /* See what poll() tells us about the userfaultfd. */\n" -"\\&\n" -" pollfd.fd = uffd;\n" -" pollfd.events = POLLIN;\n" -" nready = poll(&pollfd, 1, -1);\n" -" if (nready == -1)\n" -" err(EXIT_FAILURE, \"poll\");\n" -"\\&\n" -" printf(\"\\enfault_handler_thread():\\en\");\n" -" printf(\" poll() returns: nready = %d; \"\n" -" \"POLLIN = %d; POLLERR = %d\\en\", nready,\n" -" (pollfd.revents & POLLIN) != 0,\n" -" (pollfd.revents & POLLERR) != 0);\n" -"\\&\n" -" /* Read an event from the userfaultfd. */\n" -"\\&\n" -" nread = read(uffd, &msg, sizeof(msg));\n" -" if (nread == 0) {\n" -" printf(\"EOF on userfaultfd!\\en\");\n" -" exit(EXIT_FAILURE);\n" -" }\n" -"\\&\n" -" if (nread == -1)\n" -" err(EXIT_FAILURE, \"read\");\n" -"\\&\n" -" /* We expect only one kind of event; verify that assumption. */\n" -"\\&\n" -" if (msg.event != UFFD_EVENT_PAGEFAULT) {\n" -" fprintf(stderr, \"Unexpected event on userfaultfd\\en\");\n" -" exit(EXIT_FAILURE);\n" -" }\n" -"\\&\n" -" /* Display info about the page-fault event. */\n" -"\\&\n" -" printf(\" UFFD_EVENT_PAGEFAULT event: \");\n" -" printf(\"flags = %\"PRIx64\"; \", msg.arg.pagefault.flags);\n" -" printf(\"address = %\"PRIx64\"\\en\", msg.arg.pagefault.address);\n" -"\\&\n" -" /* Copy the page pointed to by \\[aq]page\\[aq] into the faulting\n" -" region. Vary the contents that are copied in, so that it\n" -" is more obvious that each fault is handled separately. */\n" -"\\&\n" -" memset(page, \\[aq]A\\[aq] + fault_cnt % 20, page_size);\n" -" fault_cnt++;\n" -"\\&\n" -" uffdio_copy.src = (unsigned long) page;\n" -"\\&\n" -" /* We need to handle page faults in units of pages(!).\n" -" So, round faulting address down to page boundary. */\n" -"\\&\n" -" uffdio_copy.dst = (unsigned long) msg.arg.pagefault.address &\n" -" \\[ti](page_size - 1);\n" -" uffdio_copy.len = page_size;\n" -" uffdio_copy.mode = 0;\n" -" uffdio_copy.copy = 0;\n" -" if (ioctl(uffd, UFFDIO_COPY, &uffdio_copy) == -1)\n" -" err(EXIT_FAILURE, \"ioctl-UFFDIO_COPY\");\n" -"\\&\n" -" printf(\" (uffdio_copy.copy returned %\"PRId64\")\\en\",\n" -" uffdio_copy.copy);\n" -" }\n" -"}\n" -"\\&\n" -"int\n" -"main(int argc, char *argv[])\n" -"{\n" -" int s;\n" -" char c;\n" -" char *addr; /* Start of region handled by userfaultfd */\n" -" long uffd; /* userfaultfd file descriptor */\n" -" size_t len, l; /* Length of region handled by userfaultfd */\n" -" pthread_t thr; /* ID of thread that handles page faults */\n" -" struct uffdio_api uffdio_api;\n" -" struct uffdio_register uffdio_register;\n" -"\\&\n" -" if (argc != 2) {\n" -" fprintf(stderr, \"Usage: %s num-pages\\en\", argv[0]);\n" -" exit(EXIT_FAILURE);\n" -" }\n" -"\\&\n" -" page_size = sysconf(_SC_PAGE_SIZE);\n" -" len = strtoull(argv[1], NULL, 0) * page_size;\n" -"\\&\n" -" /* Create and enable userfaultfd object. */\n" -"\\&\n" -" uffd = syscall(SYS_userfaultfd, O_CLOEXEC | O_NONBLOCK);\n" -" if (uffd == -1)\n" -" err(EXIT_FAILURE, \"userfaultfd\");\n" -"\\&\n" -" uffdio_api.api = UFFD_API;\n" -" uffdio_api.features = 0;\n" -" if (ioctl(uffd, UFFDIO_API, &uffdio_api) == -1)\n" -" err(EXIT_FAILURE, \"ioctl-UFFDIO_API\");\n" -"\\&\n" -" /* Create a private anonymous mapping. The memory will be\n" -" demand-zero paged--that is, not yet allocated. When we\n" -" actually touch the memory, it will be allocated via\n" -" the userfaultfd. */\n" -"\\&\n" -" addr = mmap(NULL, len, PROT_READ | PROT_WRITE,\n" -" MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);\n" -" if (addr == MAP_FAILED)\n" -" err(EXIT_FAILURE, \"mmap\");\n" -"\\&\n" -" printf(\"Address returned by mmap() = %p\\en\", addr);\n" -"\\&\n" -" /* Register the memory range of the mapping we just created for\n" -" handling by the userfaultfd object. In mode, we request to track\n" -" missing pages (i.e., pages that have not yet been faulted in). */\n" -"\\&\n" -" uffdio_register.range.start = (unsigned long) addr;\n" -" uffdio_register.range.len = len;\n" -" uffdio_register.mode = UFFDIO_REGISTER_MODE_MISSING;\n" -" if (ioctl(uffd, UFFDIO_REGISTER, &uffdio_register) == -1)\n" -" err(EXIT_FAILURE, \"ioctl-UFFDIO_REGISTER\");\n" -"\\&\n" -" /* Create a thread that will process the userfaultfd events. */\n" -"\\&\n" -" s = pthread_create(&thr, NULL, fault_handler_thread, (void *) uffd);\n" -" if (s != 0) {\n" -" errc(EXIT_FAILURE, s, \"pthread_create\");\n" -" }\n" -"\\&\n" -" /* Main thread now touches memory in the mapping, touching\n" -" locations 1024 bytes apart. This will trigger userfaultfd\n" -" events for all pages in the region. */\n" -"\\&\n" -" l = 0xf; /* Ensure that faulting address is not on a page\n" -" boundary, in order to test that we correctly\n" -" handle that case in fault_handling_thread(). */\n" -" while (l E<lt> len) {\n" -" c = addr[l];\n" -" printf(\"Read address %p in %s(): \", addr + l, __func__);\n" -" printf(\"%c\\en\", c);\n" -" l += 1024;\n" -" usleep(100000); /* Slow things down a little */\n" -" }\n" -"\\&\n" -" exit(EXIT_SUCCESS);\n" -"}\n" +msgid "Linux man-pages 6.7" msgstr "" #. type: TH @@ -2302,3 +2114,9 @@ msgstr "" #, no-wrap msgid "Linux man-pages 6.04" msgstr "" + +#. type: TH +#: opensuse-tumbleweed +#, no-wrap +msgid "Linux man-pages (unreleased)" +msgstr "" |