LINUX.ORG.RU

Сообщения xdiman

 

сделать страницы в адресном пространстве ядра writeable

Внимание, вопрос. Ядро - 2.6.31. Имеются некоторые адреса в адресном пространстве ядра, по коим желательно бы записать некоторые данные. Но «ой, вот ведь незадача» - эти страницы памяти помечены как read-only, а прекрасную функцию change_page_attr давным-давно из ядра убрали. Попробовал я set_memory_rw и set_pages_rw - даже то, что они не экспортируются, меня не остановило, взял адреса из kallsyms. Не работает - при попытке записать данные все так же возвращается Oops. Что же делать, господа? Посоветуйте, прошу, больше конкретных решений, хороших и разных.

xdiman
()

Qt4 - два раза эмитится clicked() у QPushButton


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

frmMain::frmMain(QWidget *parent) : QDialog(parent)
{
setupUi(this);

connect( btnNew, SIGNAL( clicked() ), this, SLOT( AddChain() ) );
connect( btnEdit, SIGNAL( clicked() ), this, SLOT( EditChain() ) );
connect( btnDelete, SIGNAL( clicked() ), this, SLOT( DelChain() ) );
connect( btnStart, SIGNAL( clicked() ), this, SLOT( startChain() ) );
connect( lstChains, SIGNAL( selected(int) ), this, SLOT( checkState(int) ) );
connect( btnStop, SIGNAL( clicked() ), this, SLOT( stopChain() ) );
connect( pushButton6, SIGNAL( clicked() ), this, SLOT( loadFile() ) );
connect( pushButton6_2, SIGNAL( clicked() ), this, SLOT( saveFile() ) );

}

а это код, например, добавления цепочки:

void frmMain::AddChain()
{
frmEdit *dialog = new frmEdit;
lstChains->insertItem("New Chain");
edt_index = lstChains->count() - 1;
act = 0;
dialog->setValues(this, "New Chain", "1080", "", 0);
dialog->show();
}

и этот код вызывается дважды при нажатии на кнопку, и возникает два окошка frmEdit.

почему, интересно?

>>>

xdiman
()

[ищу работу] Москва, Linux/C/C++, разовую/постоянную

Вследствие обострившегося в последнее время финансового кризиса публикую объявление о поиске работы. Специализация - система, ядро, сеть. Резюме имеется. Ауригу не предлагать :)

xdiman
()

увеличение и пожирнение шрифтов после emerge -u world

Недавно столкнулся с такой проблемой. Сделал emerge --sync, запустил emerge -u world, через некоторое время перезапустил систему. После старта иксов обнаружил, что во всех Qt-шных приложениях, Firefox'е, и флуксбоксе шрифты Bitstream Vera Sans пожирнели и сделались больше размером. Единственное, что продолжало рендерить адекватные фонты - это gtk, здесь никаких проблем не обнаружил (в том же Thunderbird все отлично). Залез в qtconfig и методом научного тыка обнаружил, что сей неадекватный шрифт он показывает, и вместо многих других шрифтов - в том же файрфоксе большинство разных шрифтов выглядят одинаково, различается только размер. Создается впечатление, что он не может загрузить, что-ли, файл с фонтом и пихает вместо него какой-то дефолтный. Копание в /etc/fonts, проглядывание фонтмапов положительного результата не дало. Ничего не дало и emerge ttf-bitstream-vera, emerge libXfont и прочее. Я совсем уже запарился, может, у кого-нибудь была подобная проблема?

xdiman
()

[ищу работу] Москва, C/C++, Linux, сеть, свободный график

Ищу работу, со свободным графиком либо на дому - полный рабочий день не потяну, с достойным вознаграждением :) Программирую года три, в основном разовые заказы, в компаниях опыт работы небольшой. C/C++, Linux, главным образом кодинг демонов.

xdiman
()

pthread не работает

ну объясните, все же банально до нельзя.
xcalc не запускается, буфер не выводится.
хотя птред_креате нормально возвращает 0.
без detach пробовал.
все перепробовал.

#include <stdio.h>
#include <sched.h>
#include <pthread.h>
void proc(void*);
int main(int argc, char *argv[])
{
int status;
pthread_t t;
pthread_create(&t, NULL, proc, argv[0]);
pthread_detach(t);
return 0;
}
void proc(void *arg)
{
char * buf;
buf = (char*)arg;
system("xcalc");
fprintf(stderr, "buf = %s\n", buf);
}

xdiman
()

Wildcards

У кого есть алгоритм для работы с wildcards? Вообщем, нужно только одно - функций wild_strcmp(str, wildcard) возвращающая 0 в случае совпадения str с wildcard, и >0 в случае несовпадения. Мне нужна обработка как минимум *, ?, и [...].

xdiman
()

UML на 2.6.8

Скачал себе ядро 2.6.8, и uml-patch-2.6.8-1.
Распаковал ядро, пропатчил, запустил make menuconfig ARCH=um, далее make linux ARCH=um.
Возникла ошибка - флаги -pg и -fomit-frame-pointer несовместимы.
Я поиздевался над CFLAGS в Makefile, начало компилироваться.
И выдало ошибку в init_task.c:
arch/um/kernel/init_task.c:31: error: `init_sighand' undeclared here (not in a function)
arch/um/kernel/init_task.c:31: error: initializer element is not constant
arch/um/kernel/init_task.c:31: error: (near initialization for `init_task.sighand')
arch/um/kernel/init_task.c:31: error: initializer element is not constant
arch/um/kernel/init_task.c:31: error: (near initialization for `init_task.pending.list')
arch/um/kernel/init_task.c:31: error: initializer element is not constant
и так далее.
В чем косяк?
xdiman
()

Временная остановка процесса из ядра

Когда процесс вызывает syscall, он останавливается и ждет возврата. У меня имеется хук на исходящие пакеты(Netfilter), мне требуется остановить процесс для выполнения некоторого кода. Потому что я вызываю brk() для процесса из ядра, когда выполняю следующую инструкцию - сегмент данных уже успевает вернуться в первоначальное положение.

xdiman
()

Разработка LKM

Постоянно занимаюсь разработкой LKM. И постоянно получаю kernel panic :) Приходится перезагружаться, все это ужасно добивает, может что-нибудь посоветуете, воизбежание? VMWare, QEmu тормозят жутко. Не катит.

xdiman
()

Определение ввода с клавиатуры в ядре

Как определить, что производится ввод с клавиатуры? Точнее, как определить, stdin связан с вводом с клавиатуры либо перенаправлен? По сути, с помощью struct file *f = fget(0); в f->f_dentry->d_inode->i_cdev->dev будут содержаться major и minor устройства, с которого происходит ввод. По логике вещей major должен быть равен 4, но не всегда это получается.

xdiman
()

Получение пути к файлу

Интересный случай. Системные вызовы вроде open(), execve() и прочие в качестве имени файла могут получать что-то вроде "./file", "./foo/../bar/file" и т.д. Чтобы преобразовать это к нормальному виду, использую функцию path_lookup: void print_real_filename(const char* filename) { struct nameidata nd; path_lookup(file, LOOKUP_FOLLOW, &nd); // далее, используя nd->dentry->d_iname и перемещаясь назад по // dentry->d_parent, вывожу полный путь. } Далее. Вызываю эту функцию из перехваченного open(). Все нормально работает. Меняю тип возврата функции на char*, и не вывожу, а копирую путь в память, далее возвращаю его. Вызываю из перехваченного open() - вылазит упс. Убираю копирование в память, оставляю только path_lookup(file, LOOKUP_FOLLOW, &nd); вылазит Oops. В чем дело? Может, у кого есть самодельный алгоритм преобразования подобного трэша в нормальное имя файла?

xdiman
()

Code Injection

Ситуация такая: из ядра необходимо заинжектить код в процесс и исполнить его. С инжекшном проблем нет. Проблема есть с передачей на него управления и корректного возврата. Можно исполнить в контексте процесса signal(), установить обработчик какого-либо сигнала на заинжекченный код, потом послать этот сигнал :) Но это 1) изврат 2) не дает возможности вернутся к дальнейшему нормальному исполнению процесса. Что предложите?

xdiman
()

Linux программист.

Ищу работу программиста в Linux. Разрабатываю как LKM, так и приложения уровня пользователя. Связь по icq: 2641564 или e-mail: xdiman@gmail.com

xdiman
()

Memory in Linux Kernel

В адресном пространстве ядра память лимитирована и не свопится. С пространством юзера я могу работать через copy_from_user и copy_to_user. Но выделять память я могу, только используя системный вызов brk(). Память выделяется для процесса current. Вопрос - можно ли ядром выделить кусок памяти вне процессов?

xdiman
()

OpenOffice KDE icons

Как замутить сабж в Gentoo? Видел, что архив с иконками есть, как установить - без малейшего понятия :)

xdiman
()

LKM-rootkit

Кто может, протестируйте сабж. Там исходники, так что можно все проверить - вредоносного кода нет. Создано для ядер 2.6.x. Есть два ридми - на русском и английском. http://dimon1int.narod.ru/itx-0.1.tgz

xdiman
()

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