ทำไมเคอร์เนลกำหนด 250 เป็นหมายเลขหลักในไดรเวอร์อุปกรณ์


0

ฉันเพิ่งระบุว่าทำงานเกี่ยวกับการพัฒนาโปรแกรมควบคุมอุปกรณ์ ตอนแรกฉันสร้างไดรเวอร์และแอพพลิเคชั่นที่เรียบง่าย สิ่งที่ฉันสังเกตเห็นคือทุกครั้งที่ฉันแทรกโมดูลเคอร์เนลกำหนดหมายเลขหลัก 250 ฉันต้องการทราบว่าทำไมมันถึงกำหนด 250 เสมอ สิ่งอื่น ๆ ที่ฉันต้องการทราบว่าฉันได้สร้างไฟล์อุปกรณ์ของฉันโดยใช้คำสั่ง "mknod" จะเป็นอย่างไรถ้าฉันต้องการสร้างไฟล์อุปกรณ์ถาวรในหน่วยความจำอุปกรณ์ของฉันที่ยังคงอยู่แม้จะปิดเครื่องไปแล้ว

ความคิดใด ๆ ที่จะได้รับการชื่นชมจริงๆ


240-254 เป็นช่วงสำหรับการใช้งานในท้องถิ่น / ทดลอง ทำไมถึง 250 เสมอฉันไม่รู้
muru

ตัวเลขเหล่านี้ขึ้นอยู่กับไดรเวอร์อุปกรณ์ที่คุณใช้งานหรืออย่างอื่น ฉันกำลังทำงานกับไดรเวอร์ถ่าน เป็นเพราะสิ่งนั้นฉันได้ 250 เสมอ?
Shaswat Dube

คำตอบ:


0

โดยค่าเริ่มต้นคือ 250 เมื่อคุณไม่ได้ระบุหมายเลขหลักขณะลงทะเบียนอุปกรณ์หรือขณะสร้างโหนด (mknod)

ตัวอย่างเช่น: ในการลงทะเบียนไดรเวอร์อุปกรณ์ตัวอักษร, ไวยากรณ์ของฟังก์ชั่นคือ

register_chrdev(Major Number, Name of the driver, File operations);

สิ่งนี้จะต้องทำในฟังก์ชั่นการโทร module_init

เพื่อสร้างโหนดหลังจากที่คุณโหลดโมดูลนั้น

sudo mknod -m 666 /dev/char_driver c 240 0

ที่นี่

  • 666 - การอนุญาต
  • char_driver - ชื่อของไดรเวอร์ (สามารถเป็นชื่อใดก็ได้)
  • c - บอกว่ามันเป็นไดรเวอร์ตัวละคร
  • 240 - หมายเลขหลัก (เหมือนใน register_chrdev)
  • 0 - หมายเลขรอง

สิ่งนี้น่าจะใช้ได้


โดยค่าเริ่มต้นคือ 250 ทำไม? ฉันหมายถึงว่าทำไมไม่อยู่ระหว่าง 240 - 254
Shaswat Dube
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.