ПОИП    

  ЛР 1 ~ 
  ЛР 2 ~ 
  ЛР 3 ~ 
  ЛР 4 ~ 
/Студентам/ПОИП/ЛР 4

Лабораторная работа #4

Изучение динамических библиотек в ОС Linux

Цель работы

Целью данной работы является получение навыков работы с динамическими библиотеками и разработки программных компонентов, обеспечивающих независимость прикладных программ от конкретного типа устройства.

Порядок выполнения работы

  1. Изучить устройство таймера i8253/4 и алгоритмы работы с ним
    (см. Лабораторную работу #1)
  2. Изучить приемы работы с динамическими библиотеками man dlopen
  3. Разработать библиотеку, предоставляющую доступ к динамику через драйвер, разработанный в лабораторной работе #3

    Библиотека должна содержать структуру, содержащую, в свою очередь, указатели на функции, реализующие примитивы работы с устройством (в данном случае - с динамиком). Структура будет иметь следущий вид:

    
    /*********************
      определение типа следует 
      поместить в заголовочный файл 
    *********************/
    
    typedef struct pc_speaker {
    	int (* on)();
    	int (* off)();
    	int (* setf)(int frequency);
    } PC_SPEAKER;
    
    /*****************
    основная часть исходного текста библиотеки
    должна содержать 3 функции и переменную 
    типа PC_SPEAKER, поля которой должны быть 
    проинициализированы адресами этих 3-х функций
    *****************/
    
    int my_on();
    int my_off();
    int my_setf(int f);
    
    PC_SPEAKER spk = {
    	on : my_on,
    	off : my_off,
    	setf: my_setf
    }
    
  4. Разработать прикладную программу, которая проигрывает мелодию, используя разработанную в предыдущем пункте библиотеку.

    Эта программа должна произвести следующие действия:
    1) Загрузить ЯВНЫМ образом библиотеку (см. man dlopen)
    2) Получить адрес структуры, содержащей адреса функций для работы с устройством
    3) Проиграть мелодию с помощью функций из библиотеки

    Не забудьте при компиляции программы указать -ldl:

    gcc ............... -ldl
    
  5. Продемонстрировать работу программы преподавателю, распечатать исходные тексты библиотеки и прикладной программы, отчитаться устно о проделанной работе.

Дата последней модификации: 2010-01-24


/Студентам/ПОИП/ЛР 4

Содержимое данного сайта может быть использовано кем угодно, когда угодно, как угодно и для каких угодно целей. Автор сайта не несёт абсолютно никакой ответственности за землетрясения, наводнения, финансовые кризисы, глобальные потепления/похолодания, разбитые тарелки, зуд/онемение в левой/правой пятке читателя, эпидемии/пандемии свинячьего/птичьего/тараканьего и иных гриппов, а также за прочие негативные, равно как и позитивные, последствия, вызванные прямым или косвенным использованием материалов данного сайта кем бы то ни было, включая самого автора. При копировании/цитировании материалов данного сайта любым технически возможным в настоящее время способом, а также способом, могущим стать возможным в будущем, указание (либо неуказание) ссылки на первоисточник лежит, блин, тяжким грузом на совести копирующего/цитирующего.

Valid HTML 4.0 Strict Valid CSS!