Запуск программы 1led.C
sudo ./led 1
Программа работает в режиме «1» - поочерёдное мигание каждого из светодиодов создает эффект гирлянды. Для этого реализован цикл из 3 итераций для того, чтобы функции ioctl(fd,KDSETLED,LED[j])в качестве параметра передавать поочерёдно из массива идентификатор каждого из светодиодов. Мигание представляет собой включение и отключение (ioctl(fd,KDSETLED,0)) светодиодов через некоторые интервалы времени. Программа совершает 25 итераций, после чего мы вновь можем обращаться к терминалу.
sudo ./led 2
Программа работает в режиме «2» - случайное мигание одного из светодиодов. Генерация случайного значение происходит таким образом: ioctl(fd,KDSETLED,LED[rand()%3]). Программа совершает 25 итераций, после чего мы вновь можем обращаться к терминалу.
sudo ./1keydoardLED ???
При неверном вводе параметров будет выдано сообщение об ошибки, после чего мы вновь можем обращаться к терминалу.
Запуск программы 2cd.C
sudo ./cd
В данном случае запуск производится без параметров. Благодаря функциям открытия дисковода (ioctl(fd,CDROMEJECT,0)) и его закрытия (ioctl(fd,CDROMCLOSETRAY,0)) реализуется подобие «танца» под саундтрек к фильму «Звездные Войны».
Запуск программы 3musicbox.C
sudo modprobe pcspkr
sudo ./ music
Перед запуском программы необходимо включить pcspkr – спикер персонального компьютера. После запуска программы воспроизводятся мелодии, определяемые параметрами:
1 – эффект сирены (нарастание и убывание частоты звучание спикера)
2 – эффект барабанной дроби
3 – воспроизведение композиции «В лесу родилась ёлочка».
Изначально мы тестировали мелодии в WindowsMVSс помощью функцииbeep. Затем мы преобразовали из 10-ой системы (с которой работаетbeep) счисления в 16-ую (в ней формируются системные вызовы) с помощью такой операции: 1193180/frequency. Где было возможно, мы явно преобразовывали в 16-ую систему счисления. Также продолжительность для вызовов терминала пришлось увеличить, умножив на 1000. Подобное решение было взято, после прочтения следующего форума:http://ubuntuforums.org/showthread.php?t=873679.
Тестирование
В первую очередь тестирование проводилось путём обычного запуска программ. Все три программы корректно запускаются и выполняются.
Также использовался трассировщик:
sudo strace program_name
Рис. 2. Часть данных, полученных после трассировки первой программы.

Как мы видим, в ходе исполнения первой программы, сначала открывается файловый дескриптор1, значение которого равно 3, то есть неотрицательно, а значит корректно. Далееstrcmp– проверка параметров,ioctl– системные вызовы функций с идентификатором 19250 и параметром в 16-ой системе счисления. Все описанные функции вернули 0, что гарантирует корректность их работы.
Для второй программы можно увидеть следующее: сначала запускается музыка, затем открывается дисковод, потом воспроизводится фрагмент емлодии, затем дисковод закрывается и так далее.
Третья программа также корректно работает во всех 3-х режимах.
Для эксперимента программа также запускалась на компьютере, без функции закрытия cdлотка и без драйвера для спикера. Были получены следующие результаты:
Рис. 3. Часть данных, полученных после трассировки второй программы на компьютере, без функции закрытия cd лотка и без драйвера для спикера.

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