svn commit: r358251 - in head/sys: kern sys
Konstantin Belousov
kib at FreeBSD.org
Sat Feb 22 20:43:06 UTC 2020
Author: kib
Date: Sat Feb 22 20:43:04 2020
New Revision: 358251
URL: https://svnweb.freebsd.org/changeset/base/358251
Log:
Add td_pflags2, yet another thread-private flags word.
There is no more free bits in td_pflags.
Tested by: pho
Sponsored by: The FreeBSD Foundation
MFC after: 1 week
Modified:
head/sys/kern/kern_thread.c
head/sys/sys/proc.h
Modified: head/sys/kern/kern_thread.c
==============================================================================
--- head/sys/kern/kern_thread.c Sat Feb 22 17:56:09 2020 (r358250)
+++ head/sys/kern/kern_thread.c Sat Feb 22 20:43:04 2020 (r358251)
@@ -82,9 +82,9 @@ _Static_assert(offsetof(struct thread, td_flags) == 0x
"struct thread KBI td_flags");
_Static_assert(offsetof(struct thread, td_pflags) == 0x104,
"struct thread KBI td_pflags");
-_Static_assert(offsetof(struct thread, td_frame) == 0x490,
+_Static_assert(offsetof(struct thread, td_frame) == 0x498,
"struct thread KBI td_frame");
-_Static_assert(offsetof(struct thread, td_emuldata) == 0x6a0,
+_Static_assert(offsetof(struct thread, td_emuldata) == 0x6b0,
"struct thread KBI td_emuldata");
_Static_assert(offsetof(struct proc, p_flag) == 0xb0,
"struct proc KBI p_flag");
@@ -102,9 +102,9 @@ _Static_assert(offsetof(struct thread, td_flags) == 0x
"struct thread KBI td_flags");
_Static_assert(offsetof(struct thread, td_pflags) == 0xa0,
"struct thread KBI td_pflags");
-_Static_assert(offsetof(struct thread, td_frame) == 0x2f8,
+_Static_assert(offsetof(struct thread, td_frame) == 0x2fc,
"struct thread KBI td_frame");
-_Static_assert(offsetof(struct thread, td_emuldata) == 0x340,
+_Static_assert(offsetof(struct thread, td_emuldata) == 0x344,
"struct thread KBI td_emuldata");
_Static_assert(offsetof(struct proc, p_flag) == 0x68,
"struct proc KBI p_flag");
Modified: head/sys/sys/proc.h
==============================================================================
--- head/sys/sys/proc.h Sat Feb 22 17:56:09 2020 (r358250)
+++ head/sys/sys/proc.h Sat Feb 22 20:43:04 2020 (r358251)
@@ -250,6 +250,7 @@ struct thread {
int td_flags; /* (t) TDF_* flags. */
int td_inhibitors; /* (t) Why can not run. */
int td_pflags; /* (k) Private thread (TDP_*) flags. */
+ int td_pflags2; /* (k) Private thread (TDP2_*) flags. */
int td_dupfd; /* (k) Ret value from fdopen. XXX */
int td_sqqueue; /* (t) Sleepqueue queue blocked on. */
const void *td_wchan; /* (t) Sleep address. */
@@ -1195,6 +1196,25 @@ curthread_pflags_restore(int save)
{
curthread->td_pflags &= save;
+}
+
+static __inline int
+curthread_pflags2_set(int flags)
+{
+ struct thread *td;
+ int save;
+
+ td = curthread;
+ save = ~flags | (td->td_pflags2 & flags);
+ td->td_pflags2 |= flags;
+ return (save);
+}
+
+static __inline void
+curthread_pflags2_restore(int save)
+{
+
+ curthread->td_pflags2 &= save;
}
static __inline __pure2 struct td_sched *
More information about the svn-src-head
mailing list