/* 00002150 */
fdTbl *clear_fds(fdTbl *tbl, int size)
{
if(tbl == NULL || size <= 0)
return NULL;
else
return (fdTbl *)memset(tbl, 0, size);
}
/* 000027C0 */
void InstallDevices(int flag)
{
kernel_redirect = flag;
*0x00000140 = FDS;
*0x00000144 = sizeof(FDS);
*0x00000150 = IODD;
*0x00000154 = iodd_num * sizeof(iodd);
clear_fds(FDS, sizeof(FDS));
TRACE(1);
KernelRedirect(flag);
TRACE(2);
*0x00007480 = 0;
*0x00008644 = 0;
_AddCDROMDevice();
_AddMemCardDevice();
}
/*
функция инсталлирует 3 устройства в таблицу IODD:
tty: - CONSOLE
cdrom: - CD-ROM
bu: - MEMORY CARD
IODD - это таблица драйверов устройств для доступа через файловую
систему (например с помщью функции fopen). всего может быть не более
10 устройств.
FDS - таблица открытых файлов (дескрипторы). окрыть можно не более
16 файлов, в независимости от устройства.
InstallDevices вызывается во время загрузки ядра, следовательно её не
следует использовать в приложениях.
насчет "перенаправления IO" ничего сказать не могу... надо до конца
разбирать KernelRedirect.
*/