debloat src/thread tree but putting lots of junk in one file

POSIX includes mostly-useless attribute-get functions for each
attribute-set function, presumably out of some object-oriented
dogmatism. the get functions are not useful with the simple idiomatic
usage of attributes. there are of course possible valid uses of them
(like writing wrappers for pthread init functions that perform special
actions on the presence of certain attributes), but considering how
tiny these functions are anyway, little is lost by putting them all in
one file, and some build-time cost and archive-file-size benefits are
achieved.
This commit is contained in:
Rich Felker
2012-11-11 16:08:38 -05:00
parent 7df42e8744
commit c4a35f8c2a
16 changed files with 93 additions and 108 deletions

View File

@ -0,0 +1,93 @@
#include "pthread_impl.h"
int pthread_attr_getdetachstate(const pthread_attr_t *a, int *state)
{
*state = a->_a_detach;
return 0;
}
int pthread_attr_getguardsize(const pthread_attr_t *restrict a, size_t *restrict size)
{
*size = a->_a_guardsize + DEFAULT_GUARD_SIZE;
return 0;
}
int pthread_attr_getinheritsched(const pthread_attr_t *a, int *inherit)
{
*inherit = a->_a_sched;
return 0;
}
int pthread_attr_getschedparam(const pthread_attr_t *restrict a, struct sched_param *restrict param)
{
param->sched_priority = a->_a_prio;
return 0;
}
int pthread_attr_getschedpolicy(const pthread_attr_t *a, int *policy)
{
*policy = a->_a_policy;
return 0;
}
int pthread_attr_getscope(const pthread_attr_t *restrict a, int *restrict scope)
{
*scope = PTHREAD_SCOPE_SYSTEM;
return 0;
}
int pthread_attr_getstack(const pthread_attr_t *restrict a, void **restrict addr, size_t *restrict size)
{
if (!a->_a_stackaddr)
return EINVAL;
*size = a->_a_stacksize + DEFAULT_STACK_SIZE;
*addr = (void *)(a->_a_stackaddr - *size);
return 0;
}
int pthread_attr_getstacksize(const pthread_attr_t *restrict a, size_t *restrict size)
{
*size = a->_a_stacksize + DEFAULT_STACK_SIZE;
return 0;
}
int pthread_barrierattr_getpshared(const pthread_barrierattr_t *restrict a, int *restrict pshared)
{
*pshared = !!*a;
return 0;
}
int pthread_condattr_getclock(const pthread_condattr_t *restrict a, clockid_t *restrict clk)
{
*clk = *a & 0x7fffffff;
return 0;
}
int pthread_condattr_getpshared(const pthread_condattr_t *restrict a, int *restrict pshared)
{
*pshared = *a>>31;
return 0;
}
int pthread_mutexattr_getpshared(const pthread_mutexattr_t *restrict a, int *restrict pshared)
{
*pshared = *a>>31;
return 0;
}
int pthread_mutexattr_getrobust(const pthread_mutexattr_t *restrict a, int *restrict robust)
{
*robust = *a / 4U % 2;
return 0;
}
int pthread_mutexattr_gettype(const pthread_mutexattr_t *restrict a, int *restrict type)
{
*type = *a & 3;
return 0;
}
int pthread_rwlockattr_getpshared(const pthread_rwlockattr_t *restrict a, int *restrict pshared)
{
*pshared = *(int *)a;
return 0;
}

View File

@ -1,7 +0,0 @@
#include "pthread_impl.h"
int pthread_attr_getdetachstate(const pthread_attr_t *a, int *state)
{
*state = a->_a_detach;
return 0;
}

View File

@ -1,7 +0,0 @@
#include "pthread_impl.h"
int pthread_attr_getguardsize(const pthread_attr_t *restrict a, size_t *restrict size)
{
*size = a->_a_guardsize + DEFAULT_GUARD_SIZE;
return 0;
}

View File

@ -1,7 +0,0 @@
#include "pthread_impl.h"
int pthread_attr_getinheritsched(const pthread_attr_t *a, int *inherit)
{
*inherit = a->_a_sched;
return 0;
}

View File

@ -1,7 +0,0 @@
#include "pthread_impl.h"
int pthread_attr_getschedparam(const pthread_attr_t *restrict a, struct sched_param *restrict param)
{
param->sched_priority = a->_a_prio;
return 0;
}

View File

@ -1,7 +0,0 @@
#include "pthread_impl.h"
int pthread_attr_getschedpolicy(const pthread_attr_t *a, int *policy)
{
*policy = a->_a_policy;
return 0;
}

View File

@ -1,7 +0,0 @@
#include "pthread_impl.h"
int pthread_attr_getscope(const pthread_attr_t *restrict a, int *restrict scope)
{
*scope = PTHREAD_SCOPE_SYSTEM;
return 0;
}

View File

@ -1,10 +0,0 @@
#include "pthread_impl.h"
int pthread_attr_getstack(const pthread_attr_t *restrict a, void **restrict addr, size_t *restrict size)
{
if (!a->_a_stackaddr)
return EINVAL;
*size = a->_a_stacksize + DEFAULT_STACK_SIZE;
*addr = (void *)(a->_a_stackaddr - *size);
return 0;
}

View File

@ -1,7 +0,0 @@
#include "pthread_impl.h"
int pthread_attr_getstacksize(const pthread_attr_t *restrict a, size_t *restrict size)
{
*size = a->_a_stacksize + DEFAULT_STACK_SIZE;
return 0;
}

View File

@ -1,7 +0,0 @@
#include "pthread_impl.h"
int pthread_barrierattr_getpshared(const pthread_barrierattr_t *restrict a, int *restrict pshared)
{
*pshared = !!*a;
return 0;
}

View File

@ -1,7 +0,0 @@
#include "pthread_impl.h"
int pthread_condattr_getclock(const pthread_condattr_t *restrict a, clockid_t *restrict clk)
{
*clk = *a & 0x7fffffff;
return 0;
}

View File

@ -1,7 +0,0 @@
#include "pthread_impl.h"
int pthread_condattr_getpshared(const pthread_condattr_t *restrict a, int *restrict pshared)
{
*pshared = *a>>31;
return 0;
}

View File

@ -1,7 +0,0 @@
#include "pthread_impl.h"
int pthread_mutexattr_getpshared(const pthread_mutexattr_t *restrict a, int *restrict pshared)
{
*pshared = *a>>31;
return 0;
}

View File

@ -1,7 +0,0 @@
#include "pthread_impl.h"
int pthread_mutexattr_getrobust(const pthread_mutexattr_t *restrict a, int *restrict robust)
{
*robust = *a / 4U % 2;
return 0;
}

View File

@ -1,7 +0,0 @@
#include "pthread_impl.h"
int pthread_mutexattr_gettype(const pthread_mutexattr_t *restrict a, int *restrict type)
{
*type = *a & 3;
return 0;
}

View File

@ -1,7 +0,0 @@
#include "pthread_impl.h"
int pthread_rwlockattr_getpshared(const pthread_rwlockattr_t *restrict a, int *restrict pshared)
{
*pshared = *(int *)a;
return 0;
}