LINUX.ORG.RU

Сообщения cs

 

Помогите с поиском книги в электронном виде

Форум — Talks

Добрый день!

Может быть кто-нибудь может помочь с поиском в электронном виде книги:

Дзюба В.П. Скалярно-векторные методы в теоретической акустике. Владивосток: Дальнаука, 2006. 195 с.

Буду очень признателен.

 

cs
()

Анализ текста: поиск пар слов

Форум — Development

Добрый день!

Есть задача находить в тексте пары слов, которые могут находиться друг от друга на некотором расстоянии. Не подскажете эффективные алгоритмы?

 ,

cs
()

Профилирование ядерного модуля

Форум — Development

Добрый день!

Есть некоторый ядерный модуль, являющийся целью iptables. При существенной сетевой нагрузке процессы events/N начинают отъедать неслабое процессорное время. Соответственно, проблема видимо кроется в функции, используемой в workqueue. Хочется попытаться понять эту проблему и ее решить. Возникает два вопроса:

1) Как создать локальную сетевую нагрузку, чтобы проблему можно отладить? Возможно, ядерный pktgen + tun/tap интерфейс?

2) Как профилировать код модуля ядра? Вроде как, Oprofile хорошо с этим справляется. Может быть есть что-нибудь более простое и узкоспециализированное?

cs
()

Стиль записи memcpy

Форум — Development

Доброе утро!

Есть ли более изящный способ записи подобных конструкций на C (желательно без макроса):

        memcpy(sr->ptr, sb, sizeof(struct shm_header));
        sr->ptr += sizeof(struct shm_header);
        memcpy(sr->ptr, ibp, sizeof(struct shm_prelude));
        sr->ptr += sizeof(struct shm_prelude);
        memcpy(sr->ptr, hbuf, ibp->hlen);
        sr->ptr += ibp->hlen;
        memcpy(sr->ptr, paybuf, ibp->len);
        sr->ptr += ibp->len;
cs
()

Проблема с C/pthreads кодом

Форум — Development

Добрый день!

Есть некоторая программа, которая порождает несколько потоков. В какой-то случайный момент времени она начинает есть все процессорное время. Если сделать strace, тогда будет видно следующее:

rt_sigtimedwait([INT ALRM TERM], NULL, NULL, 8^C <unfinished ...> 

Есть ли идеи, что может вызывать такое поведение?

cs
()

архитектура демона

Форум — Development

Добрый день!

Есть задача написать некоторый демон, он считывает некоторый конфигурационный файл и, следуя ему, начинает слушать некоторые источники информации и записывать в области общей памяти. Каждому источнику информации соответствует некоторая область памяти. Я думаю сделать так: для каждой такой пары порождать процесс fork-ом, и в каждом подпроцессе создавать область памяти и прослушивать источник. В каждом из потомков может что-то случиться, поэтому было бы хорошо, чтобы главный процесс получал оповещение о смерти потомков и мог его перезапускать. Нормально ли использовать такой подход? Может быть есть примеры в каких-то проектах?

cs
()

Проблема с getprotobynumber(3)

Форум — Development

Добрый день!

Имеется некоторая программа, которая достаточно часто вызывает функцию getprotobynumber():

pe = getprotobynumber(proto);

if (dir > 0) {
  fprintf(stdout, "OUT %llu:%llu %u.%u.%u.%u:%u %u.%u.%u.%u:%u %s\n",
          received, sent, src[0], src[1], src[2], src[3], srcport,
          dst[0], dst[1], dst[2], dst[3], dstport, 
          pe?(pe->p_name):"unk");
  } else {
  fprintf(stdout, "IN %llu:%llu %u.%u.%u.%u:%u %u.%u.%u.%u:%u %s\n",
          received, sent, src[0], src[1], src[2], src[3], srcport,
          dst[0], dst[1], dst[2], dst[3], dstport, 
          pe?(pe->p_name):"unk");
} 

В какой-то (очень редкий) момент времени, программа начинает крутиться в бесконечном цикле:

open("/etc/protocols", O_RDONLY|O_CLOEXEC) = 4
fcntl64(4, F_GETFD)                     = 0
fcntl64(4, F_SETFD, FD_CLOEXEC)         = 0
fstat64(4, {st_mode=S_IFREG|0644, st_size=2626, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7fbf000
read(4, "# Internet (IP) protocols\n#\n# Upd"..., 4096) = 2626
close(4)                                = 0
munmap(0xb7fbf000, 4096)                = 0
open("/etc/protocols", O_RDONLY|O_CLOEXEC) = 4
fcntl64(4, F_GETFD)                     = 0
fcntl64(4, F_SETFD, FD_CLOEXEC)         = 0
fstat64(4, {st_mode=S_IFREG|0644, st_size=2626, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7fbf000
read(4, "# Internet (IP) protocols\n#\n# Upd"..., 4096) = 2626
close(4)                                = 0
....

Ничего, имеющего отношения к этой проблеме, в программе кроме указанного вызова getprotobynumber() нет. Есть идеи, из-за чего данная проблема может возникать?

cs
()

IPC

Форум — Development

Имеется некоторое приложение, которое получает бинарные данные из некого потока информации (пусть это будет FIFO-файл). Хочется, чтобы несколько других приложений могли обрабатывать эти данные в реальном времени. Для этого реализована схема с двойной буферизацией: в каждый момент времени в одном из буферов находятся все обработчики, а в другой в это время происходит запись. Синхронизация основана на двух семафорах. Проблема состоит в следующем: обработчик информации может захватить семафор и заблокироваться на неопределенный момент времени во время чтения. Из-за этого обработчики сразу же делают memcpy() всего буфера в локальную память и отпускают блокировку. В случае если они задерживаются, то происходит восстановление из архива, требующее I/O. Возможно имеется какая-то известная схема решения этой проблемы?

cs
()

Пример смешанного проекта с autotools

Форум — Development

Доброе утро!

Есть проект, содержащий как ядерный модуль (kernel-space код), так и много user-space утилит, и библиотеку. Примерно следующая структура:

dir1/ksrc (kernel module)
dir1/ipt_target (iptables user-space target)
dir1/kernel_to_stdout (pass some info from kernel-space to user-space)
lib/ (несколько статичных библиотек, используемых user-space утилитами)
apps/app1/
apps/app2
..
tools/app1
tools/app2 (некоторые user-space приложения, которые линкуются с библиотеками из lib/)
common/ (общие для user-space и kernel-space хеадеры, которые собираются с помощью awk и Make)

Хочется все это перевести на autotools, а для этого хочется увидеть хороший пример уже сделанного проекта с похожей структурой. Хочется, чтобы ./configure скрипт понимал вещи вроде --without-kernel-module, --without-apps, --without-dirs и не компилировал соответствующие части, а также чтобы можно было задавать некоторые константы общие для всех частей проекта (таких 2 или 3 + пути к сырцам ядра/iptables). Буду очень признателен, если кто-нибудь поможет найти что-то подобное. Вопрос выбора autotools обсуждать не стоит.

cs
()

Ищу средство IPC

Форум — Development

Доброе утро!

Есть следующая задача: некоторое приложение принимает из сети информацию, которая должна быть обработана несколькими клиентами. Проще говоря, имеет одного производителя и много потребителей. Каждый пакет должен быть обработан всеми клиентами в "приблизительно" реальном времени. Клиенты -- разнородные процессы на одном хосте. Первое, что приходит в голову -- использовать кольцевой буфер в общей память, а также семафоры для синхронизации. Однако, возможен следующий сценарий: один из клиентов заснет и проспит достаточно долго (мы не удерживаем блокировку долго из соображений эффективности) и проспит весь круг -- нужно иметь способ восстановиться из архива (есть также один клиент, который просто архивирует информацию на диск). Средство IPC, имеющее отношение к диску лучше не предлагать (например, вызов внешнего приложения при ротации архива). Может быть будут какие-либо идеи?

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

cs
()

Запретить форвардинг пакетов с определенного интерфейса

Форум — Admin

Добрый день!

Ситуация следующая: есть интерфейс (предположим, tun0), на который приходят пакеты из совершенно другой сети (просто пересылаются копии пакетов с некоторого граничного маршрутизатора). Нужно запретить этим пакетам после прихода куда-либо перенаправляться, но с одним условием: должен работать механизм connection tracking (/proc/net/ip_conntrack), который должен отслеживать состояние соединений, соответствующих этим пакетам. Есть идея сделать бридж и перебрасывать пакеты в несуществующую сеть, но может быть есть какие-то более простые и/или готовые решения?

>>>

cs
()

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