xref: /aosp_15_r20/external/musl/src/thread/pthread_getschedparam.c (revision c9945492fdd68bbe62686c5b452b4dc1be3f8453)
1*c9945492SAndroid Build Coastguard Worker #include "pthread_impl.h"
2*c9945492SAndroid Build Coastguard Worker #include "lock.h"
3*c9945492SAndroid Build Coastguard Worker 
pthread_getschedparam(pthread_t t,int * restrict policy,struct sched_param * restrict param)4*c9945492SAndroid Build Coastguard Worker int pthread_getschedparam(pthread_t t, int *restrict policy, struct sched_param *restrict param)
5*c9945492SAndroid Build Coastguard Worker {
6*c9945492SAndroid Build Coastguard Worker 	int r;
7*c9945492SAndroid Build Coastguard Worker 	sigset_t set;
8*c9945492SAndroid Build Coastguard Worker 	__block_app_sigs(&set);
9*c9945492SAndroid Build Coastguard Worker 	LOCK(t->killlock);
10*c9945492SAndroid Build Coastguard Worker 	if (!t->tid) {
11*c9945492SAndroid Build Coastguard Worker 		r = ESRCH;
12*c9945492SAndroid Build Coastguard Worker 	} else {
13*c9945492SAndroid Build Coastguard Worker 		r = -__syscall(SYS_sched_getparam, t->tid, param);
14*c9945492SAndroid Build Coastguard Worker 		if (!r) {
15*c9945492SAndroid Build Coastguard Worker 			*policy = __syscall(SYS_sched_getscheduler, t->tid);
16*c9945492SAndroid Build Coastguard Worker 		}
17*c9945492SAndroid Build Coastguard Worker 	}
18*c9945492SAndroid Build Coastguard Worker 	UNLOCK(t->killlock);
19*c9945492SAndroid Build Coastguard Worker 	__restore_sigs(&set);
20*c9945492SAndroid Build Coastguard Worker 	return r;
21*c9945492SAndroid Build Coastguard Worker }
22