Board.KolibriOS.org

Официальный форум KolibriOS
Текущее время: Вт авг 22, 2017 12:34 am

Часовой пояс: UTC+03:00




Начать новую тему  Ответить на тему  [ 69 сообщений ]  На страницу Пред. 1 2 3 4 5 След.
Автор Сообщение
СообщениеДобавлено: Вт июл 05, 2011 6:49 pm 
Код CleverMouse копирует, в область куда помещается передаваемый параметр, дефолтный путь, что есть правильное решение. Я оставляю за бортом то что есть еще более хитрое решение, но поскольку сам им не пользовался, то не мне судить.
Спойлер: Показать
Код:
START:            ; start of execution
   mov   edi, filename
   cmp   byte [edi], 0
   jnz   param
   mov   esi, default_filename
@@:
   lodsb
   stosb
   test   al, al
   jnz   @b
param:


Код Sorcerer делает особую уличную магию (без обид).
Код:
mov ax, filename
mov [I_PARAM], al

Первый указатель 16 битный, тогда как у нас 32 битная адресация, дальше еще не понятней сохраняем 8 битную часть и все это идет как указатель. В общем мудрено и непонятно чего ты пытался получить.


Вернуться к началу
   
СообщениеДобавлено: Вт июл 05, 2011 7:03 pm 
Не в сети

Зарегистрирован: Пн сен 24, 2007 11:11 am
Сообщения: 2814
:D ужас какой! Сам испугался, когда увидел свой код сейчас.


Вернуться к началу
СообщениеДобавлено: Вт июл 05, 2011 7:05 pm 
Ночью надо спать. :mrgreen:


Вернуться к началу
   
СообщениеДобавлено: Чт июл 07, 2011 2:23 pm 
Не в сети
Public Relations
Аватара пользователя

Зарегистрирован: Пн июн 07, 2010 12:01 pm
Сообщения: 1879
eBox-3350MX: Скачал http://builds.kolibrios.org/Vortex86MX- ... 997-img.7z (который уже с новым BOARD в автозагрузке). После загрузки выводится пустой BOARD (без лога вообще) и использование процессора 100%. Если прибить этот BOARD через "Task Manager", то всё становится нормально, загрузка опускается до 0, и если запустить BOARD ещё раз, то лог выводится исправно.

В AUTORUN.DAT вроде всё написано правильно, ничего не менял, и до изменения всё работало:
Код:
/RD/1/DEVELOP/BOARD   <NO>        1    # Load DEBUG board


Вернуться к началу
СообщениеДобавлено: Чт июл 07, 2011 2:28 pm 
Проблема в том что при загрузке передается неправильный параметр (не являющийся путем к файлу) и код этого не учитывает. Нужна проверка на обратный слеш "/" параметра переданного при загрузке.

З.Ы. Если Вероника сама не поправит вечером сделаю.


Вернуться к началу
   
СообщениеДобавлено: Чт июл 07, 2011 2:33 pm 
Не в сети
Public Relations
Аватара пользователя

Зарегистрирован: Пн июн 07, 2010 12:01 pm
Сообщения: 1879
Mario писал(а):
Проблема в том что при загрузке передается неправильный параметр (не являющийся путем к файлу) и код этого не учитывает. Нужна проверка на обратный слеш "/" параметра переданного при загрузке.
Ну ты же сам говорил, что <NO> нужен как "Place Holder", если я не хочу передавать никакой параметр, верно? Потому что второй параметр - это время задержки, а он обязательно должен быть вторым.


Вернуться к началу
СообщениеДобавлено: Чт июл 07, 2011 2:51 pm 
Нет, тут дело не в этом, а как раз в том что передается параметр "<NO>". Другие приложения проверяют переданную строку на валидность, хотя-бы проверкой обратного слеша "/". BOARD же тупо копирует если есть хоть какие-то данные отличные от 0. Поскольку файл с путем "<NO>" создать невозможно, то происходит хрень.


Вернуться к началу
   
СообщениеДобавлено: Чт июл 07, 2011 3:27 pm 
Не в сети
Public Relations
Аватара пользователя

Зарегистрирован: Пн июн 07, 2010 12:01 pm
Сообщения: 1879
Mario писал(а):
Нет, тут дело не в этом, а как раз в том что передается параметр "<NO>". Другие приложения проверяют переданную строку на валидность, хотя-бы проверкой обратного слеша "/". BOARD же тупо копирует если есть хоть какие-то данные отличные от 0. Поскольку файл с путем "<NO>" создать невозможно, то происходит хрень.
Тогда я неверно понял другое твоё сообщение на эту тему:
Mario писал(а):
Нет, каждый передаваемый параметр определяется исключительно кодом содержащимся в самом запускаемом приложении. Параметр <NO> определен как компромиссное решение - ни одна программа такой параметр теоретически не обрабатывает в качестве допустимого входного параметра.
А где идёт обработка файла AUTORUN.DAT? В ядре? А там нельзя поставить проверку, что если в AUTORUN.DAT для приложения указан параметр <NO>, то приложению не передаётся никакой параметр?


Вернуться к началу
СообщениеДобавлено: Чт июл 07, 2011 4:11 pm 
Не в сети
Kernel Developer
Аватара пользователя

Зарегистрирован: Чт сен 03, 2009 1:52 pm
Сообщения: 1596
Имя файла вполне может и не начинаться со слеша. Я поправила код, чтобы board не входил в бесконечный цикл при ошибке создания файла. Я считаю, что вопрос с передачей параметров имеет смысл решать на уровне launcher, обрабатывающего autorun.dat, причём заодно сделать задание параметров с пробелами, обрабатывая - дополнительно к текущему варианту - кавычки как начало/конец параметра. Тогда пустой параметр можно задать, написав "". Если не будет возражений, я несколько позже добавлю соответствующий код в launcher.

_________________
Сделаем мир лучше!


Последний раз редактировалось CleverMouse Чт июл 07, 2011 4:15 pm, всего редактировалось 1 раз.

Вернуться к началу
СообщениеДобавлено: Чт июл 07, 2011 4:12 pm 
yogev_ezra
Цитата:
А где идёт обработка файла AUTORUN.DAT? В ядре?

Обработкой AUTORUN.DAT занимается приложение LAUNCHER.
Цитата:
А там нельзя поставить проверку, что если в AUTORUN.DAT для приложения указан параметр <NO>, то приложению не передаётся никакой параметр?

Вероятно можно, но никто не задавался такой целью раньше.

UPD. Немного опоздал с ответом.


Вернуться к началу
   
СообщениеДобавлено: Чт июл 07, 2011 4:15 pm 
CleverMouse
ИМХОется мне что возражений не будет. :)
Полезная вещь.

З.Ы. Когда ты только все успеваешь. У меня работа забирает все силы и мозг. :(


Вернуться к началу
   
СообщениеДобавлено: Чт июл 07, 2011 5:33 pm 
Не в сети
Kernel Developer
Аватара пользователя

Зарегистрирован: Чт сен 03, 2009 1:52 pm
Сообщения: 1596
Я закоммитила обещанное изменение в launcher.

_________________
Сделаем мир лучше!


Вернуться к началу
СообщениеДобавлено: Вс июл 17, 2011 1:55 pm 
Не в сети
Public Relations
Аватара пользователя

Зарегистрирован: Пн июн 07, 2010 12:01 pm
Сообщения: 1879
Если board добавлен в автозагрузку с параметром записи лога на жёсткий диск (/hd0/1), то после загрузки Колибри проходит несколько секунд, прежде чем board начинает выводить сообщения на экран и в файл. Я поставил в автозагрузку только board и ac97snd (ну чтоб было хоть что-то выводить в лог), и задержка на несколько секунд всё равно происходила. Если в параметре ничего не указать (то есть, использовать рамдиск по умолчанию), то запись в лог начинается мгновенно. Вероятно, что-то в ядре блокирует запись на жёсткий диск при загрузке Колибри.


Вернуться к началу
СообщениеДобавлено: Вт авг 23, 2011 3:17 pm 
Не в сети
Kernel Developer
Аватара пользователя

Зарегистрирован: Чт сен 03, 2009 1:52 pm
Сообщения: 1596
r2101+r2103 фиксят проблему?

_________________
Сделаем мир лучше!


Вернуться к началу
СообщениеДобавлено: Вт авг 23, 2011 4:18 pm 
В моем случае задержка исчезла (я проделал так как написал yogev_ezra), но я в основном наблюдал задержку при запуске USB ядра.


Вернуться к началу
   
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 69 сообщений ]  На страницу Пред. 1 2 3 4 5 След.

Часовой пояс: UTC+03:00


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Limited
Русская поддержка phpBB