LINUX.ORG.RU

Сообщения zloy_starper

 

Как с помощью dbus-send получить от UDisks2 доступные интерфейсы?

Форум — Development

Что-то никак не соображу. Подскажите. Например, чтобы получить для какого-нибудь объекта /org/freedesktop/UDisks2/block_devices/ все доступные на текущий момент интерфейсы типа Filesystem что нужно послать через dbus-send?

 ,

zloy_starper
()

Как отработает rename перемещение каталогов с разных устройств?

Форум — Development

В простейшем случае все понятно. Если старое и новое имя файла располагаются на разных устройствах, операция не будет выполнена и будет выдан код ошибки EXDEV. А если перемещается каталог? И при этом новое и старое путевые имена располагаются на одном устройстве, но некоторые ветки старого путевого имени каталога располагаются на другом устройстве. Ну, скажем для примера, стал я перемещать каталог media из /var/run в /root. /root и /var/run/media/user1/usbflash принадлежат одному устройству, а все что далее за ubflash - уже другому. Ядро сначала «пройдет» по всему дереву и сразу выдаст ошибку? Или возможен некий вариант с менее предсказуемым результатом?

 ,

zloy_starper
()

Куда может «утекать» свободное место на диске?

Форум — Admin

Некоторое время назад у меня после старта ОС стало всплывать сообщение о том, что в корневой ФС осталось мало свободного места. Места становилось все меньше и меньше при том, что никаких новых пакетов я не за это время не устанавливал. Удалил кое-какие ненужные пакеты. Но через некоторое время свободное место опять сократилось. Сейчас вообще свободно 100К. И это при том, что в последнее время даже апдейты не ставил. Корень, var и home у меня на разных разделах. Поэтому ничего, кроме того, что я подцепил что-нибудь нехорошее из Инета, в голову не приходит. Но таки может дело не этом? Может это чудеса ext4, к примеру? Может что-то поломалось, и у нее журнал забивается чем-то. Что подскажите коллеги? Где бы что бы покопать?

zloy_starper
()

Как использовать ядерные криптосредства из user space?

Форум — Development

Потыкал немного в Гугл, но что-то ничего не нашел. Я так понял, что единственный вариант - это слепить модуль ядра, который с одной стороны будет задействовать CpyptoAPI ядра, а с другой иметь интерфейс с юзерспейс через procfs, или char устройство.

zloy_starper
()

А каковы могут быть уровни сигналов у SPI-интерфейса?

Форум — Linux-hardware

Хочу попробовать почитать флэшку с SPI-интерфейсом. Подключить ее хочу к Wandboard. Однако, смущает, что в доке на Wandboard указано, что на разъеме SPI выведено питание +5В. У флэшки разумеется питание +3,3В. Вот и задумался. Может SPI-интерфейсы разные бывают в плане величин уровней сигналов? Не спалю ли я флэшку?

 

zloy_starper
()

1-wire, I-Button - как лучше работать с этим хозяйством?

Форум — Development

Надо бы научиться читать, а возможно и писать в I-Button. Есть соответствующая библиотека от производителя этого хозяйства.Но я так понимаю, что она работает с специальными контролерами, которые реализуют интерфейс USB-1W, или COM-1W. И насколько я понимаю, именно в этих контролерах реализована логика формирования всех сигналов 1W для конкретных типов устройств. С другой стороны в Инете есть схемки переходников COM-1W на нескольких резисторах и диодах. Но с такими переходниками указанная выше библиотека работать не будет. Так? Надо будет реализовать программно формирование (и анализ) на выходе COM-порта последовательности сигналов с нужными фронтами импульсов и пр. дребедень. К GPIO устройство 1W вообще нельзя подцепить, т.к. у 1W и передача данных и прием идет по одному проводу, а у GPIO приемник и передатчик разделены.

Т.е. получается, если я прав и ничего не упустил, то альтернативы две: 1. относительно просто пишется софт, но нужна железка за немалую денежку (применительно к одной копеечной микросхеме и маленькому куску гетинакса я считаю, что цена ломовая); 2. относительно сложно пишется софт, но железка делается на коленке на копейки.

Или есть еще варианты?

zloy_starper
()

Помогите разобраться с radare.

Форум — Development

Что-то никак не могу найти, какие вообще могут быть значения различных конфигурационных опций. Может у кого-нибудь есть описание.

Ну вот в частности. Пытаюсь ковырять ROM BIOS платы расширения. Дизассемблер выдает местами что-то похожее на правду, а местами ерунду. Как ему задать архитектуру x86 16 битовый режим? Установил asm.arch=x86 asm.cpu=8086. Но что-то все равно не то получается.

zloy_starper
()

Чудаки с Мосэнергосбыт генерируют «кривой» pdf.

Форум — General

Приходится пользоваться личным кабинетом на сайте Мосэнергосбыта. Так как частенько квитанции от них запаздывают, а платить нужно, то приходится у них на сайте распечатывать квитанцию. Генерится она в pdf-формате (слава богу, хоть догадались не в Word-е ее генерить). Так вот pdf этот получается у них кривой - все кириллические символы отображаются символами псевдографики (т.е. различными уголками). Ничем под Linux корректно отобразить этот pdf не получается. Однако, если копировать текст из этого pdf в любой текстовый редактор, то в редакторе он отображается правильно. Т.е., судя по всему, кодировка текста правильная. Может они туда шрифты встраивают кривые, или криво. Честно скажу, что не знаток pdf. Так, что пока не пойму, во что разработчиков сайта «тыкать мордой», дабы они исправили свои косяки. Писать им в духе «у вас ничего не работает» не хочется. Желательна конкретика. Adobe Reader эти квитанции показывает нормально.

zloy_starper
()

flex: можно ли обработать строку с пробелами?

Форум — Development

Когда нужно парсить конфигурационный файл, то обычно устанавливается правило пропуска пробелов, табуляторов и символов окончания строк, т.к. эти символы являются разделителями между командами. А что делать, если нужно пропарсить параметр, который может содержать строку символов, в которой могут быть пробелы? Ну например что-то типа такого:

Type «Command» {Label «Open File»; Action «Open»;};

где для типа Label нужно считать строку «Open File».

zloy_starper
()

lex/yacc: Что-то не пойму, как встроить сгенерированный код.

Форум — Development

Что-то никак не ущучу, как встроить в свой код то, что нагенерят lex и yacc. Ну то есть, какую функцию нужно дергать, чтобы в итоге отпарсился нужный мне файл? Ведь я так понимаю, что lex читает из стандартного ввода и вызывает по мере надобности yacc-ие процедуры. И как ему указать, какой файл парсить?

zloy_starper
()

Что это такое - GCC уже при компиляции находит buffer overflow?

Форум — Development

Получил при компиляции такую ошибку: error: call to __builtin___sprintf_chk will always overflow destination buffer

Ужель дошел до этого прогресс?

zloy_starper
()

autotools: подскажите, как включить в состав распространяемых исходников не устанавливаемые файлы данных.

Форум — Development

Вместе с исходниками библиотеки идут примеры ее использования. И все вроде бы нормально: библиотека компилируется и устанавливается вместе с хидерами, примеры только компилируются. Но с исходниками примеров также прилагаются файлы с данными. Они разумеется не компилируются и не должны устанавливаться. Если я эти файлы с данными нигде не указываю, то они, естественно, не включаются в архив (make dist). Попробовал создать отдельный каталог и там создал Mailfile.am, в котором прописал эти файлы в noinst_DATA. В configure.ac дополнил AC_CONFIG_FILES соответствующим каталогом. Теперь make dist создает в архиве в том числе и этот каталог, но без файлов данных. Чего еще не хватает?

zloy_starper
()

Кто знает, как в GTK, или в других тулкитах, реализована прокрутка списков?

Форум — Development

Возьмем, скажем, виджет многоколоночного списка (в разных тулкитах он по разному зовется, но это не суть). При прокрутке,вероятно, логичнее всего отображаемую во вьюпорте часть картинки сдвинуть путем простого копирования пиксмапа. Новую часть списка, которая при прокрутке появляется, надо отрисовать. Самая затратная по времени операция - это отрисовка текста. Если список большой, а окно «распахнуто» широко, то при интенсивной прокрутке на компе с квелым процессором и видео картой (не современном компе) эта отрисовка может тормозить. Однако, даже на убогом компьютере под GTK (GTK в данном случае чисто для примера) списки прокручиваются плавно и без задержек. Это наводит на мысль, что уже готовые куски отрисованных строк списка кэшируются. Но с другой стороны, если список очень большой, то нельзя же его весь закэшировать в пиксмап. И тогда при интенсивной прокрутке мы получаем опять прямую перерисовку кусков текста. В чем может быть секрет? Как думаете?

zloy_starper
()

Где в Debian libpthread?

Форум — Development

Компилирую софт под Debian-ом. Получаю ошибки типа:

../lib/etna_bswap.o: In function `etna_bswap_create':
/home/debian/etna_viv-master/src/fb/../lib/etna_bswap.c:117: undefined reference to `pthread_create'
../lib/etna_bswap.o: In function `etna_bswap_free':
/home/debian/etna_viv-master/src/fb/../lib/etna_bswap.c:131: undefined reference to `pthread_join'
collect2: ld returned 1 exit status
make[1]: *** [rotate_cube] Error 1

Т.е. вроде как загрузчик не находит указанные функции в библиотеках. Погуглил. Нашел, что у Debian-а вроде как pthread интегрирована в libc.

Вот только непонятно, что делать то. libc то должна автоматически цепляться. В чем тогда проблема и как ее решать?

zloy_starper
()

Как через DBus вызвать метод Unmount (IN a{sv} options)

Форум — Development

a{sv} - это вроде как Dictionaries. А вот от sv у меня уже мозги в трубочку сворачиваются. Ну первое значение строка, а дальше variant что-ли? И как это оформить? Пробовал так:

dbus-send --system --dest=org.freedesktop.UDisks2 --type=method_call --print-reply /org/freedesktop/UDisks2/block_devices/sdd1 org.freedesktop.UDisks2.Filesystem.Unmount array:string:variant:"",""

И подругому по-всякому. Получаю ошибку типа:Type of message, `(as)', does not match expected type `(a{sv})'

Или же, что variant неизвестный тип.

zloy_starper
()

Как бы вы на C «разобрали» сообщение DBus?

Форум — Development

Вот реальное сообщение, описывающее блочное устройство, полученное через DBus:

method return sender=:1.28 -> dest=:1.81 reply_serial=2
   array [
      dict entry(
         string "Device"
         variant             array of bytes [
               2f 64 65 76 2f 73 64 64 31 00
            ]
      )
      dict entry(
         string "PreferredDevice"
         variant             array of bytes [
               2f 64 65 76 2f 73 64 64 31 00
            ]
      )
      dict entry(
         string "Symlinks"
         variant             array [
               array of bytes [
                  2f 64 65 76 2f 64 69 73 6b 2f 62 79 2d 69 64 2f 75 73 62 2d
                  50 72 6f 6c 69 66 69 63 5f 54 65 63 68 6e 6f 6c 6f 67 79 5f
                  49 6e 63 2e 5f 55 53 42 5f 4d 61 73 73 5f 53 74 6f 72 61 67
                  65 5f 44 65 76 69 63 65 2d 70 61 72 74 31 00
               ]
               array of bytes [
                  2f 64 65 76 2f 64 69 73 6b 2f 62 79 2d 6c 61 62 65 6c 2f 43
                  4f 52 53 41 49 52 00
               ]
               array of bytes [
                  2f 64 65 76 2f 64 69 73 6b 2f 62 79 2d 70 61 74 68 2f 70 63
                  69 2d 30 30 30 30 3a 30 30 3a 31 61 2e 30 2d 75 73 62 2d 30
                  3a 31 2e 34 2e 31 3a 31 2e 30 2d 73 63 73 69 2d 30 3a 30 3a
                  30 3a 30 2d 70 61 72 74 31 00
               ]
               array of bytes [
                  2f 64 65 76 2f 64 69 73 6b 2f 62 79 2d 75 75 69 64 2f 44 38
                  30 30 2d 37 32 45 30 00
               ]
            ]
      )
      dict entry(
         string "DeviceNumber"
         variant             uint64 2097
      )
      dict entry(
         string "Id"
         variant             string "by-uuid-D800-72E0"
      )
      dict entry(
         string "Size"
         variant             uint64 1040171008
      )
      dict entry(
         string "ReadOnly"
         variant             boolean false
      )
      dict entry(
         string "Drive"
         variant             object path "/org/freedesktop/UDisks2/drives/Prolific_Technology_Inc_2e_USB_Mass_Storage_Device_Prolific_Technology_Inc_2e_USB_Mass_Storage_Device"
      )
      dict entry(
         string "MDRaid"
         variant             object path "/"
      )
      dict entry(
         string "MDRaidMember"
         variant             object path "/"
      )
      dict entry(
         string "IdUsage"
         variant             string "filesystem"
      )
      dict entry(
         string "IdType"
         variant             string "vfat"
      )
      dict entry(
         string "IdVersion"
         variant             string "FAT16"
      )
      dict entry(
         string "IdLabel"
         variant             string "CORSAIR"
      )
      dict entry(
         string "IdUUID"
         variant             string "D800-72E0"
      )
      dict entry(
         string "Configuration"
         variant             array [
            ]
      )
      dict entry(
         string "CryptoBackingDevice"
         variant             object path "/"
      )
      dict entry(
         string "HintPartitionable"
         variant             boolean true
      )
      dict entry(
         string "HintSystem"
         variant             boolean false
      )
      dict entry(
         string "HintIgnore"
         variant             boolean false
      )
      dict entry(
         string "HintAuto"
         variant             boolean true
      )
      dict entry(
         string "HintName"
         variant             string ""
      )
      dict entry(
         string "HintIconName"
         variant             string ""
      )
      dict entry(
         string "HintSymbolicIconName"
         variant             string ""
      )
   ]
Для не особо посвященных пояснение. Это массив из некоторого числа элементов типа dict entry. Каждый элемент типа dict entry состоит из элементов типа string и variant. Элемент variant содержит любой иной элемент (строку, или массив, или булевское значение).

Libdbus дает следующие инструменты. Можно получить первый интератор сообщения. Можно получить тип итератора. Можно получить следующий итератор сообщения. Если итератор имеет составную структуру (array, variant и пр.), то можно получить первый субитератор этого составного итератора, а с ним работать аналогично.

Собственно, чтобы просто это дело напечатать (приведен вывод утилиты dbus-send), пишем функцию, которая в цикле получает очередной итератор, анализирует его тип, и, если итератор составной уходит в рекурсию, если простой печатает.

Но задача стоит иначе. Надо проанализировать итераторы типа dict entry, и в зависимости от того, что там лежит в string, поместить значение итератора variant в соответствующее поле структуры. Ну к примеру: string «Device», сохраняем array of bytes [2f 64 65 76 2f 73 64 64 31 00] в поле device.

Собственно, задачу то решил. Но как-то громоздко получилось. Может предложите что-нибудь элегантное и простое. Бывает же такое, что упрешься в одно решение, и не видишь ничего вокруг.

zloy_starper
()

Проясните вопросик про UNIX socket.

Форум — Development

Когда создается PF_UNIX и SOCK_DGRAM сокет, то при чтении из него recvfrom выдает не имеющую смысла информацию об отправителе пакета. В таком случае такой сокет не может быть использован для двустороннего обмена информацией между одним сервером и несколькими клиентами? Или я чего-то не понимаю?

zloy_starper
()

Что за странный API у udisks2?

Форум — Development

Что-то никак не возьму в толк, как с этим вообще работать через Dbus. Как получить перечень подключенных устройств (аналог enumerate)? Какие сигналы передаются?

zloy_starper
()

Как скомпилировать код, в котором используются __builtin расширения gcc?

Форум — Development

Линкер ругается, что не находит соответствующий символ.

zloy_starper
()

Помогите разобраться с automake

Форум — Development

Есть необходимость поправить Makefile.am в проекте xfce-cpufreq-plugin. Но никак не соображу как. Нужно, чтобы перед тем, как начиналась сборка бинарников из сишных исходников создавался файл freqset.h и в этом файл определялось мокроопеределение #define FREQSETDIR $(plugindir). Имеется в виду, чтобы подставлялось значение переменной plugindir, которая задается в Makefile.am.

Вот оригинальный Makefile.am


plugindir = $(libexecdir)/xfce4/panel-plugins
plugin_PROGRAMS = xfce4-cpufreq-plugin

xfce4_cpufreq_plugin_CFLAGS =					\
	-I$(top_srcdir)						\
	@LIBXFCE4PANEL_CFLAGS@					\
	@LIBXFCE4UTIL_CFLAGS@					\
	@LIBXFCEGUI4_CFLAGS@					\
	-DPACKAGE_LOCALE_DIR=\"$(localedir)\"

xfce4_cpufreq_plugin_LDADD =					\
	@LIBXFCE4PANEL_LIBS@					\
	@LIBXFCE4UTIL_LIBS@					\
	@LIBXFCEGUI4_LIBS@

xfce4_cpufreq_plugin_SOURCES =					\
	xfce4-cpufreq-plugin.h					\
	xfce4-cpufreq-plugin.c					\
	xfce4-cpufreq-linux.h					\
	xfce4-cpufreq-linux.c					\
	xfce4-cpufreq-configure.h				\
	xfce4-cpufreq-configure.c				\
	xfce4-cpufreq-overview.h				\
	xfce4-cpufreq-overview.c				\
	xfce4-cpufreq-utils.h					\
	xfce4-cpufreq-utils.c
	
desktop_in_in_files = xfce4-cpufreq-plugin.desktop.in.in
desktop_in_files = $(desktop_in_in_files:.desktop.in.in=.desktop.in)
	
desktopdir = $(datadir)/xfce4/panel-plugins
desktop_DATA = $(desktop_in_files:.desktop.in=.desktop)
@INTLTOOL_DESKTOP_RULE@

EXTRA_DIST = 								\
	$(desktop_in_in_files)

DISTCLEANFILES =							\
	$(desktop_DATA) $(desktop_in_files)
	
# get full path into .desktop file
%.desktop.in: %.desktop.in.in
	sed -e "s^@PLUGIN_PATH@^$(libexecdir)/xfce4/panel-plugins^"	\
		$< > $@

Понимаю, что по аналогии нужно задать что-то типа: sed -e «s^@PLUGIN_PATH@^$(libexecdir)/xfce4/panel-plugins^» \ $< > $@

но только для freqset.h freqset.h.in (или просто через echo без sed и шаблона). Но никак не могу понять, как правильно задать цель. И по поводу % в исходном Makefile.am тоже хотелось бы услышать разъяснения. Спасибо.

zloy_starper
()

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