#include "kern_internal.h"
#include <kern/debug.h>
pthread_priority_t
pthread_qos_class_get_priority(int qos)
{
switch (qos) {
case THREAD_QOS_USER_INTERACTIVE: return _pthread_priority_make_newest(QOS_CLASS_USER_INTERACTIVE, 0, 0);
case THREAD_QOS_USER_INITIATED: return _pthread_priority_make_newest(QOS_CLASS_USER_INITIATED, 0, 0);
case THREAD_QOS_LEGACY: return _pthread_priority_make_newest(QOS_CLASS_DEFAULT, 0, 0);
case THREAD_QOS_UTILITY: return _pthread_priority_make_newest(QOS_CLASS_UTILITY, 0, 0);
case THREAD_QOS_BACKGROUND: return _pthread_priority_make_newest(QOS_CLASS_BACKGROUND, 0, 0);
case THREAD_QOS_MAINTENANCE: return _pthread_priority_make_newest(QOS_CLASS_MAINTENANCE, 0, 0);
default: return _pthread_priority_make_newest(QOS_CLASS_UNSPECIFIED, 0, 0);
}
}
int
pthread_priority_get_qos_class(pthread_priority_t priority)
{
switch (_pthread_priority_get_qos_newest(priority)) {
case QOS_CLASS_USER_INTERACTIVE: return THREAD_QOS_USER_INTERACTIVE;
case QOS_CLASS_USER_INITIATED: return THREAD_QOS_USER_INITIATED;
case QOS_CLASS_DEFAULT: return THREAD_QOS_LEGACY;
case QOS_CLASS_UTILITY: return THREAD_QOS_UTILITY;
case QOS_CLASS_BACKGROUND: return THREAD_QOS_BACKGROUND;
case QOS_CLASS_MAINTENANCE: return THREAD_QOS_MAINTENANCE;
default: return THREAD_QOS_UNSPECIFIED;
}
}
pthread_priority_t
pthread_priority_from_class_index(int index)
{
qos_class_t qos;
switch (index) {
case 0: qos = QOS_CLASS_USER_INTERACTIVE; break;
case 1: qos = QOS_CLASS_USER_INITIATED; break;
case 2: qos = QOS_CLASS_DEFAULT; break;
case 3: qos = QOS_CLASS_UTILITY; break;
case 4: qos = QOS_CLASS_BACKGROUND; break;
case 5: qos = QOS_CLASS_MAINTENANCE; break;
default:
qos = QOS_CLASS_UTILITY;
}
pthread_priority_t priority;
priority = _pthread_priority_make_newest(qos, 0, 0);
return priority;
}
int
pthread_priority_get_class_index(pthread_priority_t priority)
{
switch (_pthread_priority_get_qos_newest(priority)) {
case QOS_CLASS_USER_INTERACTIVE: return 0;
case QOS_CLASS_USER_INITIATED: return 1;
case QOS_CLASS_DEFAULT: return 2;
case QOS_CLASS_UTILITY: return 3;
case QOS_CLASS_BACKGROUND: return 4;
case QOS_CLASS_MAINTENANCE: return 5;
default:
return 2;
}
}