/ proc에 파일을 작성하면 dmesg가 지속적으로 넘쳐납니다.

쪽빛

/ proc 파일 입력 기능을 사용하여 Linux 커널 모듈에서 변수를 읽거나 쓰려고합니다. 커널 모듈이 성공적으로 컴파일되지만 다음을 통해 작성하려고 할 때

echo 1 > My_file

이 작업은 끝나지 않았습니다.

또한 dmesg 콘솔은 지속적으로 임의의 값으로 넘쳐납니다.

[ 1171.481231] proc_write_flag New_Flag 1124646486
[ 1171.481245] proc_write_flag New_Flag 1124646486
[ 1171.481259] proc_write_flag New_Flag 1124646486
[ 1171.481271] proc_write_flag New_Flag 1124646486
[ 1171.481473] ^C

나는 리눅스 장치 드라이버를 처음 사용 /proc하고 리눅스 커널에서 제공 하는 기능 을 사용하려고합니다 . 이 커널 모듈을 제거하려고했지만 다시 작업이 완료되지 않았습니다 .

이 동작의 원인은 무엇이며 어떻게 해결할 수 있습니까?

다음은 코드입니다.

int my_flag;
static struct proc_dir_entry *pdir = NULL;

MODULE_LICENSE("GPL");
MODULE_AUTHOR("GPL");

static ssize_t proc_read_flag(struct file* page,char __user * data, size_t count, loff_t *offset);
static ssize_t proc_write_flag(struct file *file, const char __user* ubuf, size_t count, loff_t* offset);

static struct file_operations myops = 
{
    .owner = THIS_MODULE,
    .read = proc_read_flag,
    .write= proc_write_flag,
};


//ssize_t (*read) (struct file *, char __user *, size_t, loff_t *);
//Updated Read function after the reply.
    static ssize_t proc_read_flag(struct file* page,char __user * data, size_t count,loff_t *offset)
{
    int ret;
    if( count >my_flag)         //my_flag holds the count of chars received by write function.
            count = my_flag;
    ret = copy_to_user(data, my_buf, my_flag );
     printk("%s: ret = %d ,my_flag %d\n",__FUNCTION__, ret, my_flag);
    return ( my_flag - ret );
}


//ssize_t (*write) (struct file *, const char __user *, size_t, loff_t *);
//Updated Write function After the reply.
static ssize_t proc_write_flag(struct file *file, const char __user* ubuf, size_t count, loff_t* offset)
{

    if( copy_from_user(my_buf,ubuf,count) ){        //Returns No. of bytes could not copy
            return -EFAULT;
    }
    my_flag = count;
    printk("%s New_Flag %d Data: %s\n",__FUNCTION__,my_flag,my_buf);
    return count;
}

int init_module(void)
{
    struct proc_dir_entry *pfile = NULL;

    pdir = proc_mkdir("My_dir",NULL);
    if(!pdir){
        return -ENOMEM;
    }

    pfile = proc_create("My_file", 0666, pdir, &myops);
    if(!pfile)
        return -ENOMEM;


    printk("Proc_entry Created Successfully, Module initialized\n");
    return 0;
}

void cleanup_function(void)
{
    remove_proc_entry("My_file", pdir);
    remove_proc_entry("My_dir", NULL);
    printk("Removing Proc_entry!!!");
}
이카루스 3

쓰기 함수는 처리 한 바이트 수를 반환해야합니다.

귀하의 경우 'proc_write_flag'함수는 'ret'(0)을 반환합니다. 이는 'ubuf'에서 'count'바이트 수를 처리 할 때까지 반복적으로 호출됨을 의미합니다.

마찬가지로 'proc_read_flag'는 'data'에 쓴 바이트 수를 반환해야합니다. 귀하의 경우 0 (len)을 반환합니다.

'proc_write_flag'함수에는 다른 문제가 있습니다.

'buf'배열이 초기화되지 않았고 'buf'(address)를 int로 캐스팅하면 예상되는 답변이 제공되지 않습니다.

http://tuxthink.blogspot.com/2013/12/creating-directory-under-proc-in-kernel.html로 시작하십시오.

그런 다음 kstrtol () 함수를 살펴보십시오.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

로그인 화면을 클릭하고 메인 페이지로 돌아 가면 내 HTML 웹 사이트가 올바른 방법으로 넘쳐납니다.

분류에서Dev

git remote에서 가져온 후 Working Copy에 파일 변경 사항이 넘쳐납니다. 이유는 무엇입니까? 그들을 저지하는 것이 안전한가요?

분류에서Dev

창 크기를 조정하면 텍스트가 부트 스트랩 버튼 경계를 넘치거나 버튼이 div 영역 밖으로 넘쳐납니다.

분류에서Dev

확장 가능한 간단한 목록은 하단에 x 픽셀이 넘쳐납니다.

분류에서Dev

Flexbox 부모 컨테이너가 자식과 함께 성장하지 않습니까? 내부 콘텐츠가 상위 div 밖으로 넘쳐납니다.

분류에서Dev

종속성을 명시 적으로 요구하지 않고 Rspec에서 순서 종속 지원 파일을로드하려면 어떻게해야합니까?

분류에서Dev

find로 파일을 구문 분석하면 다른 파일에서 이상한 결과가 나타납니다.

분류에서Dev

마지막 행에 연속적으로 나타나면 값을 추가하고 그렇지 않으면 동일한 값을 유지합니다.

분류에서Dev

pylab 가져 오기 후 ipython 디버거가 Qt 오류로 넘쳐납니다.

분류에서Dev

자바에서 가장 효율적인 방법은 지속적으로 객체로 작은 파일을 읽기

분류에서Dev

작업이 성공적으로 전달되고 페이로드가 감속기에 도달하지만 상태는 동일하게 유지됩니다. React + Redux

분류에서Dev

Python은 지속적으로 새 데이터를 작성하고 파일에 저장합니다.

분류에서Dev

zip 파일에 파일을 추가하면 전체 파일이 다시 작성됩니까?

분류에서Dev

ZipOutputStream으로 파일을 압축하면 일관성없는 결과가 나타납니다.

분류에서Dev

React Native에서 Google Drive에 업로드 한 파일을 다운로드하면 원본 파일과 다른 파일 크기가 나타납니다.

분류에서Dev

참조 투명성을 유지하면서 JSON을 파일에 효율적으로 작성하는 방법은 무엇입니까?

분류에서Dev

AWS의 s3에서 sagemaker로 파일을 읽으면 403 금지 오류가 발생하지만 다른 작업이 파일에서 작동합니다.

분류에서Dev

Linux에서 창 제목으로 .txt 파일을 지속적으로 업데이트 하시겠습니까?

분류에서Dev

Linux Mint 메뉴가 넘쳐납니다

분류에서Dev

Java로 Google 드라이브에서 파일을 다운로드하면 기호가 나타납니다.

분류에서Dev

hdfs에 기록 된 파일을 지속적으로 처리하는 방법을 찾고 있습니다.

분류에서Dev

임시 파일을 작성하고 인터페이스를 통해 .ini 파일로 이동하면 C #에서 오류가 발생합니다.

분류에서Dev

개체의 속성을 개별적으로 편집하고 각 속성에 대해 동적으로 열려면 "편집"상자가 필요합니다.

분류에서Dev

Windows에서 파일의 가독성을 재귀 적으로 나열하려면 어떻게해야합니까?

분류에서Dev

Windows에서 파일의 가독성을 재귀 적으로 나열하려면 어떻게해야합니까?

분류에서Dev

dmesg가 printk 문을 표시하지 않습니다.

분류에서Dev

왜 텍스트가 HTML 버튼으로 넘쳐 납니까?

분류에서Dev

.json 파일을 작성하면 다른 응용 프로그램에서 작동하지 않습니다.

분류에서Dev

HTML이 Bootstrap Modal의 양식 필드에 대한 값 속성을 동적으로 추가하지 않습니다.

Related 관련 기사

  1. 1

    로그인 화면을 클릭하고 메인 페이지로 돌아 가면 내 HTML 웹 사이트가 올바른 방법으로 넘쳐납니다.

  2. 2

    git remote에서 가져온 후 Working Copy에 파일 변경 사항이 넘쳐납니다. 이유는 무엇입니까? 그들을 저지하는 것이 안전한가요?

  3. 3

    창 크기를 조정하면 텍스트가 부트 스트랩 버튼 경계를 넘치거나 버튼이 div 영역 밖으로 넘쳐납니다.

  4. 4

    확장 가능한 간단한 목록은 하단에 x 픽셀이 넘쳐납니다.

  5. 5

    Flexbox 부모 컨테이너가 자식과 함께 성장하지 않습니까? 내부 콘텐츠가 상위 div 밖으로 넘쳐납니다.

  6. 6

    종속성을 명시 적으로 요구하지 않고 Rspec에서 순서 종속 지원 파일을로드하려면 어떻게해야합니까?

  7. 7

    find로 파일을 구문 분석하면 다른 파일에서 이상한 결과가 나타납니다.

  8. 8

    마지막 행에 연속적으로 나타나면 값을 추가하고 그렇지 않으면 동일한 값을 유지합니다.

  9. 9

    pylab 가져 오기 후 ipython 디버거가 Qt 오류로 넘쳐납니다.

  10. 10

    자바에서 가장 효율적인 방법은 지속적으로 객체로 작은 파일을 읽기

  11. 11

    작업이 성공적으로 전달되고 페이로드가 감속기에 도달하지만 상태는 동일하게 유지됩니다. React + Redux

  12. 12

    Python은 지속적으로 새 데이터를 작성하고 파일에 저장합니다.

  13. 13

    zip 파일에 파일을 추가하면 전체 파일이 다시 작성됩니까?

  14. 14

    ZipOutputStream으로 파일을 압축하면 일관성없는 결과가 나타납니다.

  15. 15

    React Native에서 Google Drive에 업로드 한 파일을 다운로드하면 원본 파일과 다른 파일 크기가 나타납니다.

  16. 16

    참조 투명성을 유지하면서 JSON을 파일에 효율적으로 작성하는 방법은 무엇입니까?

  17. 17

    AWS의 s3에서 sagemaker로 파일을 읽으면 403 금지 오류가 발생하지만 다른 작업이 파일에서 작동합니다.

  18. 18

    Linux에서 창 제목으로 .txt 파일을 지속적으로 업데이트 하시겠습니까?

  19. 19

    Linux Mint 메뉴가 넘쳐납니다

  20. 20

    Java로 Google 드라이브에서 파일을 다운로드하면 기호가 나타납니다.

  21. 21

    hdfs에 기록 된 파일을 지속적으로 처리하는 방법을 찾고 있습니다.

  22. 22

    임시 파일을 작성하고 인터페이스를 통해 .ini 파일로 이동하면 C #에서 오류가 발생합니다.

  23. 23

    개체의 속성을 개별적으로 편집하고 각 속성에 대해 동적으로 열려면 "편집"상자가 필요합니다.

  24. 24

    Windows에서 파일의 가독성을 재귀 적으로 나열하려면 어떻게해야합니까?

  25. 25

    Windows에서 파일의 가독성을 재귀 적으로 나열하려면 어떻게해야합니까?

  26. 26

    dmesg가 printk 문을 표시하지 않습니다.

  27. 27

    왜 텍스트가 HTML 버튼으로 넘쳐 납니까?

  28. 28

    .json 파일을 작성하면 다른 응용 프로그램에서 작동하지 않습니다.

  29. 29

    HTML이 Bootstrap Modal의 양식 필드에 대한 값 속성을 동적으로 추가하지 않습니다.

뜨겁다태그

보관