Home | History | Annotate | Download | only in linux
      1 # Copyright 2018 syzkaller project authors. All rights reserved.
      2 # Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file.
      3 
      4 include <uapi/linux/ioctl.h>
      5 include <uapi/linux/fcntl.h>
      6 include <uapi/linux/userfaultfd.h>
      7 
      8 resource fd_uffd[fd]
      9 
     10 userfaultfd(flags flags[userfaultfd_flags]) fd_uffd
     11 
     12 ioctl$UFFDIO_API(fd fd_uffd, cmd const[UFFDIO_API], arg ptr[in, uffdio_api])
     13 ioctl$UFFDIO_REGISTER(fd fd_uffd, cmd const[UFFDIO_REGISTER], arg ptr[in, uffdio_register])
     14 ioctl$UFFDIO_UNREGISTER(fd fd_uffd, cmd const[UFFDIO_UNREGISTER], arg ptr[in, uffdio_range])
     15 ioctl$UFFDIO_WAKE(fd fd_uffd, cmd const[UFFDIO_WAKE], arg ptr[in, uffdio_range])
     16 ioctl$UFFDIO_COPY(fd fd_uffd, cmd const[UFFDIO_COPY], arg ptr[in, uffdio_copy])
     17 ioctl$UFFDIO_ZEROPAGE(fd fd_uffd, cmd const[UFFDIO_ZEROPAGE], arg ptr[in, uffdio_zeropage])
     18 
     19 userfaultfd_flags = O_NONBLOCK, O_CLOEXEC
     20 uffdio_register_mode = UFFDIO_REGISTER_MODE_MISSING, UFFDIO_REGISTER_MODE_WP
     21 uffdio_copy_mode = UFFDIO_COPY_MODE_DONTWAKE
     22 uffdio_zero_mode = UFFDIO_ZEROPAGE_MODE_DONTWAKE
     23 uffdio_features = UFFD_FEATURE_PAGEFAULT_FLAG_WP, UFFD_FEATURE_EVENT_FORK, UFFD_FEATURE_EVENT_REMAP, UFFD_FEATURE_EVENT_REMOVE, UFFD_FEATURE_MISSING_HUGETLBFS, UFFD_FEATURE_MISSING_SHMEM, UFFD_FEATURE_EVENT_UNMAP
     24 
     25 uffdio_api {
     26 	api	const[UFFD_API, int64]
     27 	featur	flags[uffdio_features, int64]
     28 	ioctls	const[0, int64]
     29 }
     30 
     31 uffdio_range {
     32 	start	vma
     33 	len	len[start, int64]
     34 }
     35 
     36 uffdio_register {
     37 	range	uffdio_range
     38 	mode	flags[uffdio_register_mode, int64]
     39 	ioctls	const[0, int64]
     40 }
     41 
     42 uffdio_copy {
     43 	dst	vma
     44 	src	vma
     45 	len	len[dst, int64]
     46 	mode	flags[uffdio_copy_mode, int64]
     47 	copy	const[0, int64]
     48 }
     49 
     50 uffdio_zeropage {
     51 	range	uffdio_range
     52 	mode	flags[uffdio_zero_mode, int64]
     53 	zeropg	const[0, int64]
     54 }
     55