register_chrdev_region(dev_t from, unsigned count, const char * name);
을 사용하는 커널 모듈 등록에 대해 배우고 있습니다.리눅스 디바이스 드라이버의 register_chrdev_region()에 관한 질문들
이 기능의 유무에 관계없이 커널 모듈이 예상대로 작동한다는 것을 알았습니다. 나는 시험에 사용되는 코드 :
first = MKDEV(MAJOR_NUM, MINOR_NUM);
register_chrdev_region(first, count, DEVICE_NAME);//<---with and without
mycdev=cdev_alloc();
mycdev->ops= &fops;
mycdev->owner = THIS_MODULE;
if (cdev_add(mycdev,first, count) == 0)
{printk(KERN_ALERT "driver loaded\n");}
I 라인 register_chrdev_region(first, count, DEVICE_NAME);
에서 주석하고 printk
메시지가 여전히 나타났다. 나는 사용자 공간에서 이것의 유무에 관계없이 드라이버와 의사 소통을 시도했고, 둘 다 성공했다.
제 질문은,이 기능은 register_chrdev_region()
입니다. 다른 사람에게 "주요 번호를 사용하고 있습니다. 사용하지 마세요"라고 말하면서 좋은 드라이버를 만들 수 있습니다.
커널 소스 char_dev.c
에서이 기능을 이해하려고했으나 익숙하지 않은 사람이 누구인지 이해하기가 어렵습니다.
감사합니다.