fix core:thread and a memory leak

in the future probably native non-pthread implementation for haiku will be required
This commit is contained in:
avanspector
2024-02-27 02:38:06 +01:00
parent 38c69b9691
commit fca691a066
3 changed files with 22 additions and 17 deletions
+9 -4
View File
@@ -1,4 +1,4 @@
// +build linux, darwin, freebsd, openbsd
// +build linux, darwin, freebsd, openbsd, haiku
// +private
package thread
@@ -78,7 +78,9 @@ _create :: proc(procedure: Thread_Proc, priority: Thread_Priority) -> ^Thread {
// NOTE(tetra, 2019-11-01): These only fail if their argument is invalid.
assert(unix.pthread_attr_setdetachstate(&attrs, unix.PTHREAD_CREATE_JOINABLE) == 0)
assert(unix.pthread_attr_setinheritsched(&attrs, unix.PTHREAD_EXPLICIT_SCHED) == 0)
when ODIN_OS != .Haiku {
assert(unix.pthread_attr_setinheritsched(&attrs, unix.PTHREAD_EXPLICIT_SCHED) == 0)
}
thread := new(Thread)
if thread == nil {
@@ -88,8 +90,11 @@ _create :: proc(procedure: Thread_Proc, priority: Thread_Priority) -> ^Thread {
// Set thread priority.
policy: i32
res := unix.pthread_attr_getschedpolicy(&attrs, &policy)
assert(res == 0)
res: i32
when ODIN_OS != .Haiku {
res = unix.pthread_attr_getschedpolicy(&attrs, &policy)
assert(res == 0)
}
params: unix.sched_param
res = unix.pthread_attr_getschedparam(&attrs, &params)
assert(res == 0)