리눅스 커널 디바이스에 대하여 질문입니다.

lovejiyoon7의 이미지

제가 지금 작성하는 프로그램에서요
디바이스에 있는 데이터를 응용프로그램으로 받아 오고 싶은데요
그 방법을 도저히 모르겠습니다.
iocrt함수를 써서 함수 호출까지는 했는데요
데이터를 어떻게 받아 와야 할지 모르겠네요
구조체를 선언해서 필요한 데이터를 얻어 올 수 있는거
같은데 명확한 방법을 모르겠습니다
가르쳐 주시면 진정 무한 감사하겠습니다!!!

hie의 이미지

[ kernel land ]

static int foo_ioctl(struct inode *inode, struct file *file,
                    unsigned int cmd, unsigned long arg)
{
    struct foo_stuct_s foo_struct;
        :
        :
    switch(cmd) {
        :
        :
    case FOO_IOCTL_READ:
        :
        :
        return copy_to_user((void __user *)arg, &foo_struct, sizeof(struct foo_stuct_s))? -EFAULT : 0; 
        :

[User Land]
1. device open
2. ioctl로 해당 작업

더 자세한 내용은 커널 코드 혹은 구글링을 이용하세요...