On Wed, Mar 03, 2021 at 08:59:44PM -0500, Peter Xu wrote: > UFFD_FEATURE_THREAD_ID is supported since Linux 4.14. > > Signed-off-by: Peter Xu <peterx@xxxxxxxxxx> > --- > man2/userfaultfd.2 | 12 ++++++++++++ > 1 file changed, 12 insertions(+) > > diff --git a/man2/userfaultfd.2 b/man2/userfaultfd.2 > index e7dc9f813..2d14effc6 100644 > --- a/man2/userfaultfd.2 > +++ b/man2/userfaultfd.2 > @@ -77,6 +77,12 @@ When the last file descriptor referring to a userfaultfd object is closed, > all memory ranges that were registered with the object are unregistered > and unread events are flushed. > .\" > +.PP > +Since Linux 4.14, userfaultfd page fault message can selectively embed fault Maybe faulting? ^ > +thread ID information into the fault message. One needs to enable this feature > +explicitly using the > +.BR UFFD_FEATURE_THREAD_ID > +feature bit when initializing the userfaultfd context, otherwise disabled. "... otherwise thread ID reporting is disabled" ^ > .SS Usage > The userfaultfd mechanism is designed to allow a thread in a multithreaded > program to perform user-space paging for the other threads in the process. > @@ -229,6 +235,9 @@ struct uffd_msg { > struct { > __u64 flags; /* Flags describing fault */ > __u64 address; /* Faulting address */ > + union { > + __u32 ptid; /* Thread ID of the fault */ > + } feat; > } pagefault; > > struct { /* Since Linux 4.11 */ > @@ -358,6 +367,9 @@ otherwise it is a read fault. > .\" UFFD_PAGEFAULT_FLAG_WP is not yet supported. > .RE > .TP > +.I pagefault.feat.pid > +The thread ID that triggered the page fault. > +.TP > .I fork.ufd > The file descriptor associated with the userfault object > created for the child created by > -- > 2.26.2 > -- Sincerely yours, Mike.