Size: a a a

2020 December 05

Aa

Alph alpH in pro.osdev
static int block_device_init( void )
{
 int register;
 register = register_blkdev(MAJOR,DEVNAME); // Регистрация блочного устройства
}  if (register < 0) {
   printk(KERN_ERR " +=+ Не удалось зарегистрировать устройство");
   return -EBUSY;
   }else{
     printk(KERN_INFO " +=+ Устройство зарегистрировано, MAJOR = %s",register);
   }
static void block_device_exit( void )
{
 unregister_blkdev(MAJOR,DEVNAME);
}
источник

Aa

Alph alpH in pro.osdev
как лучше передать register в block_device_exit ? сделать глобальным?
источник

Aa

Alph alpH in pro.osdev
#define MAJOR 0
источник

МП

Максим Петров... in pro.osdev
Alph alpH
как лучше передать register в block_device_exit ? сделать глобальным?
Я так понял, что это модуль ядра, и тогда девайс инициализируется только один раз, вполне можно сохранить информацию о нем в глобальной переменной модуля
источник

Aa

Alph alpH in pro.osdev
Максим Петров
Я так понял, что это модуль ядра, и тогда девайс инициализируется только один раз, вполне можно сохранить информацию о нем в глобальной переменной модуля
спасибо!
источник

МП

Максим Петров... in pro.osdev
Alph alpH
спасибо!
Вообще при программировании модулей ядра, если требуется сохранить какое-то состояние между вызовами функций, то это в большинстве случаев решается созданием переменной в глобальной области видимости. Если вдруг нужно сохранить большой объем данных, то выделяют память в куче, а указатель на нее сохраняют в той же глобальной переменной модуля. Другие варианты, как правило, неудобны или попросту невозможны.
источник

Aa

Alph alpH in pro.osdev
Максим Петров
Вообще при программировании модулей ядра, если требуется сохранить какое-то состояние между вызовами функций, то это в большинстве случаев решается созданием переменной в глобальной области видимости. Если вдруг нужно сохранить большой объем данных, то выделяют память в куче, а указатель на нее сохраняют в той же глобальной переменной модуля. Другие варианты, как правило, неудобны или попросту невозможны.
а как поступить, если мне нужно блочное устройство конкретного размера?
источник

Aa

Alph alpH in pro.osdev
например, 50 МБ?
источник

DP

Dmitry Ponyatov in pro.osdev
dd if=/dev/null of=/tmp/image bs=1M count=50 ; mke2fs /tmp/image ; mount -o loop /tmp/image /mnt/50Mb
источник

Aa

Alph alpH in pro.osdev
Dmitry Ponyatov
dd if=/dev/null of=/tmp/image bs=1M count=50 ; mke2fs /tmp/image ; mount -o loop /tmp/image /mnt/50Mb
а прям из модуля такое возможно?
источник

BD

Berkus Decker in pro.osdev
Максим Петров
Вообще при программировании модулей ядра, если требуется сохранить какое-то состояние между вызовами функций, то это в большинстве случаев решается созданием переменной в глобальной области видимости. Если вдруг нужно сохранить большой объем данных, то выделяют память в куче, а указатель на нее сохраняют в той же глобальной переменной модуля. Другие варианты, как правило, неудобны или попросту невозможны.
жуть какая, ну впрочем что вы хотите от говнинуха
источник

МП

Максим Петров... in pro.osdev
Berkus Decker
жуть какая, ну впрочем что вы хотите от говнинуха
?
источник

BD

Berkus Decker in pro.osdev
Максим Петров
?
ну например нельзя инстанцировать модуль нормально несколько раз
источник

МП

Максим Петров... in pro.osdev
Berkus Decker
ну например нельзя инстанцировать модуль нормально несколько раз
Можете рассказать о сценариях, когда это может быть необходимо? Я просто не настолько прошарен
источник

BD

Berkus Decker in pro.osdev
Максим Петров
Можете рассказать о сценариях, когда это может быть необходимо? Я просто не настолько прошарен
лень, попробуйте напрячь воображение
источник

BV

Boris Vinogradov in pro.osdev
И вообще обсуждать модули ядра линух это в другой чат
источник

BD

Berkus Decker in pro.osdev
ну кстати оффтоп, д
источник

МП

Максим Петров... in pro.osdev
Boris Vinogradov
И вообще обсуждать модули ядра линух это в другой чат
А подскажите чат, если есть такой на примете? Я по описанию данного подумал, что линукс тоже входит в тематику обсуждений, видимо, ошибся
источник

BD

Berkus Decker in pro.osdev
Максим Петров
А подскажите чат, если есть такой на примете? Я по описанию данного подумал, что линукс тоже входит в тематику обсуждений, видимо, ошибся
источник

МП

Максим Петров... in pro.osdev
Это-то понятно.) Я как раз спрашивал, если вдруг есть какой на примете. На нет и суда нет, пойду тогда искать
источник