Commit f86f531e9c

David CARLIER <devnexen@gmail.com>
2023-03-27 23:07:29
std: add a subset of the apple's QOS api
1 parent ad5fb48
Changed files (1)
lib
lib/std/c/darwin.zig
@@ -853,6 +853,21 @@ pub const EAI = enum(c_int) {
 
 pub const EAI_MAX = 15;
 
+pub const qos_class_t = enum(c_uint) {
+    /// highest priority QOS class for critical tasks
+    QOS_CLASS_USER_INTERACTIVE = 0x21,
+    /// slightly more moderate priority QOS class
+    QOS_CLASS_USER_INITIATED = 0x19,
+    /// default QOS class when none is set
+    QOS_CLASS_DEFAULT = 0x15,
+    /// more energy efficient QOS class than default
+    QOS_CLASS_UTILITY = 0x11,
+    /// QOS class more appropriate for background tasks
+    QOS_CLASS_BACKGROUND = 0x09,
+    /// QOS class as a return value
+    QOS_CLASS_UNSPECIFIED = 0x00,
+};
+
 pub const pthread_mutex_t = extern struct {
     __sig: c_long = 0x32AAABA7,
     __opaque: [__PTHREAD_MUTEX_SIZE__]u8 = [_]u8{0} ** __PTHREAD_MUTEX_SIZE__,
@@ -877,6 +892,10 @@ pub const pthread_attr_t = extern struct {
 pub extern "c" fn pthread_threadid_np(thread: ?std.c.pthread_t, thread_id: *u64) c_int;
 pub extern "c" fn pthread_setname_np(name: [*:0]const u8) E;
 pub extern "c" fn pthread_getname_np(thread: std.c.pthread_t, name: [*:0]u8, len: usize) E;
+pub extern "c" fn pthread_attr_set_qos_class_np(attr: *pthread_attr_t, qos_class: qos_class_t, relative_priority: c_int) c_int;
+pub extern "c" fn pthread_attr_get_qos_class_np(attr: *pthread_attr_t, qos_class: *qos_class_t, relative_priority: *c_int) c_int;
+pub extern "c" fn pthread_set_qos_class_self_np(qos_class: qos_class_t, relative_priority: c_int) c_int;
+pub extern "c" fn pthread_get_qos_class_np(pthread: std.c.pthread_t, qos_class: *qos_class_t, relative_priority: *c_int) c_int;
 
 pub extern "c" fn arc4random_buf(buf: [*]u8, len: usize) void;