This is only enabled when NCPUS > 1. Enables some older code paths that allows userspace to manage cpu resources via processor set RPCs.
Size of struct task is preserved while making 4 bitfields addressable as 4 single byte fields. --- configfrag.ac | 8 ++++++-- kern/task.h | 10 +++++----- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/configfrag.ac b/configfrag.ac index f9285c9d..b8b41261 100644 --- a/configfrag.ac +++ b/configfrag.ac @@ -70,8 +70,12 @@ AC_DEFINE([MACH_DEBUG], [1], [MACH_DEBUG]) # Fixed priority threads. AC_DEFINE([MACH_FIXPRI], [1], [MACH_FIXPRI]) -# Mach host (resource alloc.). -AC_DEFINE([MACH_HOST], [0], [MACH_HOST]) +# Mach host (cpu resource alloc.). +[if [ $mach_ncpus -gt 1 ]; then] + AC_DEFINE([MACH_HOST], [1], [MACH_HOST]) +[else] + AC_DEFINE([MACH_HOST], [0], [MACH_HOST]) +[fi] # IPC debugging calls. AC_DEFINE([MACH_IPC_DEBUG], [1], [MACH_IPC_DEBUG]) diff --git a/kern/task.h b/kern/task.h index dec3a530..27970620 100644 --- a/kern/task.h +++ b/kern/task.h @@ -61,11 +61,11 @@ struct task { decl_simple_lock_data(,lock) /* Task's lock */ int ref_count; /* Number of references to me */ - /* Flags */ - unsigned int active:1, /* Task has not been terminated */ - /* boolean_t */ may_assign:1, /* can assigned pset be changed? */ - assign_active:1, /* waiting for may_assign */ - essential:1; /* Is this task essential for the system? */ + /* Addressable flags */ + unsigned char active; /* Task has not been terminated */ + unsigned char may_assign; /* can assigned pset be changed? */ + unsigned char assign_active; /* waiting for may_assign */ + unsigned char essential; /* Is this task essential for the system? */ /* Miscellaneous */ vm_map_t map; /* Address space description */ -- 2.43.0