eventfd
-
kvm irqfd개발/가상화 2018. 8. 11. 14:02
* 개인 공부용도로 정리한 것이라 부정확한 정보가 있을 수도 있으니 참고용으로만 사용하세요. IRQFD irqfd는 QEMU에서 정의한 eventfd와 GSI(Global System Interrupt) 값을 이용해서 Guest에 바로 interrupt를 바로 쏘아 줄 때(irqfd_inject) 사용하는 kvm interrupt 라이브러리다. 간단한 event를 만들 때 사용하는 eventfd 메커니즘을 응용한 대표적인 예다. 좀더 디테일한 동작 내용을 이해하기 위해 초기화 코드를 순서대로 분석해보자. 1. QEMU 장치 정보 세팅 후 kvm으로 ioctl 전달 QEMU에서는 장치가 사용하려는 GSI(Global system interrupt)와 상태에 대한 정보를 저장하는 flag 값 그리고 qemu..
-
eventfd개발/컴퓨터사이언스 2018. 7. 18. 21:37
eventfd는 리눅스기반 운영체제에서 파일 디스크립터를 통해 프로세스들끼리 통신 할 수 있는 API중 하나다. IPC로 가장 유명한 pipe는 read와 write용으로 채널을 따로 만드는 것과는 달리 eventfd에서는 읽고 쓸 파일 디스크립터 하나면 충분하기 때문에 번거로운 세팅작업 없이 간단하게 구현 할 수 있다. 그러나 단 한개의 채널을 사용하는만큼 사용할 수 있는 기능은 제한적이다. 이 파일 디스크립터로 교환할 수 있는 값은 1 이상의 64비트 정수 하나가 전부라 데이터 전송보다는 이름처럼 프로세스간에 event를 전달하는 용도로 사용한다. 1. eventfd(uint64 initval, int flag) 프로세스들끼리 통신 할 수 있는 파일 디스크립터를 만드는 함수다. 종료후에는 채널로 사용..