LINUX.ORG.RU

Сообщения gogi

Как удалить устройство из системы после eject'a?

Форум - Development

Пример для флешки:

# mount | grep sdb
/dev/sdb on /media/QWERTY type vfat (rw,nosuid,nodev,relatime,uid=1000,gid=1000,fmask=0022,dmask=0077,codepage=cp437,iocharset=utf8,shortname=mixed,showexec,utf8,flush,errors=remount-ro,uhelper=udisks)
# umount /dev/sdb
# eject -v /dev/sdb
eject: device name is `/dev/sdb'
eject: expanded name is `/dev/sdb'
eject: `/dev/sdb' is not mounted
eject: `/dev/sdb' is not a mount point
eject: `/dev/sdb' is a multipartition device
eject: trying to eject `/dev/sdb' using CD-ROM eject command
eject: CD-ROM eject command succeeded
# ls -l /dev/sdb
brw-rw---T 1 root floppy 8, 16 Mar 15 13:47 /dev/sdb
# ls /sys/block/sdb/
alignment_offset  capability  device             events        events_poll_msecs  holders   power  range      ro    slaves  subsystem  uevent
bdi               dev         discard_alignment  events_async  ext_range          inflight  queue  removable  size  stat    trace

Команда eject делает ioctl CDROMEJECT, после этого с флешки снимается питание (судя по светодиоду). Но устройство продолжает присутствовать для системы. WTF?

()

gsl - матрицы перемножаются с большой погрешностью

Форум - Development

Вот набросал код, иллюстрирующий проблему. Перемножаю две матрицы 2x2, значения элементов матрицы произвольны.

#include <stdio.h>
#include <gsl/gsl_matrix.h>
#include <gsl/gsl_linalg.h>
#include <gsl/gsl_blas.h>

gsl_matrix *MatrixMultiply(gsl_matrix *mat1, gsl_matrix *mat2)
{
	if (!mat1 || !mat2)
	{
		printf("one empty matrix detected!\n");
		return NULL;
	}

	gsl_matrix *r=gsl_matrix_calloc(mat1->size1, mat2->size2);
	gsl_blas_dgemm(CblasNoTrans, CblasNoTrans, 1.0, mat1, mat2, 0.0, r);
	
	return r;
}

void MatrixPrint(gsl_matrix *mat)
{
	if (!mat)
	{
		printf("empty matrix!\n");
		return;
	}

	/* gsl_matrix_fprintf(stdout, mat, "%.10e"); */
	size_t i=0;
	do
	{
		size_t j=0;
		do
			printf("%17.10e ", gsl_matrix_get(mat, i, j));
		while(++j<mat->size2);
		putc('\n', stdout);
	}
	while(++i<mat->size1);
	}

gsl_matrix *InvertMatrix(gsl_matrix *mat)
{
	if(!mat || mat->size1!=mat->size2)
		return NULL;
	
	int s;

	gsl_matrix *r=gsl_matrix_calloc(mat->size1, mat->size1);
	gsl_permutation *perm=gsl_permutation_alloc(mat->size1);
	gsl_linalg_LU_decomp(mat, perm, &s);
	gsl_linalg_LU_invert(mat, perm, r);

	return r;
}

int main(int argc, char **argv)
{
	gsl_matrix *T1=gsl_matrix_calloc(2, 2);
	gsl_matrix *T2=gsl_matrix_calloc(2, 2);

	gsl_matrix_set(T1, 0, 0, 7.0);
	gsl_matrix_set(T1, 0, 1, 3.0);
	gsl_matrix_set(T1, 1, 0, -2.0);
	gsl_matrix_set(T1, 1, 1, 11.0);

	gsl_matrix_set(T2, 0, 0, -3.0);
	gsl_matrix_set(T2, 0, 1, 4.0);
	gsl_matrix_set(T2, 1, 0, 8.0);
	gsl_matrix_set(T2, 1, 1, 2.0);

	MatrixPrint(T1);

	puts("");
	MatrixPrint(InvertMatrix(T1));

	puts("");
	MatrixPrint(MatrixMultiply(T1, InvertMatrix(T1)));

	return 0;
}

Вот что на выходе

$ ./test 
 7.0000000000e+00  3.0000000000e+00 
-2.0000000000e+00  1.1000000000e+01 

 1.3253012048e-01 -3.6144578313e-02 
 2.4096385542e-02  8.4337349398e-02 

 1.0000000000e+00  0.0000000000e+00 
 3.5045023120e-02  1.0014602093e+00 

Компилирую так: gcc -o2 test.c -lgsl -o test (и ещё возможно с -lgslcblas). Проверял на 64-х разрядной генте и в виртуалке с 32-х разрядным squeeze. gsl что там, что там 1.15.

Обратная матрица считается правильно. Не нравится абсолютная погрешность (0,035 вместо 0) и относительная (1,0015 вместо 1). Я работаю с double же, всё элементарно считается на калькуляторе. По идее, погрешности должны быть этак в миллион раз меньше. А сейчас у меня диф. уравнения не решаются, возможно из-за этого.

PS Программу писал по мотивам этого треда.

()

lor girl

Форум - Talks

Я просто оставлю это здесь. Причём здесь Linux, надеюсь объяснять не надо.

()

[embedded][системщина] errno=Cannot allocate memory, но памяти достаточно

Форум - Development

Отчего это может быть? В системе 64 МБ памяти, программа по показаниям htop занимает обычно не больше 40%, ulimit'ы выставлены по максимуму:

# ulimit -a
-f: file size (blocks)             unlimited
-t: cpu time (seconds)             unlimited
-d: data seg size (kb)             unlimited
-s: stack size (kb)                unlimited
-c: core file size (blocks)        unlimited
-m: resident set size (kb)         unlimited
-l: locked memory (kb)             unlimited
-p: processes                      unlimited
-n: file descriptors               10240
-v: address space (kb)             unlimited
-w: locks                          unlimited
-e: scheduling priority            0
-r: real-time priority             0

В настоящее время мне известно 2 варианта как можно "доканать" программу:

1) У меня настроен небольшой скрипт /proc/sys/kernel/hotplug и я заставляю ядро вызывать этот скрипт десятки раз, пока не получу ошибку

2) Корень на nfs, сохраняется много отладочных данных. Было подозрение, что это nfs как-то что-то кеширует, пока сегодня не узнал про способ 1.

Так на всякий случай

# free
             total         used         free       shared      buffers
Mem:         61212        36604        24608            0          736
-/+ buffers:              35868        25344
Swap:            0            0            0

# cat /proc/meminfo 
MemTotal:        61212 kB
MemFree:         16728 kB
Buffers:           736 kB
Cached:          15972 kB
SwapCached:          0 kB
Active:          24948 kB
Inactive:        13144 kB
SwapTotal:           0 kB
SwapFree:            0 kB
Dirty:               0 kB
Writeback:           0 kB
AnonPages:       21412 kB
Mapped:           8480 kB
Slab:             2592 kB
SReclaimable:      724 kB
SUnreclaim:       1868 kB
PageTables:        856 kB
NFS_Unstable:        0 kB
Bounce:              0 kB
CommitLimit:     30604 kB
Committed_AS:    91180 kB
VmallocTotal:   581632 kB
VmallocUsed:     33180 kB
VmallocChunk:   540668 kB

()

В моей генте хочет поселиться gnome3

Форум - Desktop

Сегодня с обновлением портежа узрел сию пренеприятнейшую новость.
Я его не хочу пускать, это вообще реально?
Попробовал замаскировать третьегномовские пакеты, но упорно не выходит.

()

[c++] Инициализация в теле конструктора или в списке инициализации - большая ли разница в сгенерированном коде?

Форум - Development

Вот интересно, положим есть класс A с примером инициализации указателей

class A
{
private:
  int *A, *B, *C;
public:
  A() : A(NULL), B(NULL), C(NULL)
  {
    A=NULL;
    B=NULL;
    C=NULL;
  }
};
Тут я привёл 2 возможных типа инициализации. Можно либо так, либо так. Если выполняется тело функции, то каждый указатель обнуляется последовательно. Это поведение кажется логичным для обыкновенной функции, возможно оно таким же будет и для конструктора? Если же в классе есть список инициализации, то компилятор может сгенерировать код для забивания памяти нулями какими-нибудь цепочечными командами ещё до вызова конструктора, что в результате будет несколько производительнее. Правильны ли мои соображения?

()

[Радость тред] Купил ноутбук, причём без семёрочки

Форум - Talks

Сабж. Lenovo thinkpad x201i с core i3, 12". Причём как заказал, цена возрасла как-то резко на 3k рублей. Видимо докатилась новая партия и эхо Фукусимы. Модель должна была поставляться с FreeDos, но оный я не увидел, что слегка удивило. На диске не было разделов и похоже он был пустой, ну да ладно, главное таксу микрософту не отстегнул. Из дистрибутивов выбрал генту, дабы попробовать что-то новое(до этого сидел больше на дебианах и арчах) и насладиться истинной скоростью. За 2-3 дня кое-как накатил и слегка обжил новую систему. Собирать не стал только libreoffice(поставил бинарный пакет). Из железа: wifi и bluetooth завёл почти сразу, как только узнал как оно(железо) отзывается. С чем плохо, так это с засыпанием. Suspend to disk не просыпается. Suspend to RAM пингуется после пробуждения, но на экране ничего не видно. Вобщем, верю и надеюсь, что в новых ядрах с этим будет получше.
А так остальное вроде как работает нормально.
Из планов на будущее - поставить grub2 и попробовать с его помощью загрузить образ cd-диска для прошивки биоса. Да и осилить наконец настройку иксов. Ибо сейчас сижу на драйвере vesa.

()

[Не готов]Как узнать неанглоязычную метку с FAT-раздела?

Форум - General

На XP задал такую метку

>>-----Цитата---->>

комментарий

<<-----Цитата----<<

При этом получился вот такой выхлоп blkid

>>-----Цитата---->>

/dev/sdc1: LABEL="M-^JM-^NM-^LM-^LM-^EM-^MM-^R�M-^PM-^HM-^I" UUID="E659-39B0" TYPE="vfat"

<<-----Цитата----<<

dosfslabel /dev/sdc1 читает старую простую метку(метка хранится в 2-х местах и ХРень обновила её только в одном кажется).

Отвалилось автомонтирование в гноме, в /dev/disk/by-label/ соостветствующий файл устройства не появился. Похоже бошку снесло всем утилитам и разом.

()

Насколько хорошо hp probook 5320m дружит с линуксом?

Форум - Linux-hardware

Присматриваюсь к http://market.yandex.ru/model.xml?hid=91013&modelid=6474518. Что привлекает - с железом вроде как почти всё в порядке. Ну и не придётся связываться с семёрочкой.

()

[c/c++] Объединить несколько исходников перед компиляцией в один

Форум - Development

Есть такой известный проект sqlite. Так вот, пишут его как обычный сишный проект, разделённый на десятки-сотни модулей. Но эти же ребята придумали у себя такую хрень как SQLite Amalgamation, примерно то, что вынесено в заголовке. Цель понятна - оптимизация. Так вот, интересует как они это делают? Очевидно же не вручную. Наверняка есть какие-то программы/скрипты. Хорошо, если бы они оказались универсальными и применимыми для любого проекта.

Получается некоторая lto выполняемая ещё до стадии компиляции. Своего рода альтернатива: можно сравнить что лучше и выбрать. Кроме этого, такой механизм может оказаться единственно применимым: у меня, например, gcc при попытке использовать lto падает.

()

[Не RIP] Qt 4.7.2 released

Форум - Talks

Сабж. Чейнжлоги, ссылки для скачивания сами знаете где брать.

()

Операторные скобки

Форум - Development

Нашёл в исходниках gcc

#define def_mbuiltin(MASK, NAME, TYPE, CODE)				\
  do									\
    {									\
      if ((MASK) & insn_flags)						\
        builtin_function ((NAME), (TYPE), (CODE), BUILT_IN_MD, NULL, NULL_TREE);	\
    }									\
  while (0)

Зачем так делают? Ведь можно было бы просто

#define def_mbuiltin(MASK, NAME, TYPE, CODE)				\
	{									\
      if ((MASK) & insn_flags)						\
        builtin_function ((NAME), (TYPE), (CODE), BUILT_IN_MD, NULL, NULL_TREE);	\
    }

И так сплошь и рядом. Соглашение у них какое-то наверное.

()

[ARM]iwmmx на gcc вообще был когда-нибудь юзабельным?

Форум - Development

В последних релизах gcc при попытке компильнуть(кросскомпиляция) простенький пример использования builtin-функций iwmmx стабильно уходит в ICE. Кроме того, есть ещё несколько подобных ошибок. В багзиле всё это висит годами, но видимо nobody cares. Сейчас в моде кортексы и прочие неоны. Что же получается, PXA вроде бы как тупиковая ветвь? Да вроде делает же марвел новые процы на этом ядре(судя по их сайту).

Ну так вот, проблема известна со времён 4.1.x, компиляторы в ветке 4.0.x вроде бы были вообще не юзабельны по другим причинам. Поддержку iwmmx добавили в gcc 3.4 Так вот интересует, там-то хоть оно работало? А может кто нативно успешно компилирует?

()

Вопрос по отмизациям gcc

Форум - Development

Собрал свой кросскомпилятор. Тестирую его и обычный gcc на этом коде

#include <stdio.h> // Или вообще любой хидер из libc

#if defined __OPTIMIZE__
    #error optimization 
#endif

#if defined __OPTIMIZE_SIZE__
    #error optimization for size
#endif

int main ()
{
  return 0;
}
$ arm-unknow-linux-uclibcgnueabi-gcc main.c
main.c:8:6: error: #error optimization for size

$ arm-unknow-linux-uclibcgnueabi-gcc main.c -O0
main.c:8:6: error: #error optimization for size

$ arm-unknow-linux-uclibcgnueabi-gcc main.c -O1
main.c:4:6: error: #error optimization
main.c:8:6: error: #error optimization for size

$ gcc main.c
Ничего

$ gcc main.c -O1
main.c:4:6: error: #error optimization

arm-unknow-linux-uclibcgnueabi-gcc - версии 4.4.5 gcc - версии 4.4.4

Что мне не нравится? Какого-то хрена для кросскомпилятора включена по-умолчанию оптимизация по размеру. Собственно и вопрос, как этого не допустить?

()

Помогите выкачать git-репозиторий Qt

Форум - Development

Со временем понимаю, что никто не горит особым желанием фиксить отрепортенные мною баги. Появилось желание исправить их самому, ну и поучаствовать в разработке Qt. Уже есть кое-какие идеи как я могу помочь проекту. Но, канал у меня узкий и

git clone git://gitorious.org/qt/qt.git
обрывается так и не достигнув цели. Гугление показало, что git докачку не поддерживает. Поэтому буду благодарен, если кто-нибудь на быстром анлиме выкачает этот репозиторий, заархивирует и выложит на сервер поддерживающий докачку.

()

[Исходники Qt][ООП] Что-то я не пойму...

Форум - Development

Привожу кусок кода из файла $QTDIR/src/corelib/codecs/qtextcodec.h

class Q_CORE_EXPORT QTextCodec
{
    Q_DISABLE_COPY(QTextCodec)
public:
...
    QString toUnicode(const char *in, int length, ConverterState *state = 0) const
        { return convertToUnicode(in, length, state); }
    QByteArray fromUnicode(const QChar *in, int length, ConverterState *state = 0) const
        { return convertFromUnicode(in, length, state); }

    // ### Qt 5: merge these functions.
    QTextDecoder* makeDecoder() const;
    QTextDecoder* makeDecoder(ConversionFlags flags) const;
    QTextEncoder* makeEncoder() const;
    QTextEncoder* makeEncoder(ConversionFlags flags) const;

    virtual QByteArray name() const = 0;
    virtual QList<QByteArray> aliases() const;
    virtual int mibEnum() const = 0;

protected:
    virtual QString convertToUnicode(const char *in, int length, ConverterState *state) const = 0;
    virtual QByteArray convertFromUnicode(const QChar *in, int length, ConverterState *state) const = 0;

Смотрим на метод toUnicode(всё аналогично для fromUnicode). Он вызывает convertToUnicode(это метод из секции protected?). Он виртуальный и абстрактный? Но класс-то не виртуальный, я могу создавать его экземпляры и вызывать этот метод toUnicode свободно. WTF? Как это вообще скомпилировалось? Я забыл азы ООП или чего не знаю?

Собственно как я вышел на этот файл. Ковырял свою программу(точнее один тест для неё), в тесте случился segmentation fault. Повторил - не повторяется. Повторил ещё раз - не падает. Хорошо, у меня настроено делать core dump. Беру gdb, смотрю core dump. И вижу это место в backtrace. Нутром чую, что здесь какое-то нехорошее место и должно падать при вызове абстрактного метода. Один раз собственно и упало.

()

Встретил в одном makefil'е присвоение "?=". Что это такое?

Форум - Development

Примеры:

CFLAGS ?= -O2 -g
DESTDIR ?= /usr/local

Со своей стороны скажу, что читал man make, info make, гуглил. Ничего такого не нашёл. Речь идёт по-видимому о GNU make.

()

Отключил USB2.0 - машина уходит в ребут

Форум - Linux-hardware

В биос сетап отключил USB2.0 контроллер.

Загружаюсь, в grube'е выбираю ядро и... почти моментальная перезагрузка. Даже ядро не успевает распаковаться(32-е дебиановское). Ладно, есть в меню grub'a ещё 30-е. Пробую - то же самое.

И напоследок - то же ядро, но в recovery mode. В течении секунды успеваю заметить несколько пробегающих белых строк и опять ребут.

Ядра - x86_64.

Это баг такой или особенности жития линукса на моей материнке?

()

[ОН] Статистика по мобильным ОС

Форум - Talks

http://www.gartner.com/it/page.jsp?id=1372013

                                1Q10        1Q10 Market     1Q09                1Q09 Market
Company                         Units        Share (%)      Units               Share (%)
    
Symbian                         24,069.8        44.3        17,825.3            48.8
Research In Motion              10,552.6        19.4        7,533.6             20.6
iPhone OS                       8,359.7         15.4        3,848.1             10.5
Android                         5,214.7         9.6         575.3               1.6
Microsoft Windows Mobile        3,706.0         6.8         3,738.7             10.2
Linux                           1,993.9         3.7         2,540.5             7.0
Other OSs                       404.8           0.7         445.9               1.2

Total                           54,301.4        100.0       36,507.4            100.0						

1Q10 - первый квартал 2010 года(если кто не понял). Если андроид - это тоже линукс и Other OSs(всякие maemo, webos), то его рыночная доля уже 9.6+3.7+0.7=14%, что уже неплохо. И да, Microsoft с её 6,8% один из аутсайдеров.

()

[Обильное слюноотделение] Нетбук на PowerPC

Форум - Talks

Кто там хотел нетбуков на !x86 и с убунтой на борту?

http://hard.compulenta.ru/531887/

>>-----Цитата---->>

Ъ

Объём оперативной памяти ограничен 256 Мб; в качестве накопителя применён флеш-модуль на 16 Гб. Дисплей LinkBook имеет диагональ 8,9 дюйма и обладает разрешением 1024×600 пикселов.

В арсенале мини-компьютера — веб-камера, Ethernet-адаптер, контроллер беспроводной связи Wi-Fi, а также 3G-модем. Для подсоединения периферийных устройств предусмотрено два USB-порта.

LinkBook функционирует под управлением операционной системы Link OS на базе дистрибутива Ubuntu Linux со специально доработанным интерфейсом. На ПК предустанавливаются медиаплееры, пакет OpenOffice.org, социальные инструменты и пр.

<<-----Цитата----<<
()