Работа с файловой системой

Kernel architecture questions
  • Alien
    Да хоть бы и мне. :-)
    Мыло mario79[dog]bk[dot]ru
  • У меня несколько вопросов.

    Мне писать аналоги функций hd_phys_read,hd_phys_write
    из файла fs_phys.inc?

    Если да,то адрес передавать
    eax - 0..31
    ecx - 32..47 ?
    или
    eax - 0..31
    edx - 32..47 ?
  • Alien
    fs_phys.inc - че-то либо ты не прав, либо я тупой, но такого файла в ядре нет.
  • Сырцы c сайта kolibrios.org.ru
    файл k0581src.7z - kernel\fs\fs_phys.inc
  • Alien
    Хм... Там информация несколько старая. С тех пор как я не собираю дистрибутивы много времни прошло.
    Смотри http://kolibrios.org/?p=Download
    Лучше бери последние ядра.
    Низкоуровневый код работы с винтом в файле hd_drv.inc
  • svn.521 - добавлена работа с текущей папкой. Если путь в функции 70 не начинается со /, то он считается именем относительно текущей папки. Текущая папка устанавливается и считывается сисфункцией 30. При создании процесса/потока текущая папка наследуется от родителя. При загрузке потоку OS (запускающему vrr_m/launcher) ставится папка "/%sys%".
  • Не понимаю, что это за "/%sys%"? Это же только извращенцы так делают. Если проблема в том, что написав "%sys%" первый символ не будет "/" - так это не так, потому что сначала нужно разворачивать переменные окружения, и только потом сравнивать.
    Плюс, думаю нужно подумать, так ли хорош подход господ из MS касательно обозначения переменных в строке. Использование одного и того же символа только усложняет вычленение переменных. Лично мне (это типа убедительное ИМХО) больше нравится UNIX-like подход, когда переменная обозначается как "$sys/tem" или "${sys}tem". Такой подход разгружает наш моск.
  • diamond

    Лучше хранить текущий каталог в PL0 стеке вместе а контекстом FPU. Сейчас там свободно 7.5 Кб. Это будет экономичнее и быстрее.
  • Ленин
    Переменные окружения вообще ни при чём и их ещё нет. Просто файловая система делает замену каталога /%sys% на системный каталог. Можно обозвать не %sys%, а как угодно по-другому. Предложения?
  • diamond wrote:Можно обозвать не %sys%, а как угодно по-другому. Предложения?
    Непонятно зачем нужны заморочки с символами типа '%','&','$' и т.д. ведь фактически запись ведется от корня где '/rd/','/hd' и т.д. пусть будет просто '/sys/' или даже '/s/','/sf/'(system folder).
  • А если раздел общий и ты ОСь в /kos положил, то по /sys ты до системной папки точно не доберешься.

    На счет обозначений имен переменных - мне безразлично. Я без комплексов пользуюсь системой win и nix. Но слеш перед переменной лишний, так как %sys% должна описывать абсолютный адрес, а не относительный.

    p.s. Я, пожалуй, использовал бы $ и стремился к синтаксису nix shell.

    ..bw
  • bw

    Ты хотел сказать в '/hd0/1/kos'?
  • Нет. Если угодно C:\KOS\. Т.е. любой путь относительно файловой системы, а не представления о ней KOS. Т.е. ситуация, когда KOS разделяет пространство раздела (допустим FAT32) с другими системами, допустим FreeDOS, нормальна. И в такой ситуации мы не имеем право жестко на винте отдавать папку только KOS по абсолютному пути (/sys).
    Так что использование переменных окружения или др. средств для определения пути системной папки нужны. Я считаю лучше работать в направлении sh.

    ..bw
  • bw
    Я чтото не пойму. 'C:\KOS\' - представление WINDOWS о файловой системе и в kolibri он не используется так же как и путь '/kos/'. Вообще насколько я понимаю должна выскочить ошибка 11 - ошибка устройства, или я ошибаюсь?
  • Who is online

    Users browsing this forum: Bing [Bot] and 6 guests