LINUX.ORG.RU

Сообщения irishka

 

Javascript программист в интересный проект, Москва.

Ищется ведущий javascript программист, в очень интересный стартап.
Необходимо уметь:
1. javascript на хорошем уровне.
2. иметь представление о разработки расширений для chrome, firefox.(практический опыт приветствуется)
3. Огромный запас энтузиазма.
4. Желание стать частью команды, и в будущем войти в долю, в проекте.

писать на почту:
e-mail: kakamacha@mail.ru

irishka
()

Обработчик NF_IP_LOCAL_IN для нетфильтра

Добрый день. Пишу некий хук для нетфильтра(ядро 2.6.10 на однопроцессорной системе), который занимается декодированием пришедших по сети данных. Тип хука NF_IP_LOCAL_IN. Насколько я понимаю хук выполняется из softirq (NET_RX_SOFTIRQ net_rx_action), соответственно в момент выполнения отключено вытеснение (как видим в функции ksoftirqd). Так как декодирование достаточно долгое, и эксперименты показали что иногда функция декодирования приводит к тому что мы начинаем терять пакеты в бэклог, было решено вынести декодер в отдельный поток(условно поток ядра B). Теперь происходит следующее, сам хук просто берет данные из sk_buff и кладет их в некий буфер, которые в дальнейшем обработает поток B. Следовательно необходимо синхронизировать доступ к буферу (использую спинлоки). Насколько я поняла на однопроцессорной системе макрос spin_lock просто отключает вытеснение (preempt_disable), соответственно мы не можем делать вызовы которые могут привести к засыпанию треда внутри лока.

А теперь вопрос. Если поток B захватил spinlock, может ли его каким либо образом вытеснить ksoftirqd и обработать softirq? Единственное место получается где это может произойти, (с учетом того что и в потоке B и в хуке нет переключения контекста) это возврат из обработки аппаратного прерывания. Но если посмотреть на код (ret_from_intr для i386, для всех остальных архитектур наверно также?) то мы видим следующее:

ENTRY(resume_kernel)
    cmpl $0,TI_preempt_count(%ebp)  # non-zero preempt_count ? 
    jnz restore_all

то есть проверка какая-то все-таки есть, следовательно вытеснить наш поток B обработчик softirq все-таки не может?

Правильно ли я понимаю принцип работы?

irishka
()

RFC 5053

Доброе время суток.

Сталкивался ли кто-нибудь с реализацией алгоритма Raptor FEC, указанным в этом RFC? Или есть люди, которые занимались этим? Есть проблемма в декодировании символов, методом указанным в RFC. В какой-то момент необходимо решить уравнение A*C=D (C - искомый вектор) в поле GF(2). Если решать методом гаусса, то все получается отлично(находим вектор C). Если же использовать метод указанный в RFC то вектор C не совпадает с тем что получен, первым методом. Неужели ошибка в RFC?

irishka
()

вывод netstat

Доброго времени суток. Не могли бы объяснить разницу в выводе netstat

tcp 0 0 :::6881   :::*
и
tcp 0 0 0.0.0.0:6881   0.0.0.0:*

В чем конкретно разница между 0.0.0.0 и :::?

Заранее спасибо.

irishka
()

Операция read в ядре

Добрый день.

Ядро Linux 2.6.17 процессор sh4.

Есть модуль который переопределяет функию readpage структуры:

static struct address_space_operations my_asops = {
    readpage:   my_iop_readpage
};
Функцию readpage дергает ядро, в тот момент когда необходимо начитать страницу (struct page) в кэше. Реализация функции readpage в my_module просто дергает функцию read файловой системы:
char *buf;
struct file *filp;
filp->f_op->read(filp, buf, readlen,&(filp->f_pos))
Вопрос: является ли функция read (скажем ext2) синхронной?

Судя по исходному коду ядра вызов передается do_sync_read (отсюда делаю вывод, что функция синхронная). Но происходит следующее, если запустить на исполнение програму, обращение к которой перехватывает мой модуль,то можно заметить, что при наличии в коде модуля, задержек (например printk), страницы (struct page) заполняются данными и програма успешно запускаются. Если убрать все задержки то при первом запуске програма падает с SEGFAULT при втором BUS ERROR (либо наоборот порядок не известен), при третьем успешно запускается.

Если функция read асинхронная то насколько я понимаю при недоступности данных она должна вернуть некий код (что-то типа EAGAIN), но read все время возвращает кол-во прочитанных данных.

irishka
()

ищется C++ программист

Ищется третий человек в команду для работы над проектом C++. Амбициозный парень(или девушка) для написания аналога google mini(http://www.google.com/enterprise/search/mini.html) с специфичными дополнениями(подробности при встречи). Обязательно из Москвы. Для связи jid: osvoboditel@jabber.org

irishka
()

glibc-2.9 socket implementaion

Добрый день!

Как найти реализацию socket(...).

В glibc-2.9(socket/sys/socket.h) вижу следующее:

extern int socket (int __domain, int __type, int __protocol) __THROW;
Но тело функции socket(...) в исходниках glibc найти не получилось. Также встречались следующие объявления макросов:
0 gai.c           27 #define __socket socket
1 res_hconf.c      6 #define __socket socket
2 tst-rfc3484-2.c  7 #define __socket socket
3 tst-rfc3484-3.c  7 #define __socket socket
4 tst-rfc3484.c    7 #define __socket socket

После этого смутило такое место в ports/sysdeps/unix/sysv/aix/socket.c:

#include <sys/socket.h>
int
__socket (int domain, int type, int protocol)
{
  return socket (domain, type, protocol);
}

Может ли кто-нибудь внятно объяснить всю цепочку реализации socket(...)? Заранее благодарна.

irishka
()

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