LINUX.ORG.RU

Сообщения BuG2BuG

 

erlangio — proof of technology обмен данными между модулем ядра Linux и виртуальной машиной Erlang

Доброго времени суток, коллеги.

В рамках курсовой работы по курсу «Операционные системы» в МИЭМ НИУ ВШЭ, я реализовал однонаправленный механизм взаимодействия между драйвером ядра Linux и приложением на Erlang/OTP: https://github.com/MIEMHSE/erlangio.

Механизм представляет из себя следующее: драйвер при загрузке создает два устройства (одно символьное misc, а второе — файл в procfs). При записи в /dev/erlangio данные сохраняются в массив, а затем отдаются при чтении /dev/erlangio или /proc/erlangio. Приложение на Erlang/OTP при запуске создает callback на действие закрытия файла по записи с помощью механизма inotify. При вызове callback'а, данные читаются из /proc/erlangio. Почему нельзя было обойтись одним misc-устройством? Потому что при попытке открытия устройства из /dev/ с использованием операции file:open/2, возвращается eisdir. По причине странной работы с файлами, из procfs приходится читать файл небольшим костылем.

И вот, собственно, вопрос. Пытаясь изначально реализовать обмен не через procfs или сокеты (а, допустим, с помощью mmap), столкнулся с тем, что не смог найти вменяемого IPC между, собственно, ядром и юзерспейсом, если не считать kdbus (оно уже в ядре?). Может кто подскажет чего-нибудь путного почитать на эту тему?

Спасибо.

 , ,

BuG2BuG ()

[Eclipse] Вопрос знатокам

Возможно ли в Eclipse 3.4 отключить подсветку синтаксических ошибок (подчёркивания или вообще проверку) для конкретных типов файлов (.m - Objective-C поставил как файл исходников C/C++ - открывается в CDT, .psp - Python Server Pages просто открывается с помощью редактора PyDev)? А то половина кода подчёркнуто, раздражает сильно. :(

---
С Уважением,

BuG2BuG ()

[2 bender] OpenProj PNG Extension для OpenProj 1.4

Уважаемый автор сего чуда: http://code.google.com/p/openprojext/ ,

Недавно начал заниматься планированием. Аналога OpenProj (помимо глючного GanttProject) не нашёл, но в нём не хватало экспорта в PNG. Однако bender дописал её, но только для 1.2. Теперь вопрос bender'у: не могли бы Вы выложить сборку для версии OpenProj 1.4, а то тот код базируется на версии 1.2, а её сборки под Mac OS X уже нигде неть. T_____T

Спасибо.

---
С Уважением,

BuG2BuG ()

[Python] Построчный режим буферизации

Пишу на Python клиент-серверное приложение, где сервер использует суперсервер xinetd, цепляясь за сокеты своими stdin и stdout. И вроде бы всё ничего, но один момент мне абсолютно не понравился. Программа сначала читает все данные, проходит какой-то промежуток времени и только потом она отдаёт их в сокет. Думаю, во всём виноват режим буферизации. Для C построчный режим устанавливался бы как setvbuf (stream, 0, _IOLBF, 0);, а в Python абсолютно ума не приложу, как сделать что-то подобное. Может у кого-то есть идеи?

---
С Уважением,

>>>

BuG2BuG ()

[Python] Проверка на None с присваиванием

Доброго времени суток, All:

Кто-нибудь знает, как в таком выражении проверить, что curr.fetchone() не является None и сразу присвоить его тьюплу, а то пытаюсь сделать так, но если юзверя нет в бд, то вылазит экзепшн TypeError: 'NoneType' object is not iterable. Вот думаю, кроме отлова исключения есть ли способы?

curr.execute('SELECT (passwd) FROM users WHERE login = (%s)', (login,))
(gotpasswd,) = curr.fetchone()

---
С Уважением,

>>>

BuG2BuG ()

[C] Проблемы с самопальным итератором.

Доброго времени суток, all.

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

Код:

// Объявляем свою структуру для игровых объектов со ссылками на предыдущий и следующий

typedef struct CGameObject* GameObjectPtr;

typedef struct CGameObject
{
    int x;
    int y;
    GameObjectPtr prev;
    GameObjectPtr next;
} GameObject;

// ----------------------------------

// Сравниваем x и y двух объектов. При совпадении, возвращаем указатель на первый
static GameObjectPtr comparexy(GameObjectPtr go, GameObjectPtr goxy)
{
    if((go->x == goxy->x) && (go->y == goxy->y))
    {
        return go;
    }
    return NULL;
}

// Собственно, итератор с callback-функцией, принимающей два параметра - текущий объект и дополнительный.
GameObjectPtr iterate(GameObjectPtr begin, GameObjectPtr callback(GameObjectPtr, GameObjectPtr), GameObjectPtr additional)
{
    GameObjectPtr gocur = begin, goret = NULL;
    while(gocur->next != NULL)
    {
        gocur = gocur->next;
        if((goret = callback(gocur, additional)) != NULL)
        {
            return goret;
        }
    }
    return NULL;
}

// Функция поиска объекта по его x и y
GameObjectPtr gofindbyxy(GameObjectPtr begin, int x, int y)
{
    GameObjectPtr gonew = goalloc(NULL);
    gonew->x = x;
    gonew->y = y;
    return iterate(begin, comparexy, gonew);
}

При вызове gofindbyxy(begin, 1, 1); объекта, который существует он просто не находит. :(
Не знаю, где собака порылась, не могу найти ошибку, если надо могу привести код аллокатора и деструктора.

---
С Уважением,

>>>

BuG2BuG ()

[C++][Qt3] Зачем Qmake реализует объявления слотов?

Доброго времени суток, All:

Пару часов назад начал изучать Qt3. До этого графические приложения 
писал на C++ только под QNX/Photon (собственно, и C++ подзабыл, а 
слоты и сигналы для меня - что-то новое).

Обрисую ситуацию: создаю форму в Qt Designer, объявляю сигналы и 
слоты (virtual) там же. Создаю простое приложение:

//------------
// main.cpp
//------------

#include <qapplication.h>

#include "qtableform.h"

int main(int argc, char **argv)
{
	QApplication app(argc, argv);
	QTableForm * frmMain = new QTableForm;
	app.setMainWidget(frmMain);
	frmMain->show();
	return app.exec();
}

//------------
// qtableformlogic.cpp
//------------

#include "qtableform.h"

void QTableForm::fileExit()
{
	printf("Hello, world!!1111\n");
}

//------------

Далее делаю так:

[bug2bug@bug2bug-sl QTable]$ qmake -project
[bug2bug@bug2bug-sl QTable]$ qmake
[bug2bug@bug2bug-sl QTable]$ make
/usr/lib/qt-3.3/bin/uic qtableform.ui -o qtableform.h

[ ========= CUT ========== ]

g++  -o QTable main.o qtableformlogic.o qtableform.o moc_qtableform.o   -L/usr/lib/qt-3.3/lib -lqt-mt -lXext -lX11 -lm
qtableform.o: In function `QTableForm::fileExit()':
/home/bug2bug/Projects/QTable/qtableform.cpp:548: multiple definition of `QTableForm::fileExit()'
qtableformlogic.o:/usr/lib/qt-3.3/include/qglist.h:150: first defined here
collect2: выполнение ld завершилось с кодом возврата 1
make: *** [QTable] Ошибка 1
[bug2bug@bug2bug-sl QTable]$  

Смотрю, хоба на. А и правда оно уже объявлено само в файле, которого 
я не создавал:

//------------
// qtableform.cpp
//------------

void QTableForm::fileExit()
{
    qWarning( "QTableForm::fileExit(): Not implemented yet" );
}

//------------

Не знаю как это излечить. Если у кого есть соображения - поделитесь 
пожалуйста.

Заранее благодарен,

ЗЫ: Просьба не ругать сильно, если я чего-то не догоняю. Gtk+ & 
C/PyGtk для меня ближе, но, к сожалению, задача поставлена конкретно. :(

---
С Уважением,

>>>

BuG2BuG ()

Проблемы при копировании большого видео с фотоаппарата.

Дано: 
  Debian GNU/Linux 4.0 r1 Etch (ядро 2.6.18.5-686);
  KDE 3.5.5
  Фотоаппарат Kodak EasyShare M853, на котором видеофайл ~700 метров.
  На разделе-приёмнике свободно 4,0 ГБ.

При копировании конька пишет: "нет связи" и ждёт, лампочка на фотоаппарате мигает. 
Минут через 5-7 выкидывает ошибку "Неизвестная ошибка (дальше невоспроизводимые символы)" с кнопкой "Отмена", лампочка на фотоаппарате просто горит. 
Файлы размером мегабайт ~100 копируются успешно. Никто с подобным поведением не сталкивался?

---
С Уважением,

>>>

BuG2BuG ()

Fedora 8, nVidia-Legacy и Compiz

Поставил драйвера для своего GeForce 256 на FC8/i386. 
Захотелось запустить Avant Window Navigator, а он требует Compiz.
Поставил Compiz, Emerald и "подобное фуфло" на GNOME, запускаю:

[bug2bug@bug2bug ~]$ compiz --replace

Бордеры у окон исчезают, в терминал ничего не выводится, X'ы виснут, но курсор мыши двигается. 
Спасает Ctrl-Alt-Bksp. Пошукал по форумам, пишут много чего интересного, но не про мой случай. 

Выхлоп uname:

[bug2bug@bug2bug ~]$ uname -a
Linux bug2bug 2.6.23.1-49.fc8 #1 SMP Thu Nov 8 21:41:26 EST 2007 i686 i686 i386 GNU/Linux

Direct Rendering есть:

[bug2bug@bug2bug ~]$ glxinfo | grep direct
direct rendering: Yes

Вот конфиг xorg.conf:

[bug2bug@bug2bug ~]$ cat /etc/X11/xorg.conf
Section "ServerLayout"
        Identifier     "single head configuration"
        Screen      0  "Screen0" 0 0
        InputDevice    "Keyboard0" "CoreKeyboard"
EndSection

Section "Files"
        ModulePath   "/usr/lib/xorg/modules/extensions/nvidia"
        ModulePath   "/usr/lib/xorg/modules"
EndSection

Section "Module"
        Load  "extmod"
        Load  "record"
        Load  "dbe"
        Load  "glx"
        Load  "xtrap"
        Load  "freetype"
        Load  "type1" 
EndSection

Section "InputDevice"
        Identifier  "Keyboard0"
        Driver      "kbd"
        Option      "XkbModel" "pc105"
        Option      "XkbLayout" "us,ru"
        Option      "XkbOptions" "grp:shifts_toggle,grp_led:scroll"
EndSection

Section "Monitor"
        Identifier   "Monitor0"
        ModelName    "LCD Panel 1280x1024"
        HorizSync    31.5 - 64.0
        VertRefresh  56.0 - 65.0
        Option      "dpms"
EndSection

Section "Device"
        Identifier  "Videocard0"
        Driver      "nvidia"
        Option      "AllowGLXWithComposite" "true"
EndSection

Section "Screen"
        Identifier "Screen0"
        Device     "Videocard0"
        Monitor    "Monitor0"
        DefaultDepth     24
        SubSection "Display"
                Viewport   0 0
                Depth     24
        EndSubSection
        Option     "AddARGBGLXVisuals" "True"
EndSection


Помогите, пожалуйста.

---
С Уважением,

>>>

BuG2BuG ()

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