Вспомните рассуждения про следующую за заголовком область данных из примера
data_area_size = ctp->size - sizeof(*msg);
Отметим, что этот размер будет действителен также и в случае
Для всего, что превосходит по размеру выделенную область, вам придется получать данные от клиента так же, как мы это делали в примере с
Дополнительно
Теперь, после того как мы овладели «основами» построения администраторов ресурсов, пришло время рассмотреть более сложные вопросы. К ним относятся:
• расширение OCB;
• расширение атрибутной записи;
• блокирование в пределах администратора ресурсов;
• возврат элементов каталога.
Расширение OCB
В ряде случаев у вас может возникнуть необходимость расширения OCB. Процедура эта является относительно безболезненной. Обычно OCB расширяют дополнительными флагами, характеризующими каждый конкретный
Для расширения блока OCB вам нужно будет обеспечить две дополнительных функции: одну для выделения OCB, и одну — для его освобождения. Затем вы должны будете привязать эти две функции к записи точки монтирования. (Да-да, совершенно верно — вам понадобится запись точки монтирования, даже если только для этого.) И наконец, вы должны будете определить ваш собственный тип OCB, чтобы все прототипы в программе были корректны.
Давайте рассмотрим сначала описание типа OCB, а затем уже поглядим, как переопределяются функции:
#define IOFUNC_OCB_T struct my_ocb
#include
Это сообщает включаемому файлу
Вот наш расширенный OCB:
typedef struct my_ocb {
iofunc_ocb_t
int
...
} my_ocb_t;
А вот код, иллюстрирующий, как переопределяются функции выделения и освобождения OCB в записи точки монтирования:
// Декларации
iofunc_mount_t mount;
iofunc_funcs_t mount_funcs;
// Задать в записи точки монтирования
// наши функции выделения/освобождения
// _IOFUNC_NFUNCS взята из .h-файла
mount_funcs.nfuncs = _IOFUNC_NFUNCS;
// Новая функция выделения OCB
mount_funcs.ocb_calloc = my_ocb_calloc;
// Новая функция освобождения OCB
mount_funcs.ocb_free = my_ocb_free;
Бьерн Страуструп , Бьёрн Страуструп , Валерий Федорович Альмухаметов , Ирина Сергеевна Козлова
Программирование, программы, базы данных / Базы данных / Программирование / Учебная и научная литература / Образование и наука / Книги по IT