ioctl mmap fsyncflush jhkim 3624etri re kr 2015

  • Slides: 10
Download presentation
내용 보충 (ioctl, mmap, fsync&flush) 김진홍 jhkim 3624@etri. re. kr 2015. 10. 11

내용 보충 (ioctl, mmap, fsync&flush) 김진홍 jhkim 3624@etri. re. kr 2015. 10. 11

목차 ioctl mmap fsync와 flush 2/9

목차 ioctl mmap fsync와 flush 2/9

ioctl(chapter 10) • 디바이스 제어 : ioctl() • read(), write() 함수만으로 제어가 불가능 할때

ioctl(chapter 10) • 디바이스 제어 : ioctl() • read(), write() 함수만으로 제어가 불가능 할때 ioctl • 이용하는 방법은 디바이스 파일에 따라 모두 다름 • man ioctl_list 이용 mmap • e. g. ioctl 명령을 이용해서 프린트 포트의 핀의 상태를 요청하는 코드 #include <sys/type. h> #include <sys/stat. h> #include <fcntl. h> #include <unistd. h> #include <linux/lp. h> <----- 프린트 포트 관련 명령이 담겨있는 헤더파일 int main( int argc, char ** argv) { int fd; int prnstate; int lp; unsigned char buff[128]; fd = open("/dev/lp 0", O_RDWR | O_NDELAY); <----- 프린트 포트 디바이스 열기 fsync와 flush if( fd< 0) { perror("open error"); <----- 열기 실패시 에러 메세지 출력 exit(1); } while(1) { ioctl(fd, LPGETSTATUS , &prnstate); <----- 프린트 포트의 상태를 요청 (프린트 포트에 대한 명령은 LPGETSTATUS, 프린트 포트의 상태는 prnstate변수에 저장됨) if(prnstate & LP_PSELECD) printf("ONn"); else printf("OFFn"); usleep(50000); } close(fd); return 0; } 3/9

ioremap • 물리 주소 공간과 커널 가상 주소 공간 매핑 • 원형 • void

ioremap • 물리 주소 공간과 커널 가상 주소 공간 매핑 • 원형 • void *ioremap(unsigned long offset, unsigned long size); • 매개변수 • 물리 주소의 시작주소와 크기 • size는 MMU의 PAGE_SIZE의 n배수 ioctl mmap fsync와 flush • 사용 • char *videoptr; videoptr = ioremap(0 x 000 b 0000, 0 x 1000); if(videoptr !=NULL){ *videoptr = ‘A’; } 7/9

Qna 9/9

Qna 9/9