LINUX.ORG.RU

Сообщения DesertFox

 

[ГОСТ] Программа для рисования схем

Привет.

Подскажите пожалуйста программу для рисования принципиальных схем.

Что хотелось бы видеть в этой программе:

  • ГОСТовские рамки и штампы
  • Библиотека элементов (нужны серии К155 или SN74)
  • Автонумерация элементов

Хотелось бы, чтобы эта программа имела консольный интерфейс (типа graphviz).

 

DesertFox
()

[gcc] баг в __builtin_clz?

$ gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.5.2/lto-wrapper
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Debian 4.5.2-4' --with-bugurl=file:///usr/share/doc/gcc-4.5/README.Bugs --enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.5 --enable-shared --enable-multiarch --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.5 --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-plugin --enable-gold --enable-ld=default --with-plugin-ld=ld.gold --enable-objc-gc --with-arch-32=i586 --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
Thread model: posix
gcc version 4.5.2 (Debian 4.5.2-4) 

У кого компилятор поновее, проверьте, пожалуйста, этот код:

#include <stdio.h>
 
int main(int argc, char *argv[])
{
	int a, i;
	for(i = 1; i < 80; i++) {
		printf("i = %x\n", i);
		printf("clz(0) %x\n", __builtin_clz(0));
		printf("clz(i-1) %x\n", __builtin_clz(i-1));
		break;
	}
    return 0;
}

У меня выдает следующее:

$ gcc test1.c && ./a.out 
i = 1
clz(0) 20
clz(i-1) 1f

 

DesertFox
()

[x86_64] Виртуальная адресация

Добрый день.

Читаю про адресацию в Линуксе, но никак не могу понять почему логический (линейный) адрес в ядре _всегда_ соответствует физическому, только смещен на константу. Читал, что это должно как-то увеличивать скорость, но ведь все равно адрес преобразовывается или через таблицу страниц или через tlb и, как мне кажется, ему должно быть тогда все равно. Смысл вижу только, если память будет использоваться при вводе/выводе (DMA, например).

И почему ядро старается разместиться в ZONE_NORMAL, а не в ZONE_HIGH, например? Ведь адреса-то виртуальные.

DesertFox
()

[kernel] где trace_*?

Добрый день.

Решил разобраться как работает kmalloc, начал изучать код. Тут мне стали попадаться функции (макросы) вида trace_* (например, trace_kmalloc, trace_kmem_cache_alloc_node, trace_kmem_cache_alloc и т.д.) Определения этих функций я так и не нашел.

Подскажите, пожалуйста, как/где посмотреть что же они все таки делают.

 

DesertFox
()

[python]возврат значений через параметры

Добрый день! Как в python3 вернуть значение через парметр? Это то что в C

 
int foo(int * bar)
{
	*bar = 1;
}
или в паскале
procedure foo(var bar : integer);
begin
	bar := 1;
end;

 

DesertFox
()

[LDD3] Обновились примеры

Javier Martinez Canillas обновил примеры LDD3, теперь их можно собрать и для ядра 2.6.32. Лично у меня сходу собралось все, кроме примера про usb.

Мое ядро:

$ uname -a
Linux debian 2.6.32-5-686 #1 SMP Fri Dec 10 16:12:40 UTC 2010 i686 GNU/Linux

ссылка на страничку: https://github.com/martinezjavier/ldd3

git-рипозиторий: git://github.com/martinezjavier/ldd3.git

DesertFox
()

[kernel] Блочные устройства в ядре 2.6.32

С Новым годом.

Учусь писать драйвер блочного устройства, в качестве руководства использую LLD3. Заметил, что в моем ядре Linux debian 2.6.32-5-486 кое-что отличается от написанного в книге. Например, изменились передаваемые параметры функциями block_device_operations, blk_put_queue больше недоступно и.т.д.

Среди прочего заметил, что теперь запросы делаются в байтах, а не в секторах. Означает ли это, что я могу теперь использовать размер блока меньший, чем 512 байт (для меня оптимальным размером был бы 64 байта)? С другой стороны

dd if=/dev/urandom of=/dev/lptprom count=1 bs=512 
Делает запросы по 4 кб. Как мне тогда определить, что надо записать именно 512 байт?

Эта же команда, перед тем как записать что-то, сначала читает этот блок, а уж потом пишет. Зачем?

 

DesertFox
()

Debian amd64 компиляция

Решил собрать sage из исходников, но при компиляции получаю ошибку. Лог и сама ошибка:

mpih-add1-asm.S: Assembler messages:
mpih-add1-asm.S:46: Error: bad register name `%rsi,%rcx,8)'
mpih-add1-asm.S:47: Error: bad register name `%rdi,%rcx,8)'
mpih-add1-asm.S:48: Error: bad register name `%rdx,%rcx,8)'
mpih-add1-asm.S:49: Error: bad register name `%rcx'
mpih-add1-asm.S:53: Error: bad register name `%rsi,%rcx,8)'
mpih-add1-asm.S:54: Error: bad register name `%rdx,%rcx,8)'
mpih-add1-asm.S:55: Error: bad register name `%r10'
mpih-add1-asm.S:56: Error: bad register name `%rax'
mpih-add1-asm.S:57: Error: bad register name `%rcx'
mpih-add1-asm.S:60: Error: bad register name `%rcx'
mpih-add1-asm.S:61: Error: bad register name `%rax'
make[4]: *** [mpih-add1-asm.lo] Ошибка 1
 uname -a
Linux debian 2.6.32-5-amd64 #1 SMP Sun Oct 31 00:00:31 UTC 2010 x86_64 GNU/Linux
 gcc -v
Using built-in specs.
Target: i486-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Debian 4.4.5-4' --with-bugurl=file:///usr/share/doc/gcc-4.4/README.Bugs --enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.4 --enable-shared --enable-multiarch --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.4 --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-objc-gc --enable-targets=all --with-arch-32=i586 --with-tune=generic --enable-checking=release --build=i486-linux-gnu --host=i486-linux-gnu --target=i486-linux-gnu
Thread model: posix
gcc version 4.4.5 (Debian 4.4.5-4) 
gcc-multilib установлен. Как мне указать gcc собирать sage под мое ядро?

DesertFox
()

[kernel]sleep в ядре

Добрый день.

Учусь писать драйвер. При взаимодействии с устройством, после посылки в порт данных, необходимо дать устройству «подумать», перед посылкой очередной порции данных. Интервал задержки составляет не менее 100 мс. В linux/unistd.h не нашел заголовков никаких *sleep-функций. Драйвер регистрирую, как символьное устройство.

 

DesertFox
()

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