Статьи Галерея Форум Чат Файлы HowTo Ссылки Поиск
Текущее время: 23 сен 2019, 11:15




Начать новую тему Ответить на тему  [ Сообщений: 15 ] 
Автор Сообщение
 Заголовок сообщения: C++, кинуть байт в порт принтера
СообщениеДобавлено: 11 янв 2005, 09:28 
Неотъемлемая часть форума
Аватара пользователя

У нас с: 18.12.2004
Сообщения: 540
Откуда: Polotsk
Хочется на C++ кинуть байт в порт, вот нашел такой пример:

include <stdio.h>
#include <asm/io.h>
#include <unistd.h>
#define BASEPORT 0x378 /* lpt1 */

main()
{
outb(0, BASEPORT);
exit (0);
}

А она не компилирует :( А вот что говорит:

[speccyfan@localhost programming]$ gcc -o drive drive.c
In file included from /usr/include/linux/config.h:4,
from /usr/include/asm/io.h:4,
from drive.c:2:
/usr/include/linux/autoconf.h:1:2: #error Invalid kernel header included in userspace
[speccyfan@localhost programming]$

/usr/include/linux/autoconf.h содержит только одну строку:
#error Invalid kernel header included in userspace

gcc у меня вот такой:
i586-alt-linux-gcc (GCC) 3.3.3 20040412 (ALT Linux, build 3.3.3-alt5)
Раньше под ALT Linux Master2.2 все работало.

Как бы побороть ?

_________________
Best Regards, Yury Konovalov aka Speccyfan (2:453/53)
Registered Linux User #379588


Вернуться к началу
 Не в сети Профиль  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: 11 янв 2005, 13:16 
Неотъемлемая часть форума
Аватара пользователя

У нас с: 06.02.2002
Сообщения: 9760
Откуда: Менск
Ну откуда привычка решать тривиальные задачи через задницу?
echo 1 > /dev/lp0 чем не устраивает?
Сишный эквивалент думаю сам настрогаешь.

_________________
Опыт растет прямо пропорционально выведенному из строя оборудованию


Вернуться к началу
 Не в сети Профиль  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: 11 янв 2005, 14:42 
Неотъемлемая часть форума
Аватара пользователя

У нас с: 18.12.2004
Сообщения: 540
Откуда: Polotsk
Спасибо, если ничего не получится воспользуюсь Вашим советом, хотя и не считаю, что это правильнее.

_________________
Best Regards, Yury Konovalov aka Speccyfan (2:453/53)
Registered Linux User #379588


Вернуться к началу
 Не в сети Профиль  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: 11 янв 2005, 14:57 
Неотъемлемая часть форума
Аватара пользователя

У нас с: 06.02.2002
Сообщения: 9760
Откуда: Менск
Speccyfan, бедншь смеяться - это НАМНОГО правильнее. Ибо работать напрямую с аппаратурой в unix не принято. Мой пример будет работать из-под любого пользователя, который имеет права на доступ к файлу /dev/lp0. А напрямю писать по портам ты можешь только из-под рута, причем придется пользовать "нежелательные" функции. Т.е. правильное решение писать файл до тех пор, пока файловые интерфейс удовлетворяет тебя своей функциональностью.

_________________
Опыт растет прямо пропорционально выведенному из строя оборудованию


Вернуться к началу
 Не в сети Профиль  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: 11 янв 2005, 23:30 
Неотъемлемая часть форума
Аватара пользователя

У нас с: 28.11.2002
Сообщения: 1117
Откуда: Минск
Ибо один из главных прицнипов юникса -- все что можно представить в виде файлов, представлено в виде файлов.
Все что нельзя -- в виде псевдофайлов.

:roll:

_________________
I'll kill this code without a knife -- with only fork().


Вернуться к началу
 Не в сети Профиль  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: 12 янв 2005, 01:34 
Неотъемлемая часть форума
Аватара пользователя

У нас с: 06.10.2002
Сообщения: 563
Откуда: Southampton
А покажи мне /dev/eth0 :-P


Вернуться к началу
 Не в сети Профиль  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: 12 янв 2005, 09:48 
Неотъемлемая часть форума
Аватара пользователя

У нас с: 18.12.2004
Сообщения: 540
Откуда: Polotsk
Кстати когда делаю
echo 1 > /dev/lp0
Похоже ожидается сигнал busy и все висит.

_________________
Best Regards, Yury Konovalov aka Speccyfan (2:453/53)
Registered Linux User #379588


Вернуться к началу
 Не в сети Профиль  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: 12 янв 2005, 14:59 
Неотъемлемая часть форума
Аватара пользователя

У нас с: 28.11.2002
Сообщения: 1117
Откуда: Минск
/dev/eth0 -- ай досадное упушение :)

man kill в списке сигналов сигнала BUSY не показал

_________________
I'll kill this code without a knife -- with only fork().


Вернуться к началу
 Не в сети Профиль  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: 12 янв 2005, 17:27 
Неотъемлемая часть форума

У нас с: 12.08.2003
Сообщения: 250
Иногда прямой доступ к портам нужет. Чтобы скомпилировать данный код, можно просто скопировать определения {in,out}{b,w} из h-ников ядра.

Есть и более прикольный метод. См. man 4 port.


Вернуться к началу
 Не в сети Профиль  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: 12 янв 2005, 17:37 
Неотъемлемая часть форума

У нас с: 12.08.2003
Сообщения: 250
Да, только перед тем как лезть через in/out надо зделать ioperm или iopl.


Вернуться к началу
 Не в сети Профиль  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: 12 янв 2005, 23:01 
Неотъемлемая часть форума
Аватара пользователя

У нас с: 06.10.2002
Сообщения: 563
Откуда: Southampton
sanitar писал(а):
/dev/eth0 -- ай досадное упушение :)

Не, ну серьёзно - по какой причине он в линуксе отсутствует? Во FreeBSD лежит в /dev/net/ =)


Вернуться к началу
 Не в сети Профиль  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: 12 янв 2005, 23:32 
Неотъемлемая часть форума
Аватара пользователя

У нас с: 28.11.2002
Сообщения: 1117
Откуда: Минск
Видимо решили не давать в руки пингвиноводам такое страшное оружие :)

С другой стороны -- сетевой интерфейс не имеет смысла сам по себе, без наличия чего-либо на другом конце кабеля, к нему подсоединенного.

Поэтому логика есть и в линуксявом подходе -- ведь нет смысла например, адресоваться к шлейфу жесткого диска как к отдельному устройству.
Или есть?

:)

_________________
I'll kill this code without a knife -- with only fork().


Вернуться к началу
 Не в сети Профиль  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: 13 янв 2005, 01:00 
Неотъемлемая часть форума
Аватара пользователя

У нас с: 06.02.2002
Сообщения: 9760
Откуда: Менск
в соляре кажись /dev/le это называется ;)

sanitar, но ведь к /dev/tun можно адресоваться ;)

_________________
Опыт растет прямо пропорционально выведенному из строя оборудованию


Вернуться к началу
 Не в сети Профиль  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: 13 янв 2005, 12:10 
Неотъемлемая часть форума
Аватара пользователя

У нас с: 28.11.2002
Сообщения: 1117
Откуда: Минск
Ну ладно, ладно, уговорили

"ЛЮНИХ-ФУФЛО" и все такое :)

Я ваще исходно говорил о юниксовых принципах, а не о линуксовых.

Вот. Так что нефикъ.

_________________
I'll kill this code without a knife -- with only fork().


Вернуться к началу
 Не в сети Профиль  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: 13 янв 2005, 19:33 
Неотъемлемая часть форума
Аватара пользователя

У нас с: 06.10.2002
Сообщения: 563
Откуда: Southampton
Народ требует /dev/eth0!!!
P.S. А как PROMISC режим на карточку ставится вообще? ioctl()'ом? Тогда на какой файл?


Вернуться к началу
 Не в сети Профиль  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 15 ] 


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
[ All resources are available under GNU GPL ] [ Support ] [ Hosted by DataHata | MyCloud.by ] [ Powered by phpBB® Forum Software © phpBB Group ]

LVEE Winter LVEE Rambler's Top100