File Index
Files and directories
Sign in
FILE

userfaultfd_util.h

File preview with syntax highlighting.

linux-6.19.14/tools/testing/selftests/kvm/include/userfaultfd_util.h C
 1/* SPDX-License-Identifier: GPL-2.0 */
 2/*
 3 * KVM userfaultfd util
 4 *
 5 * Copyright (C) 2018, Red Hat, Inc.
 6 * Copyright (C) 2019-2022 Google LLC
 7 */
 8#include <inttypes.h>
 9#include <time.h>
10#include <pthread.h>
11#include <linux/userfaultfd.h>
12
13#include "test_util.h"
14
15typedef int (*uffd_handler_t)(int uffd_mode, int uffd, struct uffd_msg *msg);
16
17struct uffd_reader_args {
18	int uffd_mode;
19	int uffd;
20	useconds_t delay;
21	uffd_handler_t handler;
22	/* Holds the read end of the pipe for killing the reader. */
23	int pipe;
24};
25
26struct uffd_desc {
27	int uffd;
28	uint64_t num_readers;
29	/* Holds the write ends of the pipes for killing the readers. */
30	int *pipefds;
31	pthread_t *readers;
32	struct uffd_reader_args *reader_args;
33};
34
35struct uffd_desc *uffd_setup_demand_paging(int uffd_mode, useconds_t delay,
36					   void *hva, uint64_t len,
37					   uint64_t num_readers,
38					   uffd_handler_t handler);
39
40void uffd_stop_demand_paging(struct uffd_desc *uffd);
41
42#ifdef PRINT_PER_PAGE_UPDATES
43#define PER_PAGE_DEBUG(...) printf(__VA_ARGS__)
44#else
45#define PER_PAGE_DEBUG(...) _no_printf(__VA_ARGS__)
46#endif
47
48#ifdef PRINT_PER_VCPU_UPDATES
49#define PER_VCPU_DEBUG(...) printf(__VA_ARGS__)
50#else
51#define PER_VCPU_DEBUG(...) _no_printf(__VA_ARGS__)
52#endif
~/ Read-only file preview.