LINUX.ORG.RU

Сообщения flagist0

 

Макросы в emacs

Пытаюсь немного автоматизировать работу в GDB с помощью макросов. Самый простой случай -- есть макрос, пишущий si и переводящий строку (go-si), и есть второй, вызывающий первый 10 раз (10si). Первая проблема вот в чем -- при вызове 10si макрос сначала пишет 10 раз si, и только потом начинает их выполнять. Соответственно если выполнить C-u 100 C-x e, т.е. 1000 раз выполнить stepi, то сначала идет дикий лаг секунд на 20 с полной загрузкой процессора, и только потом процесс начинает идти. Почему макросы не выполняются по шагам, а делают какой-то анфолдинг с буферизацией?

flagist0
()

(boot + ELF) loader

Интересует вопрос, существует ли в природе минималистический загрузчик под x86, умеющий грузить с жесткого диска прицепленный\прилинкованный elf-образ. На данный момент использую GRUB, но по огромному количеству причин это очень неудобно и избыточно. Например, не нужна поддержка разделов и файловых систем -- достаточно положить образ после mbr. Заранее благодарен.

flagist0
()

Arch, Xorg 1.6.1, не переключается раскладка

Настроил hotplugging, перестала переключаться раскладка. Пробовал в kde 3.5, fluxbox и awesome, видимо от WM не зависит. Конфиг вроде правильный, hal-device показывает, что параметры подхвачены:
input.xkb.layout = 'en,ru(winkeys)' (string)
input.xkb.variant = 'winkeys' (string)
input.x11_driver = 'evdev' (string)
input.xkb.options = { 'grp:lwin_toggle', 'grp_led:scroll' } (string list)
info.product = 'Microsoft Natural? Ergonomic Keyboard 4000' (string)

Притом клава в hal-device отображается два раза, отличаясь только номерами input device.

Содержимое /etc/hal/fdi/policy/10-x11-input.fdi:

<match key="info.capabilities" contains="input.keys">
<merge key="input.xkb.rules" type="string">xorg</merge>
<merge key="input.xkb.layout" type="string">en, ru(winkeys)</merge>
<merge key="input.xkb.variant" type="string">winkeys</merge>
<merge key="input.xkb.model" type="string">evdev</merge>
<merge key="input.xkb.options" type="strlist">grp:lwin_toggle</merge>
<append key="input.xkb.options" type="strlist">grp_led:scroll</append>
</match>

flagist0
()

Очистка ARP-таблицы

Модем выдает внешний адрес (с маской 255.255.255.255, это нормально?), через какое-то время /var/log/messages забивается Neigbour table overflow, arp выдает кучу хостов с одинаковыми HWaddr, которые не удаляются. arp выдает (пример) cm218-253-218-19.hkcabl: Неизвестный хост SIOCDARP(priv): Сеть недоступна. Вопрос: откуда берутся сотни хостов с одинаковыми маками и как форсированно очистить arp-таблицу?

>>>

flagist0
()

gentoo: pam или securetty

Люди, хелп! Делал даунгрэйд системы (убрал accept_keywords из /etc/make.conf), потом стал даунгрэйдить конфиги, и что-то намудрил с /etc/securetty и pam (кажется принял какое-то изменение с system-auth) :((. Теперь не могу сделать su из под обычного пользователя. Что делать?

>>>

flagist0
()

Игры для программистов

Люди, посдкажите плиз, существуют ли игры с программистской направленностью? Сборку винды из краденных исходников не предлагать :) Сам знаю Core Wars, Colobot, GNU robots, и свежий NERO. Но хотелось бы чего-нибудь еще, хотя бы чуть-чуть ИИ поковырять, с возможностью расширения.

>>>

flagist0
()

C++: конструктор

Прошу прощения за глупый вопрос, не могу найти у Страуструпа :(

Есть враппер для pthread, конструктор выглядит так: public: PlThreadSimple(void (*f)(void*), void* op) :func(f), opaque(op) {}

Насколько я понял, использование может быть например таким: PlThreadSimple intfy_th(&run,NULL);

Но gcc выдает: FSChangeMon.h:71: ошибка: ‘run’ is not a type FSChangeMon.h:71: ошибка: expected identifier before ‘__null’ FSChangeMon.h:71: ошибка: expected ‘,’ or ‘...’ before ‘__null’

Так как его нормально инициализировать и что значит ":func(f), opaque(op) {}" ?

>>>

flagist0
()

С++:Метод как функция потока

Здравствуйте! Подскажите плиз, можно ли pthread_create() передать указатель на метод в качестве функции потока? Насколько я понял, нельзя из-за *this, но ведь делают же как-то :((. И каким метод должен быть - приватным/публичным? Статическим нельзя из-за специфики класса. Заранее спасибо.

>>>

flagist0
()

Виртуальные диски в лине

Люди, подскажите плиз, существует ли софт под линь для эмуляции cd/dvd? mount -o loop не предлагать :) Нужно именно средство для создания какого-нибудь /dev/vcdrom с последующим монтированием. Дело в том, что всякий софт типа cedega ищет именно устройство в /dev/, а подпихнуть ему уже смонтированнный образ нет возможности.

>>>

flagist0
()

Избежать краша при старой glibc

Есть программа, использующая inotify (его поддержка появилась в glibc 2.4). На целевой системе будет запускаться уже собранный под glibc 2.5 бинарник. Если в системе более старая версия, где упадет прога - при проверке загрузчиком символов из таблицы импорта или при первом вызове функции, которой нет в библиотеке? Если первое, то есть ли возможность как-нибудь все-таки предотвратить выпад в кору и передать управление дальше? Проблема в том, что у меня нет полного доступа к опциям сборки - я делаю только с++овый класс-оболочку над inotify. То есть мой максимум - сделать проверку версий в конструкторе и корректный выход.

>>>

flagist0
()

C++: указатель на функцию и scandir

Если вопрос совсем глупый - прошу простить, я на плюсах пишу неделю :(

scandir принимает два указателя на функции - функцию-фильтр и сортировку. Фильтр входит в класс, функция со некомпилящейся строчкой - тоже. Получается: n = scandir(".", &namelist, &FSChangeMon::is_dir_dirent, alphasort);

g++ выдает: FSChangeMon.cl.cpp:175: ошибка: аргумент типа ‘int (FSChangeMon::)(const dirent*)’ не соответствует типу ‘int (*)(const dirent*)’

То есть функция, на которую указывает указатель, не может входить в класс?

>>>

flagist0
()

RSS подписка на новые темы