LINUX.ORG.RU

Сообщения aido

 

как посмотреть конфиг ядра?

Всем привет!

Положим, у нас есть ядро (uImage), скомпиленное под определенный процессор. Как узнать, с какими флагами оно было скомпилено без предварительной загрузки?

В смысле, я знаю пока только 2 пути посмотреть конфиг ядра:

cat .config в директории с отконфигурированным ядром.

zcat /proc/config.gz из загруженной системы.

 

aido
()

Нубский вопрос по поднятию вайфая на убунте

Всем привет!

В общем, после установки teamviewer, tor, lighttpd слетел вайфай. Раньше вайфай у меня подымался при помощи wifi-hostapd-ap. Небольшое копание в проблеме показало, что «DNSMASQ: Адрес уже используется» и как-то раньше у меня получалось найти приложение, которое его тоже использует. Им оказался unbound. Если его грохнуть, то слетает весь инет. Также раньше (после всего предыдущего геморроя) как-то получалось поднять вайфай, но инет на него не раздавался.

Короче, вопрос - есть ли большая красная кнопка «раздать вайфай»? Или как ее по-быстрому сделать? Просто счас реально нет времени копаться в проблемах wifi-hostapd-ap, а вафля нужна критично.

 , ,

aido
()

Чтение регистров под линуксом

Добрый день!

А как в линуксе читать регистры? в смысле - каков аналог для u-boot-овского md 0xdeadbeaf?

 ,

aido
()

Xterm bash readline глюки на длинных строках

Добрый день!

Вот такой баг обнаружился при работе с длинным именем директории.

$ bash --version
GNU bash, версия 4.3.30(1)-release (x86_64-pc-linux-gnu)

OS - Lubuntu 15.04.

В новой версии поправлено/сталкивался кто с таким или сразу разрабам писать? Боюсь убунтовских апдейтов, поэтому лучше здесь сначала спрошу ;)

Наблюдается в lxterminal, xterm. В чистой консоли и guake всё вроде ок.

 , , ,

aido
()

Алгоритм «укладывания» векторов в n-мерное пространство

Всем привет!

Положим, у нас есть симметричная матрица размера NxN скалярных произведений единичных векторов друг на друга A_ij=(a_i, a_j). Хочется определить сколько из всех этих векторов линейно независимы и уложить их в пространство наименьшей возможной размерности. В принципе, алгоритм этот довольно просто составляется, но хотелось бы знать, есть ли уже реализации его в какой-нибудь из библиотек(С/С++)?

Вроде бы алгоритм такой:

1) берем любой вектор, говорим, что первая ось направлена вдоль него. соответственно, его координаты (1,0,...,0). У всех остальных векторов сразу известны проекции на эту ось A_1j.

2) проекция второго вектора на вторую ось: sqrt(1-A_12^2)

3) проекции остальных векторов на соответствующие оси получаются из решения простой линейной системы уравнений.

На выходе получаем квадратную нижнетреугольную матрицу координат векторов (с точностью до поворотов СК).

 ,

aido
()

valid number of ports 2 и ядро зависло.

Добрый день!

пересобрал devicetree для zynq из стандартного TRD, но с некоторыми изменениями железа. В итоге ядро виснет на следующем моменте:

xilinx-video amba_pl:video_cap: device registered
xilinx-video amba_pl:video_m2m: device registered
xilinx-hls 400d0000.hls: device xlnx,v-hls-sobel found
**** valid number of ports 2 ****

Что значит valid number of ports 2?

Имеет ли значение, в каком порядке определены устройства в devicetree?

Вот device tree

 , ,

aido
()

Как по имени устройства узнать, каким драйвером оно было создано?

Доброго времени суток!

Собственно, сабж.

В /dev есть два устройства с именами media0, media1. Хочется понять, что это за устройства и кем были созданы.

Суть проблемы в том, что есть две конфигурации платы (device tree+bitstream). В одной конфигурации эти устройства создаются и все ок, а в другой - нет. Вот и хочется понять, из-за чего лыжи не едут.

Конфиги ядра одинаковые.

 , ,

aido
()

WTF Arago/Yocto? Как оно вообще работает?

Доброго времени суток!

После полного прочтения основной документации на Yocto, решил совершить вторую попытку освоить вот это. А именно - собрать tisdk-server-rootfs-image. Оказалось, что на данном этапе я зря это читал.

Пока что обнаруживаются ошибки в самих Makefile-ах и рецептах навроде:

1)

makefile_armv7:29: *** missing separator (did you mean TAB instead of 8 spaces?). Stop.

echo DEVICE=$(DEVICE)
.

2) ошибки в clocl, где в одной директории лежит Makefile и CMakeLists.txt, причем cmake . генерирует совершенно другой makefile. И оба не компилируются.

Отрывок из оригинального файла приведен ниже (make не может найти x86/AllocasToEntry.o и рушится)

UTILDIR         = ../src/core
WGADIR          = ../src/core/dsp
POCLDIR         = ../src/llvmopencl
OBJS        = AllocasToEntry.o BarrierBlock.o BarrierTailReplication.o \
              BreakConstantGEPs.o CanonicalizeBarriers.o DebugHelpers.o \
              Flatten.o GenerateHeader.o ImplicitLoopBarriers.o \
              ImplicitConditionalBarriers.o IsolateRegions.o \
              Kernel.o LLVMUtils.o LoopBarriers.o ParallelRegion.o \
              PHIsToAllocas.o TargetAddressSpaces.o \
              VariableUniformityAnalysis.o WIVectorize.o Workgroup.o \
              WorkItemAliasAnalysis.o WorkitemHandler.o \
              WorkitemHandlerChooser.o WorkitemLoops.o WorkitemReplication.o\
              SimplifyShuffleBIFCall.o \
              main.o compiler.o wga.o program.o file_manip.o options.o \
              util.o

OBJS := $(patsubst %.o, $(TARGET)/%.o, $(OBJS))

CXXFLAGS := $(LLVM_CXXFLAGS) -I$(UTILDIR) -I$(WGADIR) -I$(POCLDIR) \
            -DLLVM_3_3 $(HOST_USR_INCLUDE) -O3 -fexceptions -std=c++0x \
            -D_PRODUCT_VERSION=$(_PRODUCT_VERSION) $(CXXFLAGS) 

LIBS      = $(CLANG_LIBS)  $(LLVM_LIBS)
LDFLAGS  := $(LLVM_LDFLAGS) $(LDFLAGS)

.PHONY: .FORCE 

$(TARGET): $(TARGET)/.touch $(EXE) 

$(EXE): $(OBJS)
	$(CXX) $^ $(LIBS) $(LDFLAGS) -o $(TARGET)/$@

$(TARGET)/%.o: %.cpp | $(TARGET)/
	$(CXX) $(CXXFLAGS) -c $< -o $@

$(TARGET)/%.o: $(UTILDIR)/%.cpp | $(TARGET)/
	$(CXX) $(CXXFLAGS) -c $< -o $@

$(TARGET)/%.o: $(WGADIR)/%.cpp | $(TARGET)/
	$(CXX) $(CXXFLAGS) -c $< -o $@

$(TARGET)/%.o: $(POCLDIR)/%.cpp | $(TARGET)/
	$(CXX) $(CXXFLAGS) -c $< -o $@

$(TARGET)/%.o: $(POCLDIR)/%.cc | $(TARGET)/
	$(CXX) $(CXXFLAGS) -c $<  -o $@

$(TARGET)/.touch: 
	mkdir -p $(TARGET); touch $(TARGET)/.touch

3) На какие-то пакеты были сначала патчи, затем эти патчи не пригодились, так как эти сами пакеты были исправлены и сейчас патчи 2013 года ломают пакеты 2015 года. Замечу, что мануалы по ссылкам выше самые свежие и я совершенно не понимаю, почему там написана такая лажа. Например, «скачайте mcsdk», а ссылка уже невалидна, значит, придется пробовать новую версию mcsdk, значит... Да черт его знает, какие проблемы с пакетами это еще может значить.

Извиняюсь, накипело.

В общем вопрос - как собрать tisdk-server-rootfs-image при таких косяках в документации и репозиториях?

Кастую I-Love-Microsoft

 

aido
()

std::map::find не может найти элемент

Доброго времени суток!

Тащемта код:

for (auto it=root_funcs.begin(); it!=root_funcs.end(); ++it)
    {
        //std::cout << it->first << '\n';
        if(!strcmp(it->first,f->name.c_str()))
        {
            std::cout<<"Function must be found!"<<std::endl;
        }
    }
    auto it=root_funcs.find(f->name.c_str());
    if(it!=root_funcs.end())
    {
        std::cout<<it->first<<std::endl;
    }
    else
    {
        std::cout<<"Function is not found!"<<std::endl;
    }

А вот его вывод:

Function must be found!
Function is not found!

ЧЯДНТ??

 ,

aido
()

bison + pointers = UB ?

Доброго времени суток!

В общем, решил я в грамматике своего интерпретатора почистить память, ибо очень не хорошо на каждом шаге ее выделять и не чистить, пусть даже при работе со строчками.

Файлы проекта вот тут.

Проблема такова:

если в syntax.ypp раскомментировать 234 строку и в 185 добавить delete tmp;, то интерпретатор начинает сыпаться, например, на таком коде (для отладки грамматики пока просто интерпретатор собирает команды в списки и потом выводит их):

> ty && kl
ty && kl
> hj && io ||
| jk &&
| kll
io && io || jk && kll

Последняя строчка должна быть такой: hj && io || jk && kll

Или вот так вот сыпется (добавлено отладочное сообщение о вызове деструктора списка):

> ty && io || kl
ty && io || kl
destructor 0 ty
destructor 1 io
destructor 2 kl
destructor 1 io
destructor 0 ty
> ty && hj &&
destructor 1 hj
| jk
Ошибка сегментирования (сделан дамп памяти)

То есть почему-то при трех аргументах в первом конвейере, вызывается деструктор одного из элементов во втором конвейере.

Второй день в глаза долблюсь - не вижу причин такой странной работы new/delete в bison. Как мне корректно почистить память?

 , , ,

aido
()

Стрелочки в bison

Доброго времени суток!

Подумал, что неплохо было бы подключить стрелочки с клавы (которые «вправо», «влево», «вверх», «вниз») в синтаксическом анализаторе, но хз, какие у них коды и как правильно двигать курсор в терминале. С тем, как двигать курсор я думаю смогу разобраться, но вот как ловить нажатия этих клавиш - совсем хз. Кто подскажет, какие у них коды или даст кусок кода с описанным функционалом?

 

aido
()

мобильная версия сайта

А давайте сделаем мобильное приложение, чтобы следить за этим форумом? как по мне - будет дико удобно отслеживать ответы в темах, особенно, когда основная машина не работает, а сидеть в инете не с чего или слишком долго через обычный браузер смартфона страница грузится.

 

aido
()

С++, указатели на функции

Доброго времени суток!

Как известно, в С++ функции можно перегружать и даже делать на них указатели. Но как передавать указатель на функцию неопределенного типа (не на класс и не на любой другой объект, только на функцию, число и типы параметров которой заранее неизвестны) в другую функцию? Думаю насчет assert-ов или variable templates. Решение пока не придумал, но мб кто-то уже сталкивался и знает решение?

Смежный вопрос - как возвращать указатель на подобную функцию?

Имеется ввиду нечто вот такое, но как видно, вышеописанные проблемы в этом коде не решены:

/*нет проверки на то, что fp действительно является функцией!*/
template<class function_pointer> 
void register_function( std::string name,
			type* prototype,//указатель на массив типов параметров
			type  ret,//тип возвращаемого значения
			function_pointer fp//указатель на функцию
);

/*Указатель-то вернется, но совсем не ясно, как им воспользоваться.
К тому же, я хз, как сделать передачу аргументов, которые лежат в двусвязном списке в обычную функцию навроде int foo(int a, int b, double c). список аргументов надо как-то динамически создавать (задача, обратная vararg)...*/
void* find_func(const std::string & name);

 ,

aido
()

Конфликт сдвига/вывода

Доброго времени суток!

Может ли кто-нибудь объяснить, почему bison дает на этом файле конфликт сдвига/вывода? При комментировании 71 или 82 строчки конфликт исчезает. Но даже при наличии этого конфликта прога работает нормально. Не обращайте внимания на дурь при выводе - после того, как будет написана грамматика, эту часть можно будет отладить позднее при помощи деревьев. Или же этот конфликт не будет в итоге давать syntax error, но в правильном порядке составить аргументы не всегда получится? То есть, какова должна быть ситуация, чтобы этот конфликт проявился?

Прога должна уметь обрабатывать выражения вида:

abc
abc()
abc(def)
abc(45, 89.09, asd)
abc(45, 89.09, asd())
abc(45, 89.09, asd(hj))
abc(45, 89.09, asd(89).ui)
abc(45, 89.09, asd(89).ui).io
abc(45, 89.09, asd(89).ui).io(89)
...

Вот еще лексер, для полноты картины.

 

aido
()

Прослушивание собственных портов

Доброго времени суток!

Встала задача - прослушать, какие запросы определенная прога кидает на сервер по определенному порту. Я подозреваю, что придется локально подымать прокси и ставить на него сниффер, но мб уже есть готовые решения для такого?

 

aido
()

парсинг функций

Доброго времени суток!

Встала задача уметь парсить выражения типа func(arg), func(arg1, arg2,arg3).

Я подумал, что для этого вполне подойдут двусвязные списки: аргументы парсим по одному, в каждый предыдущий - ссылка на следующий и на предыдущий; когда надо вывести весь список, скатываемся до первого элемента и идем в прямом порядке.

Вот что я наваял: бизон, flex.

Там имеется ряд косяков, которые я не знаю, как поправить:

1) двусвязный список не работает. хз, почему бизон выражения вида $$->prev_arg=$1; $1->next_arg=$$; трактует неправильно (или я че-то не понял...). А именно - вставляет указатель на сам элемент, а не на предыдущий или следующий.

2) обрабатывает почти корректно только первую введенную строчку. на остальных начинает сыпаться. Почти корректно - в смысле: если подается один аргумент в функцию в первый раз, то он выводится, если второй раз, то говорит, что «ошибка синтаксиса».

3) выражения вида (arg1, arg2) вроде понимает, а (arg1,arg2) не понимает. Дело в пробеле после запятой. Это вроде просто, но я пока не проверял из-за более серьезных ошибок выше.

4) всюду пишут, что использовать strdup не рекомендуется из-за утечек памяти. Отсюда вопрос - лучше сначала выделить память (байт так 128) и туда все скидывать или же делать динамически? Если динамически, то в каком месте чистить память?

 ,

aido
()

Yocto. Bitbake. TL; DR

Всем привет.

Вкратце может ли мне кто-нибудь поведать, как с yocto/bitbake работать? Положим, я хочу подправить убут под свои нужды.

1) В какой директории мне искать сырцы, которые bitbake будет компилировать?

2) Как bitbake сказать не тащить все снова из инета, а скомпилировать то, что уже есть на компе в определенной директории?

3) Где оно появится?

Как мне говорили в институте «На простой вопрос должен быть простой ответ», а если верить манам, то ответ ни разу не простой...

 , ,

aido
()

Ubuntu. как обычно, битые пакеты

Здравствуйте!

Сейчас при попытке установки многих пакетов лезет следующее:

$ sudo apt-get install  libc6-dev:i386
Чтение списков пакетов… Готово
Построение дерева зависимостей       
Чтение информации о состоянии… Готово
Некоторые пакеты невозможно установить. Возможно, вы просите невозможного,
или же используете нестабильную версию дистрибутива, где запрошенные вами
пакеты ещё не созданы или были удалены из Incoming.
Следующая информация, возможно, поможет вам:

Пакеты, имеющие неудовлетворённые зависимости:
 libc6-dev:i386 : Зависит: linux-libc-dev:i386 но он не будет установлен
E: Невозможно исправить ошибки, у вас отложены (held) битые пакеты.

sudo apt-get -f install ничего не дает, обновление репов вообще висит на этом моменте:

$ sudo apt-get update
В кэше http://ru.archive.ubuntu.com vivid InRelease
В кэше http://llvm.org llvm-toolchain-trusty InRelease                            
В кэше http://llvm.org llvm-toolchain-trusty-3.7 InRelease                                                             
В кэше http://llvm.org llvm-toolchain-trusty/main amd64 Packages                             
В кэше http://llvm.org llvm-toolchain-trusty/main i386 Packages                                  
В кэше http://llvm.org llvm-toolchain-trusty-3.7/main amd64 Packages                                          
В кэше http://llvm.org llvm-toolchain-trusty-3.7/main i386 Packages                                           
Игн http://llvm.org llvm-toolchain-trusty/main Translation-ru_RU                                              
Игн http://llvm.org llvm-toolchain-trusty/main Translation-ru                       
Игн http://llvm.org llvm-toolchain-trusty/main Translation-en
Игн http://llvm.org llvm-toolchain-trusty-3.7/main Translation-ru_RU                                                                                                                                                                        
Игн http://llvm.org llvm-toolchain-trusty-3.7/main Translation-ru                                                                                                                                                                           
Игн http://llvm.org llvm-toolchain-trusty-3.7/main Translation-en                                                                                                                                                                           
100% [Ожидание заголовков]

Есть идеи, как поправить?

 ,

aido
()

Skype+Tor

Доброго времени суток!

А есть ли некий заменитель скайпа в торе?

 ,

aido
()

Вывод N-го слова из файла

Доброго времени суток!

А как вывести слово под номером N из файла? sed-ом, например.

 ,

aido
()

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