#include "pthread_impl.h"
#include "syscall.h"

__attribute__((__visibility__("hidden")))
void *__start_sched(void *p)
{
	struct start_sched_args *ssa = p;
	void *start_arg = ssa->start_arg;
	void *(*start_fn)(void *) = ssa->start_fn;
	pthread_t self = __pthread_self();

	int ret = -__syscall(SYS_sched_setscheduler, self->tid,
		ssa->attr->_a_policy, &ssa->attr->_a_prio);
	if (!ret) __restore_sigs(&ssa->mask);
	a_store(&ssa->futex, ret);
	__wake(&ssa->futex, 1, 1);
	if (ret) {
		self->detach_state = DT_DYNAMIC;
		return 0;
	}
	return start_fn(start_arg);
}

int pthread_attr_setinheritsched(pthread_attr_t *a, int inherit)
{
	if (inherit > 1U) return EINVAL;
	a->_a_sched = inherit;
	return 0;
}
