В Posix как используется тип dev_t? - PullRequest
5 голосов
/ 09 марта 2012

Что мне нужно, так это значение такого типа и какой интерфейс может его использовать.

В спецификации Posix объясняется, что dev_t используется для идентификаторов устройств.Однако, что означает идентификатор устройства для любого объекта, описанного путем, который может быть файлом, директивой, fifo или физическим устройством?

Например, вызов stat() даст вам структуру, включающуючлен такого типа;и вы можете определить любые виды объектов в вашей файловой системе.Идентификатор устройства должен иметь разные значения для разных типов файлов.

Ответы [ 3 ]

9 голосов
/ 09 марта 2012

Единственное использование dev_t в подавляющем большинстве программ (которые переносимы и не подключены к одной ОС) - это определить, что два имени файла или дескриптора файла ссылаются на один и тот же базовый файл.Это верно тогда и только тогда, когда записи st_ino и st_dev для структур двух файлов stat соответствуют друг другу.

В основном st_dev сообщает, какое «устройство» (например, смонтированный раздел,сетевой ресурс и т. д.), в котором находится файл, а st_ino - это уникальный идентификатор файла в контексте одного устройства.

5 голосов
/ 09 марта 2012

На самом деле в struct stat есть два поля dev_t -типа:

  • st_dev - это «[d] evice ID устройства, содержащего файл», поэтому, если два файла имеют одинаковые st_dev, они находятся в одной файловой системе.
  • st_rdev - это идентификатор устройства, обозначаемый специальным символом или блочным файлом, то есть файлами, которые обычно встречаютсяв /dev.Это не имеет значения для других типов файлов.
4 голосов
/ 25 января 2014

В ядре тип dev_t, который определен в, используется для хранения номеров устройств (старший / младший). dev_t - это 32-битная величина с 12 битами, выделенными для старшего номера и 20 для младшего номера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...