리눅스에서 pi-futex 에 관한 내용을 보고, priority inheritance 를 어떤 식으로

지원하는지에 대해 많이 검색해보고 있으나 정보 수집이 어려워서 질문을 올려봅니다.

 

기본적으로 futex_lock_pi / futex_unlock_pi 를 비롯해서 futex_wait_requeue_pi / futex_cmp_requeue_pi(이건 futex_requeue)

등의 시스템 콜이 지원되고 있는데, 잘 이해가 안되는 부분이 몇 가지 있습니다.

 

이런 시스템 콜들은 모두 priority inheritance 를 유저 모드에서 구현하기 "위한" 시스템 콜인가요?

아니면 priority inheritance 를 이미 내부적으로 지원한다는 의미인가요?

 

 

glibc 소스를 보면 pthread_mutex_lock 이나 pthread_mutex_unlock 등의 함수 내에서는

futex_lock_pi 와 futex_unlock_pi 를 사용하는 것으로 보이고 뒤의 requeue_pi 계열 함수는

사용을 하지 않는 것으로 보입니다.

 

그것도 처음 부분 코드에서

 

unsigned int type = PTHREAD_MUTEX_TYPE (mutex);
  if (__builtin_expect (type & ~PTHREAD_MUTEX_KIND_MASK_NP, 0))
    return __pthread_mutex_lock_full (mutex);

이러한 조건에서 __pthread_mutex_lock_full 로 들어가는데, 제가 일반적으로 어플리케이션에서

사용하는 것처럼 락을 사용하는 경우 저 함수 호출은 되지 않고 바로 lll_futex_wait 로 그냥 가버리는 것 같습니다.

 

PTHREAD_MUTEX_KIND_MASK_NP 가 무슨 의미의 타입인지도 검색해도 잘 안나와서 모르겠네요.

pthread_cond_~ 계열 함수에서는 requeue_pi 계열 함수를 사용하는 것으로 보이기는 하는데,

 

 

결과적으로 궁금한 것은 pthread 가 priority inheritance 를 지원을 하는 건가요?

사실 우선순위가 역전되도록 예제 코드를 만들어보고 싶어도 개별 쓰레드 우선순위 설정하는

것부터 영 막혀서 잘 안되네요.

 

대략적으로 알려주시면 정말 감사하겠습니다..

번호 제목 글쓴이 날짜 조회 수
공지 [공지] 프로그래밍 관련 Q&A 게시판 입니다. woos 2016.04.09 22245
438 raw device에 random write를 보내고 싶습니다. ysh 2015.01.29 6268
437 커널 이미지가 올라가는 물리 메모리의 시작주소는 어디일까요? shepherd44 2015.01.07 1935
436 메모리 페이지 테이블에 관란 질문입니다.(TTBR0, TTBR1) 김영민 2014.12.16 2433
435 리눅스 커널 내부구조 소스 키보드 LED예제중 에러문제 천하무적주석 2014.12.11 1827
434 TX timestamp 관련 질문 정재훈 2014.11.04 2218
433 ioremap 관련해서 질문드립니다. [1] ysh 2014.10.29 2516
432 안녕하세요. 쓰레드에 관련하여 질문이 있습니다. 송창인 2014.10.22 1618
» 리눅스에서 지원하는 priority inheritance futex 에 대해서 질문입니다. CVE 2014.10.13 2327
430 mmap하여 read,write에 관한 질문입니다. [1] ysh 2014.10.08 2215
429 NAND ERASE 할 때 BLOCK 단위로 지우지 않는 방법 있을까요 ? [1] 최고운 2014.10.02 1813
428 atomic_read, atomic_add 시 interrupt disable, restore 가 필요한지.. [4] YYS 2014.10.02 3847
427 32bit 운영체제 resistor가 double형 변수처리하는 방법 구자경 2014.09.25 1576
426 안드로이드 포팅 질문드려요. [1] shepherd44 2014.09.18 2019
425 compressed/head.s 에서 LC0: 코드 관련 [1] erasmooth 2014.09.17 1853
424 "코드로 알아보는 ARM 리눅스 커널" 책에서...(초판 2쇄) erasmooth 2014.09.17 2314
423 boot.bin 파일을 부팅하는 usb를 만들고 싶습니다. 마고 2014.09.16 1835
422 리눅스에서 local APIC 타이머 레지스터 사용 질문드립니다. it876 2014.09.15 2108
421 __mmap_switched 레이블 전후로 PIC 에서 절대주소로 전환되는 원리 [1] erasmooth 2014.09.12 1880
420 qemu에 커널을 올릴 때 에러가 발생합니다. [3] ysh 2014.09.10 2170
419 시스템콜 대해서 질문좀 드려봅니다. [6] 장비익덕 2014.08.14 3973
XE Login