hw: re-add priority down-scaling
This is a follow-up commit for "hw: beautify scheduling-priority code". ref #960
This commit is contained in:
parent
883aa83e62
commit
07aa56fffb
|
@ -78,21 +78,21 @@ namespace Genode {
|
||||||
/**
|
/**
|
||||||
* Constructor for core threads
|
* Constructor for core threads
|
||||||
*
|
*
|
||||||
* \param label debugging label
|
|
||||||
* \param stack_size initial size of the stack
|
* \param stack_size initial size of the stack
|
||||||
* \param pd_id kernel name of targeted protection domain
|
* \param pd_id kernel name of targeted protection domain
|
||||||
|
* \param label debugging label
|
||||||
*/
|
*/
|
||||||
Platform_thread(const char * const label, size_t const stack_size,
|
Platform_thread(size_t const stack_size,
|
||||||
unsigned const pd_id);
|
unsigned const pd_id, const char * const label);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor for threads outside of core
|
* Constructor for threads outside of core
|
||||||
*
|
*
|
||||||
* \param label debugging label
|
* \param label debugging label
|
||||||
* \param priority processor-scheduling priority
|
* \param virt_prio unscaled processor-scheduling priority
|
||||||
* \param utcb core local pointer to userland thread-context
|
* \param utcb core local pointer to userland thread-context
|
||||||
*/
|
*/
|
||||||
Platform_thread(const char * const label, unsigned const priority,
|
Platform_thread(const char * const label, unsigned const virt_prio,
|
||||||
addr_t const utcb);
|
addr_t const utcb);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -24,7 +24,7 @@ namespace Kernel
|
||||||
MAX_SIGNAL_RECEIVERS = 256,
|
MAX_SIGNAL_RECEIVERS = 256,
|
||||||
MAX_SIGNAL_CONTEXTS = 2048,
|
MAX_SIGNAL_CONTEXTS = 2048,
|
||||||
MAX_VMS = 4,
|
MAX_VMS = 4,
|
||||||
MAX_PRIORITY = 255,
|
MAX_PRIORITY = 128,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -73,9 +73,9 @@ Platform_thread::~Platform_thread()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
Platform_thread::Platform_thread(const char * const label,
|
Platform_thread::Platform_thread(size_t const stack_size,
|
||||||
size_t const stack_size,
|
unsigned const pd_id,
|
||||||
unsigned const pd_id)
|
const char * const label)
|
||||||
:
|
:
|
||||||
_stack_size(stack_size),
|
_stack_size(stack_size),
|
||||||
_pd_id(pd_id),
|
_pd_id(pd_id),
|
||||||
|
@ -105,7 +105,7 @@ Platform_thread::Platform_thread(const char * const label,
|
||||||
|
|
||||||
|
|
||||||
Platform_thread::Platform_thread(const char * const label,
|
Platform_thread::Platform_thread(const char * const label,
|
||||||
unsigned const priority,
|
unsigned const virt_prio,
|
||||||
addr_t const utcb)
|
addr_t const utcb)
|
||||||
:
|
:
|
||||||
_stack_size(0),
|
_stack_size(0),
|
||||||
|
@ -132,7 +132,9 @@ Platform_thread::Platform_thread(const char * const label,
|
||||||
_utcb_phys = (Native_utcb *)ram->phys_addr(_utcb);
|
_utcb_phys = (Native_utcb *)ram->phys_addr(_utcb);
|
||||||
|
|
||||||
/* create kernel object */
|
/* create kernel object */
|
||||||
_id = Kernel::new_thread(_kernel_thread, priority, _label);
|
enum { MAX_PRIO = Kernel::Priority::MAX };
|
||||||
|
auto const phys_prio = Cpu_session::scale_priority(MAX_PRIO, virt_prio);
|
||||||
|
_id = Kernel::new_thread(_kernel_thread, phys_prio, _label);
|
||||||
if (!_id) {
|
if (!_id) {
|
||||||
PERR("failed to create kernel object");
|
PERR("failed to create kernel object");
|
||||||
throw Cpu_session::Thread_creation_failed();
|
throw Cpu_session::Thread_creation_failed();
|
||||||
|
|
|
@ -54,12 +54,12 @@ void Thread_base::_thread_start()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
Thread_base::Thread_base(const char *name, size_t stack_size)
|
Thread_base::Thread_base(const char * const label, size_t const stack_size)
|
||||||
:
|
:
|
||||||
_list_element(this)
|
_list_element(this)
|
||||||
{
|
{
|
||||||
_tid.platform_thread = new (platform()->core_mem_alloc())
|
_tid.platform_thread = new (platform()->core_mem_alloc())
|
||||||
Platform_thread(name, stack_size, Kernel::core_id());
|
Platform_thread(stack_size, Kernel::core_id(), label);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue