Change sizes of pthread types for freebsd

This commit is contained in:
Christian Seibold
2020-09-14 16:48:55 -05:00
parent dd7b29e681
commit 65787381c1

View File

@@ -5,24 +5,21 @@ import "core:c";
pthread_t :: distinct u64;
// pthread_t :: struct #align 16 { x: u64 };
// NOTE(tetra): Got all the size constants from pthreadtypes-arch.h on my
// Linux machine.
PTHREAD_COND_T_SIZE :: 8;
PTHREAD_COND_T_SIZE :: 48;
PTHREAD_MUTEXATTR_T_SIZE :: 4;
PTHREAD_CONDATTR_T_SIZE :: 4;
PTHREAD_MUTEXATTR_T_SIZE :: 8;
PTHREAD_CONDATTR_T_SIZE :: 8;
PTHREAD_RWLOCKATTR_T_SIZE :: 8;
PTHREAD_BARRIERATTR_T_SIZE :: 4;
PTHREAD_BARRIERATTR_T_SIZE :: 8;
// WARNING: The sizes of these things are different yet again
// on non-X86!
when size_of(int) == 8 {
PTHREAD_ATTR_T_SIZE :: 56;
PTHREAD_MUTEX_T_SIZE :: 40;
PTHREAD_RWLOCK_T_SIZE :: 56;
PTHREAD_BARRIER_T_SIZE :: 32;
} else when size_of(int) == 4 {
PTHREAD_ATTR_T_SIZE :: 8;
PTHREAD_MUTEX_T_SIZE :: 8;
PTHREAD_RWLOCK_T_SIZE :: 8;
PTHREAD_BARRIER_T_SIZE :: 8;
} else when size_of(int) == 4 { // TODO
PTHREAD_ATTR_T_SIZE :: 32;
PTHREAD_MUTEX_T_SIZE :: 32;
PTHREAD_RWLOCK_T_SIZE :: 44;
@@ -82,6 +79,7 @@ sched_param :: struct {
/*sem_t :: struct #align 16 {
_: [SEM_T_SIZE] c.char,
}*/
SEM_T_SIZE :: 16;
_usem :: struct {
_has_waiters: u32,
_count: u32,
@@ -97,11 +95,11 @@ sem_t :: struct {
_padding: u32,
}
when size_of(int) == 8 {
/*when size_of(int) == 8 {
SEM_T_SIZE :: 32;
} else when size_of(int) == 4 {
SEM_T_SIZE :: 16;
}
}*/
foreign import "system:pthread"