• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #include "pthread_impl.h"
2 #include "lock.h"
3 
pthread_getschedparam(pthread_t t,int * restrict policy,struct sched_param * restrict param)4 int pthread_getschedparam(pthread_t t, int *restrict policy, struct sched_param *restrict param)
5 {
6 	int r;
7 	sigset_t set;
8 	__block_app_sigs(&set);
9 	LOCK(t->killlock);
10 	if (!t->tid) {
11 		r = ESRCH;
12 	} else {
13 #ifdef __LITEOS_A__
14 		r = __syscall(SYS_sched_getparam, t->tid, param, MUSL_TYPE_THREAD);
15 		if (r >= 0) {
16 			r = __syscall(SYS_sched_getscheduler, t->tid, MUSL_TYPE_THREAD);
17 			if (r >= 0) {
18 				*policy = r;
19 				r = 0;
20 			}
21 		}
22 
23 		if (r < 0) {
24 			r = -r;
25 		}
26 #else
27 		r = -__syscall(SYS_sched_getparam, t->tid, param);
28 		if (!r) {
29 			*policy = __syscall(SYS_sched_getscheduler, t->tid);
30 		}
31 #endif
32 	}
33 	UNLOCK(t->killlock);
34 	__restore_sigs(&set);
35 	return r;
36 }
37