리눅스에서
리눅스에는 /etc/security/limits.conf 파일에 설정하면된다.참고 : http://stackoverflow.com/questions/8111302/why-does-pthread-setschedparam-produce-eperm-on-opensuse-11-4
안드로이드 에서
안드로이드에서는 다른 방법을 사용한다.Init 문법중에 setrlimit 라는 Command를 사용하여 limit를 해제해준다.
setrlimit <resource> <cur> <max>
resource 중 priority 관련 항목은 RLIMIT_RTPRIO인데 정수로 14(bionic/libc/kernel/common/asm-generic/resource.h 참고)값을 가지고 있다.
그러므로 다음과 같은 라인을 Init.rc에 추가하면 limit 값을 설정해줄 수 있다.
setrlimit 14 99 99
설정이 정상적으로 됐는지 확인 하는 방법은 ulimit 명령을 사용하면 된다.
ulimit -r 값이 99로 되어 있으면 제한이 정상적으로 풀린것이다.
이렇게 설정하면 root 계정이 아니더라도 pthread_setschedparam을 이용하여 process의 우선순위를 변경 할 수 있다.