Привет, Максим.
Реализация библиотеки BIO находится в директории excelsior/sys/lib/BIO.m
Строчка "IMPORT bio: BIO;" как раз и импортит её. А смущает тебя, что
процедура также называется, ну это нормально. bio.mount обращается к
процедуре:
PROCEDURE mount (path,dev,info: ARRAY OF CHAR;
VAR lab: ARRAY OF CHAR; ro: BOOLEAN);
которая в свою очередь вызывает fmount в которой нас интересуют две строки это
913 и 916. В первой происходит открытие необходимого нам узла (нода) а во
второй происходит вызов процедуры монтирования модуля osFiles.
Если посмотреть в osFiles.m (excelsior/sys/os), то процедура имеет простой
вид:
PROCEDURE mount (dir: FILE; VAL name: ARRAY OF CHAR; dev: FILE;
VAL fsname: ARRAY OF CHAR;
VAL info: ARRAY OF CHAR;
VAR lab: ARRAY OF CHAR; ro: BOOLEAN): INTEGER;
BEGIN
IF (dir=NIL) OR (dir^.fmagic#MAGIC) THEN RETURN err.bad_desc END;
RETURN dir^.fsid^.mount(dir,name,dev,fsname,info,lab,ro)
END mount;
Тут и происходит вызов драйвера по средствам вызова dir^.fsid^.mount()
Так как dir это FILE необходимо найти где определен FILE тип.
для понимания тебе потребуется просмотреть в модуль osFileSystem:
в osFileSystem.m:342 определен TYPE FILE для нативной файловой системы
Excelsior. В реализации модуля vmHostFS (excelsior/home/moskvin) ты также
можешь найти тип FILE. Абстрактный же тип имеет название _FILE и располагается
в osFileSystem.d:12
Теперь понятно в каком направлении двигаться?
Пиши, если какие-то конструкции не ясны.
--
Best regards, Nikolay Moskvin
Certified Java SE 6 Programmer
C/C++ Linux developer
On Sunday 24 April 2011 22:02:49 you wrote:
> Здравствуй, Николай!
>
> Приношу извинения за своё "исчезновение".�
>
> Не могу понять, что за bio импортируется в файл
> \src\excelsior\sys\util\major\mou.m, как он организован и где описан.�И в
> этом файле, функция mount использует bio.mount(dir,dev... �), что меня
> смущает.� Неужели bio.mount обращается к этой же функции? Тогда получается
> нечто странное..
>
> Прощу о помощи в этом вопросе!
|