Выяснилось еще немного информации по внутренностям RTEM.
По смещению 114 в RTEM Link Area находится ссылка на таблицу LUN.
Каждому LUN выделено два слова: слово состояния и имя устройства в Radix-50.
Теперь в слове состояния известны значения всех битов:
- 100000 - доступ только для чтения
- 040000 - LUN используется
- 020000 - LUN не участвует в поиске (без этого бита при назначении нового устройства, если такое уже было назначено - будет запользован его LUN; с этим битом будет назначен новый [не нашел где бы это использовалось кроме подпрограммы поиска LUN для устройства])
- 010000 - бит говорит что файл/устройство, назначенное LUN, физически недоступно для записи
- 000400 - временный файл (используется только в таблице файлов, для LUN не применяется)
- 000200 - RTEM устройство, не может быть отключено командой JOAT /D
Эти же биты используются для таблицы VS устройств (адрес по смещению 1045).
Биты 0-6 содержат номер задания плюс 1 или 0 для RTEM устройств.
В таблице 9 записей по 19 слов под описание файла для каждого VS (если VS0 - системное устройство, первые две записи используются под shared/private).
Выявлен косяк в JOAT.
При попытке отсоединить устройство RTEM (несистемное), сначала зачищается информация о файле, устройство переключается в режим RW, и только потом обнаруживается тот факт, что отсоединять его нельзя, о чем выдается ошибка, после чего JOAT падает (детально не ковырял почему так как все-равно поведение неправильное и требуется переделка - завтра посмотрю).




Ответить с цитированием