dx
Пункты: 7618
Регистрация: 26.10.2010
Пол: Мужчина
Из: Ukraine, Kiev city
с горем пополам QT было поднято. ну вот теперь задача связать мое приложение с собственным драйвером. драйвер по сути сейчас пустышка, которая при вызове ioctl, open, read, write, release пишет printk'ом в лог ядра.
Сначала я пробовал найти функцию ioctl в классе QIODevice. Видимо или плохо искал или просто не судьба. Забил и попробовал как в старые добрые времена:
Код
#include <stdio.h>
#include <fcntl.h>
#include <linux/ioctl.h>
...
...
fptr = open("/dev/module", O_WRONLY);
retval = ioctl(fptr, cmd, param);
close(fptr);
но на это получаю ошибку: ‘ioctl’ was not declared in this scope.
Для моих задач ioctl очень удобна. Может посоветуете аналог этой ф-ции?? Или просто не парить мозги и делать на read, write??
MTh
Пункты: 921
Регистрация: 19.09.2010
Вообще не было проблем с ioctl - прочитал LDD и как-то оно без проблем пошло и поехало. Скорее всего с хидерами заморочка - не видит такой функции...
dx
Пункты: 7618
Регистрация: 26.10.2010
Пол: Мужчина
Из: Ukraine, Kiev city
это я понимаю. но open, read, write, close оно же видит
dx
Пункты: 7618
Регистрация: 26.10.2010
Пол: Мужчина
Из: Ukraine, Kiev city
пришел домой, попробовал на другом ПК та же история. Вот мой код:
Код
#include <QtGui>
#include <QWidget>
#include <QGridLayout>
#include <QPushButton>
#include <stdio.h>
#include <fcntl.h>
#include <linux/ioctl.h>
int main(int argc, char **argv)
{
QApplication app(argc, argv);
QWidget *main_window = new QWidget;
QPushButton *button = new QPushButton("quit");
QGridLayout *layout = new QGridLayout;
QObject::connect(button, SIGNAL( clicked() ), &app, SLOT( quit() ));
layout->addWidget(button);
main_window->setLayout(layout);
main_window->show();
int fptr, cmd = 0, param = 0, retval = 0;
fptr = open("/dev/module", O_WRONLY);
retval = ioctl(fptr, cmd, param);
close(fptr);
return app.exec();
}
Slavian
Пункты: 1888
Регистрация: 21.05.2010
Стоит посмотреть хедр <linux/ioctl.h, возможно какой то дефайн выключает определение ioctl, подобных проблем не возникало.
dx
Пункты: 7618
Регистрация: 26.10.2010
Пол: Мужчина
Из: Ukraine, Kiev city
все решилось. помогли
хорошие люди )))
в QT нужно в место #include <linux/ioctl.h> лепить #include <sys/ioctl.h>