HPC.ru lite - Все форумы
Форум: КПК и смартфоны на Linux: Zaurus, планшеты Nokia, прочее
Тема: Проблемы завруса
Страницы: 1 2 3 [4] 5
Executier [17.11.2004 22:53] :
ВадимП писал(а):
[quote:c910440479="Executier"]
#!/bin/bash
while 1>2
do
echo `cat /proc/apm` >> ~/batstat
sync
sleep 60
done
1. Больше всего меня заинтересовало, что за команда команда перенаправления "1>2"? 
Скорее всего, автор подразумевал нечто вроде "while true".
2. Очень понравилась форма "echo `cat /proc/apm` >>". Если кто мне сумеет объяснить, чем это лучше обычного "cat /proc/apm >>" буду очень благодарен.
3. sync тут тоже ни к селу, ни к городу (все равно пишется на jffs2). Правда, никому не мешает.
sync на тот случай если кпк повиснет при низком заряде батареи и кэш не будет сброшен на диск. Хотя, есть такой процесс bdflush... Кстати, что будет, если во время записи в файл вытащить батарейку? Мне кажется файл будет потерян, т.к. он на лету сжимается и во флешку попадает уже в сжатом виде. А если в этот момент прервать запись, то на флешке будет только часть архива.
По поводу всего остального-да я вообще программировать не умею, тем более bash scripting. Это все делалось в торопях и по принципу "лишь бы правильно работала". Ведь работает, а?
Кстати, Вадим, Вы на меня потратили больше времени чем требуется на доработку этого аплета или вправления ядерной таблицы. Осталось только подправить вышеуказанную мной функцию и делов-то. Я думаю, последний шаг не вызывает сомнений в свое простате?
PS Надеюсь, сырцы под gpl а то еще обвинят в незаконном изменении и распространении кода...
ВадимП [17.11.2004 23:00] :
Executier писал(а):
Кстати, Вадим, Вы на меня потратили больше времени чем требуется на доработку этого аплета или вправления ядерной таблицы. Осталось только подправить вышеуказанную мной функцию и делов-то. Я думаю, последний шаг не вызывает сомнений в свое простате?
Не знаю, как там по поводу простАты (где подразумевается ударение?
), но если бы всё было так просто, то это, вероятно, уже было бы сделано, не правда ли?
P.S. Драйвер jffs2 (в зависимости от версии) имеет определенные особенности выполнения системных вызовов sync()/fsync().
ВадимП [17.11.2004 23:29] :
Немного поясню по поводу "особенностей" (может кому будет интересно, хотя вряд ли): драйвер устанавливает таймер, который обнуляется при каждой записи в файловую систему. Если значение таймера достигает WBUF_FLUSH_TIMEOUT, то sync() вызывается автоматически...
А это значение по умолчанию установлено в 2 секунды. То есть, если записи в файловую системы не было хотя бы 2 секунды, то все буфера сбрасываются.
Поскольку в Вашем примере запись происходила в файл в домашней директории - значит необходимости в явном вызове sync не было...
ВадимП [18.11.2004 00:18] :
Кстати, похоже, что в предыдущем сообщении у меня всё неправильно
.
Я сейчас не обнаружил процесса для автоматического сброса буферов по таймеру и решил заново просмотреть тексты драйвера. Меня ввела в заблуждение вот эта его часть:
if (c->mtd->type == MTD_NANDFLASH) {
/* Initialise write buffer */
c->wbuf_pagesize = c->mtd->oobblock;
c->wbuf_ofs = 0xFFFFFFFF;
c->wbuf = kmalloc(c->wbuf_pagesize, GFP_KERNEL);
if (!c->wbuf)
return -ENOMEM;
/* Initialise process for timed wbuf flush */
INIT_WORK(&c->wbuf_task,(void*) jffs2_wbuf_process, (void *)c);
/* Initialise timer for timed wbuf flush */
init_timer(&c->wbuf_timer);
c->wbuf_timer.function = jffs2_wbuf_timeout;
c->wbuf_timer.data = (unsigned long) c;
}
однако исходников самого процесса я найти не смог. Скорее всего, он просто еще не написан. 
Executier [18.11.2004 00:46] :
Должна же существовать jffs2_wbuf_process, иначе бы она не скомпилилась, или я туплю?Ничего, что я про оффтопик?
.
Таки разобрало любопытство про arch/arm/mach-pxa/sharpsl_battery.c
Скачаю в ближайшее время..
Еще прикол.
Если тип устройства MTD_NANDFLASH, то делается следующее
/* Initialise process for timed wbuf flush */
INIT_WORK(&c->wbuf_task,(void*) jffs2_wbuf_process, (void *)c);
А если тип файловой системы не jffs2, то он все равно подрубит jffs2_wbuf_process, что, по-моему, неправильно....
Объясните ламеру, где я не прав.
Neopes [18.11.2004 01:29] :
2 Executier:
Под pdaXrom смотреть видео можно. мплеер без проблем играет видео с битрейтом 600-700. вот так вот.
ВадимП [18.11.2004 01:30] :
Если есть поддержка этой фс в ядре, то должен быть и процесс (как есть процесс для "сборки мусора"). Процесс порождается при монтировании фс. Сейчас там стоит "заглушка".
Executier [18.11.2004 01:53] :
Да я про странное имя у заглушки. Вот еслиб они доделали и имя бы кореллировалось с функцией, то были бы проблемы, нет? Просто странно одну заглушку прилеплять ко всем файловым системам. Понятное дело, сейчас это работает. Но вот если бы доделали? У обычных пользователей это бы не принесло проблем. А вот я хотел поставить ext3...
Я бы так не в жизни не сделал и каждой файловой системе прилепил бы по заглушке, разве я не прав?
ВадимП [18.11.2004 02:20] :
Executier писал(а):
Еще прикол.
Если тип устройства MTD_NANDFLASH, то делается следующее
/* Initialise process for timed wbuf flush */
INIT_WORK(&c->wbuf_task,(void*) jffs2_wbuf_process, (void *)c);
А если тип файловой системы не jffs2, то он все равно подрубит jffs2_wbuf_process, что, по-моему, неправильно....
До меня только сейчас (как до жирафа) дошло, что Вы имели в виду: это же была выдержка из подпрограммы инициализации в драйвере jffs2. Она вызывается только при монтировании раздела с этой файловой системой. Никакого отношения к разделам других фс она не имеет.
maslovsky [18.11.2004 15:09] :
ВадимП писал(а):
Немного поясню по поводу "особенностей" (может кому будет интересно, хотя вряд ли): драйвер устанавливает таймер, который обнуляется при каждой записи в файловую систему. Если значение таймера достигает WBUF_FLUSH_TIMEOUT, то sync() вызывается автоматически...
А это значение по умолчанию установлено в 2 секунды. То есть, если записи в файловую системы не было хотя бы 2 секунды, то все буфера сбрасываются.
Поскольку в Вашем примере запись происходила в файл в домашней директории - значит необходимости в явном вызове sync не было...
Скажу больше - Шарп перстраховался не на 100% и даже не на 200% - в системе запускается специальный процесс под названием shsync, который каждые несколько секудн сбрасывает буфера.
Более того, в шарповском ядре еще и принудительно было выключен весь асинхронный ввод/вывод.
В общем, извиняюсь за возможную пошлось, но шарповцы натянули шутки 3 или 5 презервативов, так на всякий случай, чтоюбы у пльзователя вдруг данные не пропали и на них не стали наезжать 
[Тема закрыта модератором]
[< Назад] [Вперед >]